アーカイブ

‘code’ タグのついている投稿

Nice Round Number

2009 年 5 月 18 日 コメントはありません

切りのいい数字,ってなんだろう.
そう言えば主観に依った数字だよな.
と言うことで,アンケートをとってみた.
「19,800を切り良くしたらいくら?」「…20,000?」
「1,980は?」「2,000」
「1,940だったら?」「2,000かな…1,900でも良いかな…」
「198,400だと?」「200,000」
(以下略)

どうやら,上から3桁目を四捨五入した数字は切りのいい数字らしい.
Rubyで書くとこんな感じでしょうか?(自然数限定)

def nice_round target
  digit = 10 ** (2 - target.to_s.length)
  return (target * digit - 0.5).ceil.quo(digit)
end

# for Test
20.times do
  target = rand(100000)
  printf("%d\t%d\n", target, nice_round(target))
end

結果はこんな感じ.

>ruby nice_round.rb
84753	85000
78860	79000
5446	5400
14912	15000
43271	43000
22326	22000
86664	87000
49225	49000
70498	70000
67840	68000
34791	35000
24946	25000
3759	3800
1876	1900
60383	60000
95901	96000
44147	44000
29798	30000
87766	88000
88708	89000
>Exit code: 0

それにしてもRailsだけやってるとRubyの構文は全然覚えない.
もっとSmartに書けると思うんだよな…

カテゴリー: Uncategorized タグ: , ,

Python 3.0でFizzBuzz

2009 年 3 月 17 日 コメントはありません

私が「Fizz-Buzz問題」と呼んでいる問題のクラスを考え出した。これはイギリスの学校の子供たちがよくやっている遊び(というかやらされている遊び)にちなんで名付けた。Fizz-Buzz問題の例はこんな感じだ。 1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。 ちゃんとしたプログラマであれば、これを実行するプログラムを2分とかからずに紙に書き出せるはずだ。

via: どうしてプログラマに・・・プログラムが書けないのか?

言語習得の第一歩がHelloWorldなら二歩目はFizzBuzzでしょう.
今更感があっても敢えてやると新しい発見があったりする.

ちなみに,PythonはFizzBuzzを56byteで書くことが出来る言語で,
RubyやJavascript,PHPなどと同列らしい.
最小はGolfScriptの37byte?
# いや,ジョーク言語含めればもっと短く書ける言語は幾らでもありそう…
続きを読む…

カテゴリー: Uncategorized タグ: , , , ,

Google Syntax Highlighter for WordPress

2008 年 12 月 31 日 コメントはありません

最近は検索のみならず,カレンダーから路線探索からライブラリまで何でもかんでもGoogleにお世話になっていますが…
それが良い事か悪い事か,判断する間もなくMajorityに流されている人間がここにも一人.
毒を喰らわば皿までの精神でWordPress向けCode BeautifierもGoogleの世話になるとする.

使い方も簡単で,preタグのnameにcode,classに整形する言語を書けばOK.
対応言語はC++ (cpp, c, c++),C# (c#, c-sharp, csharp),CSS (css),Delphi (delphi, pascal),Java (java),Java Script (js, jscript, javascript),PHP (php),Python (py, python),Ruby (rb, ruby, rails, ror),Sql (sql),VB (vb, vb.net),XML/HTML (xml, html, xhtml, xslt)で,普段使う言語は大体カバーされてるかな.

試しにPythonコードを載せてみる.

def factorial(x):
    if x == 0:
        return 1
    else:
        return x * factorial(x - 1)

ちなみに,Python3000にも対応してるのかね?