Ruby

joinのデフォルトセパレータ

文字列の配列を結合するさい、Pythonでは "".join(['1', '2', '3']) # => '123' という書き方をする。 区切り文字を入れたい場合は、以下のようにすればよい。 "_".join(['1', '2', '3']) # => '1_2_3' さて、RubyにおいてはArrayがjoinを持っていて、それぞ…

Project Euler #20

Rubyだと一瞬なんだけどCoffeeScriptで書く場合はどうしようか… def fact(n) (1..n).to_a.inject(1){|r, i| r * i} end fact(100).to_s.each_char.map{|i| i.to_i}.inject(:+)

Rubyライブラリの書き方を調べる(what_methods.rbを読む)

what_methodsとは what_methodsはメソッドの名前を忘れたとき調べるのに便利なライブラリ。 gem i what_methods でインストールし、irbを立ち上げて次のように打ってみよう。 irb(main):001:0> require "what_methods" => true irb(main):002:0> [1,2,3].wha…

マージソート覚書(アルゴリズム・イントロダクション)

分割統治法 ソートすべきn要素の配列をn/2の部分列に分割する。 2つの部分列を再帰的にソートする。 ソートされた部分文字列をマージする。 実装(Ruby) 擬似コードと同じように実装しようとしたら配列の境界エラーでコケまくり。 Infinity = 2**30 def merg…

挿入ソートの解析(アルゴリズム・イントロダクション)

「アルゴリズム・イントロダクション 改訂2版」を読んでいる。 2章の挿入ソートを実装しつつ、ループ不変式や実行時間といったアルゴリズムの正当性に関する考え方がどのようなものかを検討する。参考:アルゴリズムイントロダクション 第2章の勉強会資料 挿…