読者です 読者をやめる 読者になる 読者になる

ローマ数字問題

練習 Ruby

「初めてのプログラミング」p.87 練習問題より

初期の頃のローマ数字には減算則はありませんでした。つまり「IX」で9を表したりせず素直に大きい数の次に小さい数を順に記述して「VIIII」というように書いていました。さて、1から3000の間の整数を入力してそれに相当する古いローマ数字の文字列を返すメソッドを書いてみましょ。
例えば、old_roman_numeral 4は'IIII'を返すようにします。できたメソッドをいろいろな整数でテストしてみること。
ex. I=1 V=5 X=10 L=50 C=100 D=500 M=1000
ヒント:整数の割り算と余り演算子(%)を使います

例えば2367円のお金を払うとき、以下のように様々な組み合わせ(分解)がありますよね。そういう考え方が参考になるよと先日ご助言もらいました。

  • 1000円札×2枚, 100円玉を3枚, 50円玉を……
  • 500円玉を4枚, 100円玉を……

ありがとうございます。難しそうだががんばるよ。

メモ

  • roman_numeralを返すメソッドを作る
  • 1-3000を入力したらローマ数字を返す
  • ローマ数字中身を指示
  • 超ぐむむ
  • 1000の位(M), 100の位(C.D), 10の位(X, L), 1の位(V, I)をどう書けばよいのか
    • 割り算と余り演算子を使うってうーん
    • たとえば2367だとしたら…(1000円(M)×2+100(C)×3+50(L)×1+10(X)×1+5(V)×1+1(V)×2
      • MMCCCLXVII となるだであってるのか?
      • 式に書いたのはかけ算,しかし最初頭の中では割り算した
    • -

どう書けばいいのかううーん

実行試し書き

def roman_num