任务是解决方形麻烦的难题。一个numbrix拼图由一个字段n*n
组成,每个单元格可以包含一个数字1 -> n*n
。任务是解决这个难题,并创建一条从号码为1
的单元到号码为n*n
的单元。 实例与解决方案:用Perl解决numbrix难题
... ... 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.他如何做到这一点? (我不需要任何代码,我不明白这个减少的逻辑)。