我应该创建在红宝石的方法,其将在结构化的,多维的阵列,诸如挣扎:红宝石:递归
my_arr = [
[ [['Armando', 'P'], ['Dave', 'S']], [['Richard', 'R'], ['Michael', 'S']] ],
[ [['Allen', 'S'], ['Omer', 'P']], [['David E.', 'R'], ['Richard X.', 'P']] ]
]
此数组应该代表岩石的比赛,纸&剪刀,玩家的数量将永远是2^n并且不会重复(玩家)。
我写的代码如下:
class WrongNumberOfPlayersError < StandardError ; end
class NoSuchStrategyError < StandardError ; end
def rps_game_winner(game)
raise WrongNumberOfPlayersError unless game.length == 2
valid = ["r","p","s"]
a1=[(game[0][1]).downcase]
a2=[(game[1][1]).downcase]
raise NoSuchStrategyError unless (valid & a1) && (valid & a2)
return (game[0]) if a1 === a2
case (a1[0])
when "r"
case (a2[0])
when "p"
return (game[1])
else
return (game[0])
end
when "p"
case (a2[0])
when "s"
return (game[1])
else
return (game[0])
end
when "s"
case (a2[0])
when "r"
return (game[1])
else
return (game[0])
end
end
end
def rps_tournament_winner(tournament)
if tournament[0][0].is_a?(Array)
rps_tournament_winner(tournament[0])
elsif tournament[1][0].is_a?(Array)
rps_tournament_winner(tournament[1])
else
rps_game_winner(tournament)
end
end
所以我的问题是,鉴于使用数组我前面提到被传递到rps_tournament_winner
Dave
的总是赢,而不是Richard
,我一直没能找出我出错的地方。
泰阅读的文本/代码:)
我建议你使用':本文:摇滚,: scissor'而不是字符串,它更容易阅读代码,并且对于解释器来说更快。 – farnoy 2012-02-29 17:44:49
我提供的数组使用类似“R”“p”等字符串,我想我可以在内部使用符号吗?必须将它转换回所需结果格式的一个字符串(这就像['Richard','R']? – 2012-02-29 17:51:07
你在哪里初始化游戏数组? – 2012-02-29 17:53:45