/ / Simulação de coinflip Ruby (cabeça ou número) - ruby

Ruby coinflip simulação (cabeça ou número) - rubi

Ei pessoal, preciso fazer um programa que simula um coinflip e dá cara ou número. Eu fiz isso

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

mas como posso incluir toda vez que você pressiona enter deve continuar e continuar simulando o coinflip como ... HEAD (enter) HEAD (enter) NUMBER (enter) e assim por diante.

Respostas:

1 para resposta № 1

Você precisa de algum tipo de laço, não apenas um if. Esta é uma maneira resumida de fazer isso:

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

Ou se não houver problema em parar pressionando CTRL-C:

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

Usando um teste pós-loop (ou seja, faça o gets e possivelmente break depois de imprimir o resultado da inversão) é mais apropriado aqui, pois evita a duplicação de código. Veja também este popular guia de estilo Ruby:
https://github.com/bbatsov/ruby-style-guide#loop-with-break
https://github.com/bbatsov/ruby-style-guide#infinite-loop