learn-ruby-in-kansai:2274
From: HIGAKI Masaru <higaki@h...>
Date: Tue, 27 Apr 2010 23:07:10 +0900 (JST)
Subject: [learn-ruby-in-kansai:2274] Re: ローマ数字の999
ひがきです。 こんばんは。 >>>>> On Mon, 26 Apr 2010 15:28:27 +0900 >>>>> mogya@m...(ふるかわだいすけ) said: > Ruby関西#42の初級者レッスンにあった演習課題、解答ってどこかに上がっていたりするのでしょうか? > 実際解いてみたら、part2の例にある999がどうしてもあわなくて、なんか変な気がしてきました。 > > ~~~~~~~~~~ > ローマ数字Part2 > 新しいタイプのローマ数字の文字列を返すメソッドを作りましょう。 > # 出力例 > 4.to_roman #=> IV > 999.to_roman #=> IM > メソッド名はto roman > 考え方はPart1 と同じで大丈夫です。 > ~~~~~~~~~~ > > 999のローマ字表記って、IM(1000-1)じゃなくてCMXCIX(1000-100 + 100-10 + 10-1)じゃないですか? > > Wikipedia見ると > >4や9は当初IIII、VIIIIと書いたが、のちに減算則が作られ、IVやIXと書くようになった。このように、小さい数を大きい数の左側に置いた場合は、右の数から左の数を減じたものが示している数字である。 > >ただし、小さい数は大きい数の左側に1つしか置くことができない。また、この減算則は右の数が左の数のちょうど5倍または10倍であり、かつ左の数がI, > X, Cのときに限り使用することができる。 > : > >XCIX=99(ICと書くのは許されない) > ということになっています。 このルールに従った方が簡単に実装できますね。 私は 999 = CMXCIX で実装しました。 Wikipedia にも書いてある通り、ローマ数字っていい加減みたいですね。 Excel にも Roman 関数があって、オプションで 999 = CMXCIX にしたり 999 = IM にしたり出来るようです。 --ひがき -- ML: learn-ruby-in-kansai@r... 使い方: http://QuickML.com/
2268 2010-04-26 08:28 [mogya@m... ] ローマ数字の999 -> 2274 2010-04-27 16:07 ┗[higaki@h... ] 2280 2010-04-28 04:42 ┗[mogya@m... ]