HW不可能?:"在红宝石中创建一个没有使用条件的岩石剪刀程序"

bou*_*uby 9 ruby

我是一个介绍性的软件开发课程,我的作业是创建一个岩石剪刀程序,它带有两个参数(摇滚,纸张)等,并返回获胜的arg.

现在如果我可以使用条件语,我会快速解决这个问题,但是作业说我们需要知道的一切都在红宝石教科书的前三章中,而这些章节不包括条件语!没有它们可以创建这个程序吗?或者他只是期望我们足智多谋并使用条件?虽然这是一个非常简单的条件分配...我想我可能会在这里遗漏一些东西.

编辑:我正在考虑那个chmod数值系统,并认为通过该添加系统可以实现解决方案......

小智 11

这是仅使用哈希的一个:

RULES = {
  :rock     => {:rock => :draw, :paper => :paper, :scissors => :rock},
  :paper    => {:rock => :paper, :paper => :draw, :scissors => :scissors},
  :scissors => {:rock => :rock, :paper => :scissors, :scissors => :draw}
}

def play(p1, p2)
  RULES[p1][p2]
end

puts play(:rock, :paper)        # :paper
puts play(:scissors, :rock)     # :rock
puts play(:scissors, :scissors) # :draw
Run Code Online (Sandbox Code Playgroud)


Mor*_*ori 8

def winner(p1, p2)
  wins = {rock: :scissors, scissors: :paper, paper: :rock}
  {true => p1, false => p2}[wins[p1] == p2]
end
Run Code Online (Sandbox Code Playgroud)

获胜者(:摇滚,摇滚)#=>:摇滚乐哦! - 托克兰

按@sarnold,留下这个作为学生的练习:).

  • `win(:rock,:rock)#=>:rock` d'oh! (6认同)