任務是解決方形麻煩的難題。一個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.他如何做到這一點? (我不需要任何代碼,我不明白這個減少的邏輯)。