Я СОВЕРШЕННО новичок в Ruby и программировании в целом. Я работаю над рубиновыми коанами. Я довел его до 176/274, прежде чем застрял.
Это «Проект подсчета очков». Мне нужно написать метод для подсчета очков при данном броске костей.
Возможно, это не самый элегантный код. вы когда-нибудь видели, но вот что я придумал:
def score(dice)
tally = 0
tally += (dice.sort.to_s[/[1]+/].length % 3) * 100
if dice.sort.to_s[/[1]+/].length >= 3
tally += 1000
end
tally = tally + (dice.sort.to_s[/[5]+/].length % 3) * 50
if dice.sort.to_s[/[5]+/].length >= 3
tally += 500
end
if dice.sort.to_s[/[2]+/].length >= 3
tally += 200
end
if dice.sort.to_s[/[3]+/].length >= 3
tally += 300
end
if dice.sort.to_s[/[4]+/].length >= 3
tally += 400
end
if dice.sort.to_s[/[6]+/].length >= 3
tally += 600
end
return tally
end
Первый тест: score([]) должен возвращать 0
Когда я запускаю его, я получаю «неопределенный метод `length' для nil: NilClass» (ссылка на строку является первым экземпляром .length). Это говорит мне, что «dice.sort.to_s[/[1]+/]» с « score([])" равен нулю, но когда я запускаю его в irb>>, он равен 0.
Что дает?
dice.sort.to_s
? - person cam   schedule 21.09.2011