任务是解决方形numbrix拼图。 numbrix谜题由字段n*n
组成,每个单元格可以包含数字1 -> n*n
。任务是解决难题并创建从编号为1
的单元格到编号为n*n
的单元格的路径。
解决方案示例:
... ... 017 ... ...
... 021 ... 023 ...
005 ... ... ... 013
... 003 ... 001 ...
... ... 009 ... ...
解决方案:
019 018 017 016 015
020 021 022 023 014
005 004 025 024 013
006 003 002 001 012
007 008 009 010 011
我的老师给了我们一个包含一些步骤的文件(由他的解决方案perl程序打印)。但我无法计算减少列表的步骤。
我老师的程序打印出来:
... ... 017 ... ...
... 021 ... 023 ...
005 ... ... ... 013
... 003 ... 001 ...
... ... 009 ... ...
1 | 2 < 3 | 4 < 5 > 6 | 7 < 8 < 9 > 10 | 11 < 12 < 13 > 14 | 15 < 16 < 17 > 18 | 19 < 20 < 21 | 22 < 23 > 24 > 25
1.1: 15 19
1.2: 16 18 20
1.4: 16 18 22 24
1.5: 11 15 25
2.1: 4 6 20
2.3: 16 18 20 22 24
2.5: 12 14 22 24
3.2: 2 4 6 20
3.3: 7 11 15 19 25
3.4: 12 14 22 24
4.1: 2 4 6
4.3: 2 8 10
4.5: 12 14
5.1: 7
5.2: 2 8 10
5.4: 8 10
5.5: 7 11
1.1: 19
1.2: 18 20
1.4: 16 24
1.5: 15 25
2.1: 20
2.3: 16 18 20 22 24
2.5: 14 24
3.2: 4 6 20
3.3: 7 11 15 19 25
3.4: 12 14 24
4.1: 4 6
4.3: 2 8 10
4.5: 12
5.1: 7
5.2: 8
5.4: 10
5.5: 11
# cell(s) with only one candidate: (1.1=19) (2.1=20) (1.2=18) (4.5=12) (5.1=7) (5.2=8) (5.4=10) (4.3=2) (5.5=11)
019 018 017 ... ...
020 021 ... 023 ...
005 ... ... ... 013
... 003 002 001 012
007 008 009 010 011
1.4: 16 24
1.5: 15 25
2.3: * 16 22 24
2.5: 14 24
3.2: * 4
3.3: * 15 25
3.4: * 14 24
4.1: 4 6
# cell(s) with only one candidate: (3.2=4) (4.1=6)
019 018 017 ... ...
020 021 ... 023 ...
005 004 ... ... 013
006 003 002 001 012
007 008 009 010 011
1.4: 16 24
1.5: 15 25
2.3: 16 22 24
2.5: 14 24
3.3: 15 25
3.4: 14 24
# cell(s) with only one candidate: (2.3=22)
019 018 017 ... ...
020 021 022 023 ...
005 004 ... ... 013
006 003 002 001 012
007 008 009 010 011
1.4: 16 24
1.5: 15 25
2.5: 14 24
3.3: * 25
3.4: * 24
# cell(s) with only one candidate: (3.3=25) (1.5=15) (3.4=24) (1.4=16) (2.5=14)
019 018 017 016 015
020 021 022 023 014
005 004 025 024 013
006 003 002 001 012
007 008 009 010 011
我的解决方案可以做什么:
我有一个跟踪单元格的数据结构(例如1.1),它是候选者。我可以打印出第一个清单。
我的问题是:
我不明白他如何减少每个细胞的候选人数量。例如:第一个列表说单元格1.1的可能候选者是15和19.(我有这整个列表)。但突然间,他可以减少列表,说单元格1.1只能包含数字:19。他是如何做到这一点的? (我不需要任何代码,我不理解这种减少背后的逻辑)。
答案 0 :(得分:0)
您不是要求代码,只是为了逻辑。所以这可能就是你要找的东西:
为了保留候选人(例如,15或19为1.1)
它需要两个相邻的候选人(例如,15和16为16,或18和20为19)
在两个边界单元格中(例如1.2和2.1。)
这种情况适用于19但不适用于15,因此19次停留但15次被淘汰。