所以,仔细考虑它的X / Y,我想这里真正的问题是 - 你如何存储像这样的逻辑谜题的数据? (滚动到底部以获得拼图的链接。)我选择了这个哈希,其中每个拼图都有自己的键+5个偏移,可以标记为T,F或nil。我使用9代表零,因为我可以添加9,我使用的逻辑倾向于简单的数学。
我需要检查七个值,如果所有这些都是某种方式,那么我会设置一些其他值。此检查运行三次 - 它循环通过三个位置,其中可以出现四个九和三个零的集合
这是我的哈希 - 在实际使用中,它开始所有九,9 = null,1 = true,0 = false
$l1 = {
1 => [9,9,9,9,9], 2 => [9,9,9,9,9], 3 => [ , ,9, ,0], 4 => [ , , , ,0], 5 => [ , , , ,0],
6 => [9,9,9,9,9], 7 => [9,9,9,9,9], 8 => [ , ,9, ,9], 9 => [ , ,9, ,0], 10 => [ , , , ,0],
11 => [9,9,9,9,9], 12 => [9,9,9,9,9], 13 => [ , , , ,9], 14 => [ , ,9, ,9], 15 => [ , ,9, ,0],
16 => [9,9,9,9,9], 17 => [9,9,9,9,9], 18 => [ , , , ,0], 19 => [ , , , ,9], 20 => [ , ,9, ,9],
21 => [9,9,9,9,9], 22 => [9,9,9,9,9], 23 => [ , , , ,0], 24 => [ , , , ,0], 25 => [ , , , ,9]}
此处显示为示例,我们要检查的模式的三个实例显示在第3列,第4列和第5列中。我删除了其他值,以便您可以更好地看到它。
模式本身应出现在第二列,[2,7,12,17,22]。
这是使用&&:
进行检查的第一次迭代if $l1[2][2] == 9 && $l1[7][2] == 9 && $l1[7][4] == 9 && $l1[12][4] == 9 && $l1[2][4] == 0 && $l1[17][4] == 0 && $l1[22][4] == 0
$l1[7][0] = 0
$l1[7][1] = 0
$l1[7][3] = 0
end
我还尝试了七个嵌套的if语句,它只是停止匹配两个或三个步骤,即使模式是完美匹配。
你怎么能检查这样的东西?在此先感谢您的帮助!
编辑:扩大解释 - 除了在codecademy的一些课程之外,我没有正式的编程培训。我正在构建解决“谁的鱼?”的逻辑。拼图,http://www.coudal.com/thefish.php,这个拼图就像这样 -
来自五个国家的五个男人连续住在五个不同颜色的房子里,他们抽不同的品牌,喝不同的饮料,并且有不同的宠物。
如果没有铅笔和纸张或电子表格,有15条线索无法解决这个问题......我的目标是制作解决这个难题的逻辑而不用任何直观的跳跃 - 他们必须编码到程序中。线索+逻辑要么解决它,要么我需要重新调整逻辑。
我已经建立了很多逻辑,但这个特殊线索的特定逻辑“温室位于白宫的左边”证明非常难以建立。
我不想在很长的故事中让eveyone失望,但看起来不可避免......
所以是的,所有存储在这样一个哈希中的数据可能都是违反直觉的,但是我可以想出数据存储的全部内容,我可以弄清楚如何轻松地转出并查看调试,它是作为一个初学者,我很容易看到它,而且我已经从五个独立的哈希 - 每个人一个 - 切换它 - 因为我遇到了有关如何在有五个哈希时构建逻辑的问题。再次感谢您与我一起调查。
答案 0 :(得分:0)
嗯,我不知道为什么它现在正在工作,但我拿了三个嵌套的通道并将它们变成了自己的方法,并且它正常工作。
在此之前:
if X == 1
if Y == 2
if Z == 3
Q = 0
end
end
elsif X == 2
if Y == 3
if Z == 4
Q = 1
end
end
end
现在就像这样
def first
if X == 1
if Y == 2
if Z == 3
Q = 0
end
end
end
end
def second
if X == 2
if Y == 3
if Z == 4
Q = 1
end
end
end
end