2017-07-06 8 views
-2

このコードを、逆配列の繰り返しを含むRubyに変換する方法はありますが、インデックスは使用しないでください。Rubyリバース反復配列ですが、インデックスはありません

私はPythonコードから理解することができるものから、
out = 0 
    for index,x in enumerate(reversed(d)): 
     out += x*pow(2,index) 

、配列dが逆転しているが、要素のインデックスはありませんか?
ツイスト!
Rubyでこれを行う方法は?各反復のため

for index, string in enumerate(reversed(['zero', 'one', 'two'])): 
    print index, string 
# 0 two 
# 1 one 
# 2 zero 

は、次に、あなたはそれが['two', 'one', 'zero']として、あなたの配列を取るよ、この場合eachで、列挙子を適用する前reverseを使用し、そうすることができ、およびインデックス:Pythonで次の出力を考慮し

+0

* "配列dは逆ですが、要素のインデックスは" * - 何ですか? – jonrsharpe

+0

うん!ここでコードをチェックしてください - http://galvanist.com/post/53478841501/python-reverse-enumerate – arjun

答えて

0

そのまま残ります:

['zero', 'one', 'two'].reverse.each_with_index do |word, index| 
    puts "#{index} #{word}" 
end 
# 0 two 
# 1 one 
# 2 zero 
+1

それは少しパフォーマンスが良いでしょう(私はそれをベンチマークしていないでしょう)[...] .reverse_each.with_index'。 –

+0

新しいトリックを習得しました。今すぐ簡単に見えます!ありがとう。 – arjun

+0

'reverse_each'は少し遅くなります(https://gist.github.com/vnhnhm/d84272d49b2462db862f4efeea809ae7)。 –

2

RubyであなたのPythonコードスニペットのと同等です:

d.reverse_each.with_index.inject(0) do |out, (x,i)| 
    out += x * 2**i 
end 
関連する問題