/ / Symulacja coinflip Ruby (głowa lub liczba) - rubin

Symulacja monetarnej monety Ruby (głowa lub liczba) - rubin

Hej, chłopaki, muszę zrobić program, który symuluje rzut monetą i podaje głowę lub liczbę. Zrobiłem to

a = rand(1..2)
if a == 1 then
puts "HEAD!"
else
puts "NUMBER!"
end

enter = gets
if enter == "n"
a = rand(1..2)
if a == 1 then
puts "HEAD!"
else
puts "NUMBER!"
end
end

ale jak mogę dołączyć za każdym razem, gdy naciśniesz enter, powinno to kontynuować i kontynuować symulację coinflip, jak ... HEAD (enter) HEAD (enter) NUMBER (enter) i tak dalej.

Odpowiedzi:

1 dla odpowiedzi № 1

Potrzebujesz czegoś w rodzaju pętla, a nie tylko if. Oto krótki sposób, aby to zrobić:

loop do
puts ["HEAD", "NUMBER"].sample
break if gets != "n"
end

Lub jeśli nie chcesz przerywać pracy, naciskając CTRL-C:

loop do
puts ["HEAD", "NUMBER"].sample
gets
end

Korzystając z testu po pętli (tj gets i ewentualnie break po drukowanie wyniku odwrócenia) jest tutaj bardziej odpowiednie, ponieważ pozwala uniknąć powielania kodu. Zobacz także ten popularny przewodnik po stylu Ruby:
https://github.com/bbatsov/ruby-style-guide#loop-with-break
https://github.com/bbatsov/ruby-style-guide#infinite-loop