質問の場合の数の問題を解くPythonプログラムをRubyに翻訳してみました。(^_^;
ちなみに、このプログラムを例にすると、Rubyのいいとこは、Pythonでは、forの終値を「6+1」にしなければならないのですが、Rubyでは、forの終値を「6」とダイレクトに指定できるとこなどで、いやなとこは、「.abs」のとこ。この他、たとえば、「gcd」なども、Rubyのように、「n1.gcd(n2)」より、Pythonのように「gcd(n1,n2)」の方が良いです。なぜならば、直感的に、n1とn2には同格な感じがするので。(^_^;
一方、Pythonは、しまりがない感じがします。Rubyのように、「end」などで区切りを明示した方がいい感じです。個人的に「#end」を付ければ済むことですが。(^_^;
Pythonは、BASIC的で関数的な感じがして、Rubyは、C++・Pascal的でオブジェクト指向的な感じがします。やはり、RubyもPythonも一長一短で、好みが分かれるところでしょう。(^_^;
●Outcomes.rb
# Outcomes.rb puts "Q.1)" tm=Time.now # Timer Start cnt=0 p=["A","B","C","D"] p.permutation(4) do |a,b,c,d| s=a+b+c+d # s="#{a}#{b}#{c}#{d}" if (s.index("A")-s.index("B")).abs==1 then cnt+=1 print "[%2d] : %s\n"%[cnt,s] end end tm=Time.now-tm # Timer Stop print "Runtime : %.3f [sec]\n"%tm puts "Q.2)" tm=Time.now # Timer Start cnt=0 for a in 1..6 do for b in 1..6 do if (10*a+b)%8==0 then cnt+=1 print "[%2d] : %d\n"%[cnt,10*a+b] end end end tm=Time.now-tm # Timer Stop print "Runtime : %.3f [sec]\n"%tm
●実行結果
Q.1) [ 1] : ABCD [ 2] : ABDC [ 3] : BACD [ 4] : BADC [ 5] : CABD [ 6] : CBAD [ 7] : CDAB [ 8] : CDBA [ 9] : DABC [10] : DBAC [11] : DCAB [12] : DCBA Runtime : 0.001 [sec] Q.2) [ 1] : 16 [ 2] : 24 [ 3] : 32 [ 4] : 56 [ 5] : 64 Runtime : 0.000 [sec]
※参考URL
http://q.hatena.ne.jp/1296542184
●文字列操作の比較表: Ruby, Python, JavaScript, Perl, C++ - bkブログ
http://0xcc.net/blog/archives/000137.html
●配列操作の比較表: Ruby, Python, JavaScript, Perl, C++ - bkブログ
http://0xcc.net/blog/archives/000043.html
●プログラム用例 - 日時 - 実行時間計測
http://atomic.jpn.ph/prog/datetime/timing.html
- 作者: 高橋征義,後藤裕蔵,まつもとゆきひろ
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2010/03/31
- メディア: 単行本
- 購入: 15人 クリック: 394回
- この商品を含むブログ (79件) を見る
- 作者: るびきち
- 出版社/メーカー: シーアンドアール研究所
- 発売日: 2009/05/25
- メディア: 単行本
- 購入: 24人 クリック: 263回
- この商品を含むブログ (72件) を見る