letters - Project Euler #17 Ruby - What's wrong? -
letters - Project Euler #17 Ruby - What's wrong? -
i made programme in ruby , have no thought why it's not giving me right answer
problem: if numbers 1 5 written out in words: one, two, three, four, five, there 3 + 3 + 5 + 4 + 4 = 19 letters used in total.
if numbers 1 1000 (one thousand) inclusive written out in words, how many letters used?
note: not count spaces or hyphens. example, 342 (three hundred , forty-two) contains 23 letters , 115 (one hundred , fifteen) contains 20 letters. utilize of "and" when writing out numbers in compliance british usage.
my code:
def number_to_words(n) custom = {"0" => "", "1" => "one", "2" => "two", "3" => "three", "4" => "four", "5" => "five", "6" => "six", "7" => "seven", "8" => "eight", "9" => "nine", "10" => "ten", "11" => "eleven", "12" => "twelve", "13" => "thirteen", "14" => "fourteen", "15" => "fifteen", "16" => "sixteen", "17"=> "seventeen", "18" => "eighteen", "19" => "nineteen",} tens = {"0" => "", "1" => "ten", "2" => "twenty", "3" => "thirty", "4" => "forty", "5" => "fifty", "6" => "sixty", "7" => "seventy", "8" => "eighty", "9" => "ninety"} if n < 20 string = custom[n.to_s] elsif n >= 20 && n < 100 string = tens[n.to_s[0]] + custom[n.to_s[1]] elsif n % 1000 == 0 string = "onethousand" elsif n >= 100 && n % 100 == 0 string = custom[n.to_s[0]] + "hundred" else string = custom[n.to_s[0]] + "hundred" + "and" + tens[n.to_s[1]] + custom[n.to_s[2]] end end def letter_counter(x) n = 1 sum = 0 while n < x + 1 sum = sum + number_to_words(n).length print number_to_words(n).length, "\n" n = n + 1 print n, "\n" end results = sum end
correct reply
21124
i don't know ruby, know euler question. after studying code have, have guess else statement incorrect.
say have number 111, think falls else statement. wind building string says, "onehundredandtenone" instead of "onehundredandeleven"
so me range 111 - 119 have wrong strings built throw off counts. actually, true 211 - 219... 311 - 319... etc...
ruby letters
Comments
Post a Comment