Erik Demaine (MIT) の docdist8.py の Ruby バージョンを作成しました。これは github でdocdist-v3.rbとして入手できます。私は2つの奇妙な状況に直面しました:
1) 関数 inner_product には、ブロック コメントがあります。
Inner product between two vectors, where vectors
are repeated as dictionaries of (word, freq) pairs.
Example : inner_product({"and":3, "of":2, "the":5},
{"and":4, "in":1, "of":1, "this":2}) = 14.0
これを =begin と =end で囲むと問題ありませんが、3 つの二重引用符 """ で囲むと、次のようなエラーが発生します。
./docdist-v3.rb:71: syntax error, unexpected tIDENTIFIER, expecting kEND
Example : inner_product({"and":3, "of":2, "the":5},
^
./docdist-v3.rb:71: syntax error, unexpected tIDENTIFIER, expecting kEND
Example : inner_product({"and":3, "of":2, "the":5},
^
./docdist-v3.rb:72: syntax error, unexpected kIN, expecting kEND
... {"and":4, "in":1, "of":1, "this":2}) = 14.0
^
./docdist-v3.rb:72: syntax error, unexpected tIDENTIFIER, expecting kEND
... {"and":4, "in":1, "of":1, "this":2}) = 14.0
^
./docdist-v3.rb:72: syntax error, unexpected tIDENTIFIER, expecting kEND
..."and":4, "in":1, "of":1, "this":2}) = 14.0
^
=begin および =end とは異なる """ のルール/許可されたエントリはありますか?
2) time コマンドでプログラムを実行すると、約 0.3 秒で実行されます。ただし、require 'profile' を指定すると、それに比べて所要時間が非常に長くなり、30 秒になります。したがって、正しい出力がまったく得られません。これはオリジナルの Python バージョンには当てはまらないようで、プロファイリングにわずかな余分な時間がかかるだけです。Ruby で同じプロファイルを実行するにはどうすればよいですか?
注: Ruby プログラムを実行するために使用した 2 つのファイルは、t2.bobsey.txt と t3.lewis.txt です。それらはhttp://ocw.mit.edu/ans7870/6/6.006/s08/lecturenotes/dd_data.htmで入手できます。