gpt4 book ai didi

ruby - 擦干石头剪刀布

转载 作者:太空宇宙 更新时间:2023-11-03 17:06:55 26 4
gpt4 key购买 nike

我是一名新手 ruby​​ 程序员,虽然这段代码有效,但我想知道如何改进它。我对 lambdas 和 procs 等知识非常有限,但任何建议都会很好。有什么方法可以简化每种情况下的 if else 语句吗?此外,是否有任何替代方法可以跳过 case 语句,而不是使几乎整个代码成为一个大的 if else 语句?

def rps(roll)
roll_ops = ["rock", "paper", "scissors"]
pick = roll_ops.sample
result = nil
if roll == pick
result = "tie"
else
case roll
when "scissors" then
if pick == "paper"
result = "win"
else
result = "lose"
end
when "rock" then
if pick == "scissors"
result = "win"
else
result = "lose"
end
when "paper" then
if pick == "rock"
result = "win"
else
result = "lose"
end
else
puts "Please input rock paper or scissors"
end
end

puts "#{pick}, #{result}"
end

rps("scissors")

最佳答案

您可以构建一个哈希值,其中包含选择以及哪个选项输给了该选择:

hash = {'scissors' => 'paper', 'rock' => 'scissors', 'paper' => 'rock'}

然后你检查机器pick是否和你做的一样:

roll_ops = ["rock", "paper", "scissors"]
pick = roll_ops.sample
if roll == pick

输赢条件变成了这样:

if hash[roll] == pick
"win"
else
"lose"
end

漂亮干净,只有两个条件。

关于ruby - 擦干石头剪刀布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32105234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com