B
Benoit Daloze
[Note: parts of this message were removed to make it a legal post.]
I didn't miss it at all, it's quite cool, but very not easy to find directly
and to explain for an homework ...
But I admit it's quite a nice solution, not that hard to understand.
I didn't miss it at all, it's quite cool, but very not easy to find directly
and to explain for an homework ...
But I admit it's quite a nice solution, not that hard to understand.
2009/11/11 Gennady Bystritsky said:Well, being student as well, I'd love to study Ruby instead of this (****)
Java. (Where are you studying?) But that's not the point.
So, here is my piece of advice:
Using $numerals = [
[1000, "M"], [900, "CM"], [500, "D"], [400, "CD"],
[100, "C"], [90, "XC"], [50, "L"], [40, "XL"],
[10, "X"], [9, "IX"], [5, "V"], [4, "IV"],
[1, "I"]
]
,you should iterate on each of them, seeing how much your number have of
this kind (/)
and what is the rest after that, to use it for the next step(%)...
(if you use Array#each, you'll get a new array(let's say a) like a=[dec,
romanString]. You can then take them separetely by a[0] and a[1].
Even if this method is not that beautiful in Ruby, it's the easiest way to
understand how to do it).
That the way used in a very known book of Ruby.
You just need to manage how to save this in your String at each step.
(You can multiply a String by "X" * 3, and concatenate using << (or +=))
Give us your script when you'll got one working
In case you have missed it from yesterday, a slightly modified original
solution was:
def roman_numeral(number)
$numerals.inject(["", number]) { |(result, number), (order, roman)|
[ result + roman * (number / order), number % order ]
}.first
end
It works with shortened numerals for 4, 9, 40, 90, 400, 900 as well.
Gennady.