2016-08-19 9 views
-4

私はちょうどこのクイズを完了しようが、私は「romanize」方式で「AMT」ということで何を行っているか理解することはできません。このローマ数字演習では「amt」の意味は何ですか?

ROMAN_NUMS = { 
    "M" => 1000, 
    "CM" => 900, "D" => 500, "CD" => 400, "C" => 100, 
    "XC" => 90, "L" => 50, "XL" => 40, "X" => 10, 
    "IX" => 9, "V" => 5, "IV" => 4, "I" => 1 
} 

def romanize(num) 
    ROMAN_NUMS.map do |ltr, val| 
    amt, num = num.divmod(val) 
    ltr * amt 
    end.join 
end 
+0

[divmod](http://ruby-doc.org/core-1.9.3/Numeric.html#method-i-divmod) – zarak

+3

疑わしいときは、「Ruby divmod」のようなメソッド名を検索し、啓発されます。 – tadman

+0

http://ruby-doc.org/core-1.9.3/Numeric.html#method-i-divmod – HolyMoly

答えて

1

divmodは商とからなる2要素の配列を返しますモジュラス。

したがって、基本的にx.divmod(y)[x/y, x % y]を返します(より正確な説明については、ドキュメントをご覧ください)。

amt, num = num.divmod(val) 

は、2つの素子アレイを取り、二つの変数にデ構造の割り当てを行います。その後amt(それはちょうど、amountと呼ばれるべきひどく名前が付けられた変数です)は、返された配列の最初の値を含み、num秒を含みます。

+0

あなたは 'amt = num/val'と' num = num%val'の2行で書くこともできます。 – Stefan

+0

「divmod」を見るためのよりグラフィック的で明示的な方法です。あなたは優しいね!! – ELECON88

関連する問題