bug-apl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug-apl] A long session with one abort (no damages)


From: Christian Robert
Subject: [Bug-apl] A long session with one abort (no damages)
Date: Wed, 30 Nov 2016 22:28:18 -0500
User-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.5.0

A long session with one abort. Hopefully I did not lost anything. )copy worked.

My comprehend of the Sudoku and the rules/constraints of Quad-DLX are improving 
a lot !

I'm near to having a Sudoku Solver made by myself (zero global variables).

Xtian.

Juergen, I would be surprised if you find anything in that session
who had caused the abort. The only unusual thing is when I renamed "Solve2" to 
"Solve"
after erasing "Solve" (by editing the [0] line)

Xtian.


      Display Solve2 StarBurst
┏━━━━┯━━━┯━━━━┳━━━━┯━━━┯━━━━┳━━━━┯━━━┯━━━━┓
┃  9 │ 5 │ 7  ┃  1 │ 8 │ 4  ┃  3 │ 6 │ 2  ┃
┠────┼───┼────╂────┼───┼────╂────┼───┼────┨
┃  2 │ 8 │ 1  ┃  9 │ 6 │ 3  ┃  4 │ 7 │ 5  ┃
┠────┼───┼────╂────┼───┼────╂────┼───┼────┨
┃  6 │ 4 │ 3  ┃  7 │ 2 │ 5  ┃  1 │ 9 │ 8  ┃
┣━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━┫
┃  4 │ 9 │ 6  ┃  3 │ 5 │ 7  ┃  8 │ 2 │ 1  ┃
┠────┼───┼────╂────┼───┼────╂────┼───┼────┨
┃  8 │ 7 │ 5  ┃  4 │ 1 │ 2  ┃  9 │ 3 │ 6  ┃
┠────┼───┼────╂────┼───┼────╂────┼───┼────┨
┃  3 │ 1 │ 2  ┃  8 │ 9 │ 6  ┃  5 │ 4 │ 7  ┃
┣━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━┫
┃  7 │ 2 │ 9  ┃  5 │ 4 │ 8  ┃  6 │ 1 │ 3  ┃
┠────┼───┼────╂────┼───┼────╂────┼───┼────┨
┃  5 │ 3 │ 4  ┃  6 │ 7 │ 1  ┃  2 │ 8 │ 9  ┃
┠────┼───┼────╂────┼───┼────╂────┼───┼────┨
┃  1 │ 6 │ 8  ┃  2 │ 3 │ 9  ┃  7 │ 5 │ 4  ┃
┗━━━━┷━━━┷━━━━┻━━━━┷━━━┷━━━━┻━━━━┷━━━┷━━━━┛
      df
   Display  
╔═══════════════════════════════════════════════════════════════════════════╗
            ║z←Display s                                                        
        ║
            ║z←1 43⍴"┏━━━━┯━━━┯━━━━┳━━━━┯━━━┯━━━━┳━━━━┯━━━┯━━━━┓"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┣━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━┫"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┣━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━┫"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┗━━━━┷━━━┷━━━━┻━━━━┷━━━┷━━━━┻━━━━┷━━━┷━━━━┛"               
        ║
            ║→(1=≡s)/Ok1                                                        
        ║
            ║s←⊃s                                                               
        ║
            ║Ok1: →(81=⍴,s)/Ok2                                                 
        ║
            ║z←∊("Display: argument with wrong ravel (") (⍴,s) ("). Should be 
81.") ⋄ →0║
            ║Ok2: →(' '=↑0⍴s←,s)/Chars                                          
        ║
            ║s←⍕,s                                                              
        ║
            ║s←(s≠' ')/s                                                        
        ║
            ║Chars: ((s='0')/s)←' '                                             
        ║
            ║(('8'=,z)/,z)←s                                                    
        ║
            
╚═══════════════════════════════════════════════════════════════════════════╝
   GenConst  ╔═══════════════════════╗
             ║z←GenConst;⎕io         ║
             ║z←0 328⍴0              ║
             ║⊣{⊣z←z⍪RCD ⊃⍵}¨ ,⍳9 9 9║
             ╚═══════════════════════╝
   GenRCD  ╔══════════════════════╗
           ║z←GenRCD arg;R;C;D;⎕io║
           ║(R C D)←arg           ║
           ║z←0 328⍴0             ║
           ║→(D=0)/AllKit         ║
           ║z←RCD R C D           ║
           ║→0                    ║
           ║AllKit:               ║
           ║⊣{⊣z←z⍪RCD R C ⍵}¨⍳9  ║
           ║→0                    ║
           ╚══════════════════════╝
   RCD  ╔═════════════════════════════════════╗
        ║z←RCD arg;R;C;D;cel;row;col;box;B;⎕io║
        ║⎕io←1 ⋄ (R C D)←arg                  ║
        ║cel←row←col←box←81⍴0                 ║
        ║cel[1+((R-1)×9)+(C-1)]←D             ║
        ║row[1+((R-1)×9)+(D-1)]←D             ║
        ║col[1+((C-1)×9)+(D-1)]←D             ║
        ║B←1+(3×((⌊(R-1)÷3)))+(⌊(C-1)÷3)      ║
        ║box[1+((B-1)×9)+(D-1)]←D             ║
        ║z←R,C,B,D,cel,row,col,box            ║
        ╚═════════════════════════════════════╝
   Solve  ╔════════════════════════════════════════════════════╗
          ║z←Solve s;R;C;D;m;t;⎕io                             ║
          ║⎕io←1 ⋄ →(2=⎕NC 'Const')/Good                       ║
          ║ Const←GenConst                                     ║
          ║Good: m←Const                                       ║
          ║R←0                                                 ║
          ║NextR: →(9<R←R+1)/Solve                             ║
          ║C←0                                                 ║
          ║NextC: →(9<C←C+1)/NextR                             ║
          ║→(0=s[R;C])/NextC ⍝ Ignore all 0                    ║
          ║m←m Trim R,C,s[R;C]                                 ║
          ║→NextC                                              ║
          ║Solve:                                              ║
          ║z←2 ⎕DLX 0≠ 0 4↓ m                                  ║
          ║→(0=⍴z)/Unsolvable                                  ║
          ║→(2>⍴z)/JustOne                                     ║
          ║→TooMuch                                            ║
          ║JustOne: z←⊃z[1]                                    ║
          ║ t←m[z;4]                                           ║
          ║((0=(,s))/,s)←t[⍋z]                                 ║
          ║z←s                                                 ║
          ║→0                                                  ║
          ║Unsolvable: z←"No Solutions" ⋄ →0                   ║
          ║TooMuch:                                            ║
          ║""                                                  ║
          ║"/-----------------------------------------------\\"║
          ║"| WARNING: Only displaying the first solution... |"║
          ║"\\-----------------------------------------------/"║
          ║""                                                  ║
          ║→JustOne                                            ║
          ╚════════════════════════════════════════════════════╝
   Solve2  ╔════════════════════════════════════════════════════╗
           ║z←Solve2 s;cs;⎕io                                   ║
           ║cs←0 328⍴0                                          ║
           ║⊣{⊣cs←cs⍪ GenRCD ⍵}¨{⍵,⍵⌷s}¨,⍳9 9                   ║
           ║z←2 ⎕DLX 0≠ 0 4↓cs                                  ║
           ║→(0=⍴z)/Unsolvable                                  ║
           ║→(2>⍴z)/JustOne                                     ║
           ║→TooMuch                                            ║
           ║JustOne: z←⊃z[1]                                    ║
           ║a←z ⋄ b←cs[;1 2 4]                                  ║
           ║⊣{⊣((2↑⍵)⌷s)←↑2↓⍵}⍤1 cs[z;1 2 4]                    ║
           ║z←s                                                 ║
           ║→0                                                  ║
           ║Unsolvable: z←"No Solutions" ⋄ →0                   ║
           ║TooMuch:                                            ║
           ║""                                                  ║
           ║"/-----------------------------------------------\\"║
           ║"| WARNING: Only displaying the first solution... |"║
           ║"\\-----------------------------------------------/"║
           ║""                                                  ║
           ║→JustOne                                            ║
           ╚════════════════════════════════════════════════════╝


      )erase Solve GenConst
      df
   Display  
╔═══════════════════════════════════════════════════════════════════════════╗
            ║z←Display s                                                        
        ║
            ║z←1 43⍴"┏━━━━┯━━━┯━━━━┳━━━━┯━━━┯━━━━┳━━━━┯━━━┯━━━━┓"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┣━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━┫"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┣━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━┫"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┗━━━━┷━━━┷━━━━┻━━━━┷━━━┷━━━━┻━━━━┷━━━┷━━━━┛"               
        ║
            ║→(1=≡s)/Ok1                                                        
        ║
            ║s←⊃s                                                               
        ║
            ║Ok1: →(81=⍴,s)/Ok2                                                 
        ║
            ║z←∊("Display: argument with wrong ravel (") (⍴,s) ("). Should be 
81.") ⋄ →0║
            ║Ok2: →(' '=↑0⍴s←,s)/Chars                                          
        ║
            ║s←⍕,s                                                              
        ║
            ║s←(s≠' ')/s                                                        
        ║
            ║Chars: ((s='0')/s)←' '                                             
        ║
            ║(('8'=,z)/,z)←s                                                    
        ║
            
╚═══════════════════════════════════════════════════════════════════════════╝
   GenRCD  ╔══════════════════════╗
           ║z←GenRCD arg;R;C;D;⎕io║
           ║(R C D)←arg           ║
           ║z←0 328⍴0             ║
           ║→(D=0)/AllKit         ║
           ║z←RCD R C D           ║
           ║→0                    ║
           ║AllKit:               ║
           ║⊣{⊣z←z⍪RCD R C ⍵}¨⍳9  ║
           ║→0                    ║
           ╚══════════════════════╝
   RCD  ╔═════════════════════════════════════╗
        ║z←RCD arg;R;C;D;cel;row;col;box;B;⎕io║
        ║⎕io←1 ⋄ (R C D)←arg                  ║
        ║cel←row←col←box←81⍴0                 ║
        ║cel[1+((R-1)×9)+(C-1)]←D             ║
        ║row[1+((R-1)×9)+(D-1)]←D             ║
        ║col[1+((C-1)×9)+(D-1)]←D             ║
        ║B←1+(3×((⌊(R-1)÷3)))+(⌊(C-1)÷3)      ║
        ║box[1+((B-1)×9)+(D-1)]←D             ║
        ║z←R,C,B,D,cel,row,col,box            ║
        ╚═════════════════════════════════════╝
   Solve2  ╔════════════════════════════════════════════════════╗
           ║z←Solve2 s;cs;⎕io                                   ║
           ║cs←0 328⍴0                                          ║
           ║⊣{⊣cs←cs⍪ GenRCD ⍵}¨{⍵,⍵⌷s}¨,⍳9 9                   ║
           ║z←2 ⎕DLX 0≠ 0 4↓cs                                  ║
           ║→(0=⍴z)/Unsolvable                                  ║
           ║→(2>⍴z)/JustOne                                     ║
           ║→TooMuch                                            ║
           ║JustOne: z←⊃z[1]                                    ║
           ║a←z ⋄ b←cs[;1 2 4]                                  ║
           ║⊣{⊣((2↑⍵)⌷s)←↑2↓⍵}⍤1 cs[z;1 2 4]                    ║
           ║z←s                                                 ║
           ║→0                                                  ║
           ║Unsolvable: z←"No Solutions" ⋄ →0                   ║
           ║TooMuch:                                            ║
           ║""                                                  ║
           ║"/-----------------------------------------------\\"║
           ║"| WARNING: Only displaying the first solution... |"║
           ║"\\-----------------------------------------------/"║
           ║""                                                  ║
           ║→JustOne                                            ║
           ╚════════════════════════════════════════════════════╝


      )vars
Const   StarBurst   a   b   one     vide
      ∇Solve2[⎕]
    ∇
[0]   z←Solve2 s;cs;⎕io
[1]   cs←0 328⍴0
[2]   ⊣{⊣cs←cs⍪ GenRCD ⍵}¨{⍵,⍵⌷s}¨,⍳9 9
[3]   z←2 ⎕DLX 0≠ 0 4↓cs
[4]   →(0=⍴z)/Unsolvable
[5]   →(2>⍴z)/JustOne
[6]   →TooMuch
[7]  JustOne: z←⊃z[1]
[8]   a←z ⋄ b←cs[;1 2 4]
[9]   ⊣{⊣((2↑⍵)⌷s)←↑2↓⍵}⍤1 cs[z;1 2 4]
[10]  z←s
[11]  →0
[12] Unsolvable: z←"No Solutions" ⋄ →0
[13] TooMuch:
[14]  ""
[15]  "/-----------------------------------------------\\"
[16]  "| WARNING: Only displaying the first solution... |"
[17]  "\\-----------------------------------------------/"
[18]  ""
[19]  →JustOne
    ∇
[20] [∆8]
[20] [⎕]
    ∇
[0]   z←Solve2 s;cs;⎕io
[1]   cs←0 328⍴0
[2]   ⊣{⊣cs←cs⍪ GenRCD ⍵}¨{⍵,⍵⌷s}¨,⍳9 9
[3]   z←2 ⎕DLX 0≠ 0 4↓cs
[4]   →(0=⍴z)/Unsolvable
[5]   →(2>⍴z)/JustOne
[6]   →TooMuch
[7]  JustOne: z←⊃z[1]
[9]   ⊣{⊣((2↑⍵)⌷s)←↑2↓⍵}⍤1 cs[z;1 2 4]
[10]  z←s
[11]  →0
[12] Unsolvable: z←"No Solutions" ⋄ →0
[13] TooMuch:
[14]  ""
[15]  "/-----------------------------------------------\\"
[16]  "| WARNING: Only displaying the first solution... |"
[17]  "\\-----------------------------------------------/"
[18]  ""
[19]  →JustOne
    ∇
[20] [10]  z←s ⋄ →0
[11] [∆11]
[11] [⎕]
    ∇
[0]   z←Solve2 s;cs;⎕io
[1]   cs←0 328⍴0
[2]   ⊣{⊣cs←cs⍪ GenRCD ⍵}¨{⍵,⍵⌷s}¨,⍳9 9
[3]   z←2 ⎕DLX 0≠ 0 4↓cs
[4]   →(0=⍴z)/Unsolvable
[5]   →(2>⍴z)/JustOne
[6]   →TooMuch
[7]  JustOne: z←⊃z[1]
[9]   ⊣{⊣((2↑⍵)⌷s)←↑2↓⍵}⍤1 cs[z;1 2 4]
[10]  z←s ⋄ →0
[12] Unsolvable: z←"No Solutions" ⋄ →0
[13] TooMuch:
[14]  ""
[15]  "/-----------------------------------------------\\"
[16]  "| WARNING: Only displaying the first solution... |"
[17]  "\\-----------------------------------------------/"
[18]  ""
[19]  →JustOne
    ∇
[20] [0]   z←Solve s;cs;⎕io
[1] [1]   ⎕io←1 ⋄ cs←0 328⍴0
[2] [⎕]
    ∇
[0]   z←Solve s;cs;⎕io
[1]   ⎕io←1 ⋄ cs←0 328⍴0
[2]   ⊣{⊣cs←cs⍪ GenRCD ⍵}¨{⍵,⍵⌷s}¨,⍳9 9
[3]   z←2 ⎕DLX 0≠ 0 4↓cs
[4]   →(0=⍴z)/Unsolvable
[5]   →(2>⍴z)/JustOne
[6]   →TooMuch
[7]  JustOne: z←⊃z[1]
[9]   ⊣{⊣((2↑⍵)⌷s)←↑2↓⍵}⍤1 cs[z;1 2 4]
[10]  z←s ⋄ →0
[12] Unsolvable: z←"No Solutions" ⋄ →0
[13] TooMuch:
[14]  ""
[15]  "/-----------------------------------------------\\"
[16]  "| WARNING: Only displaying the first solution... |"
[17]  "\\-----------------------------------------------/"
[18]  ""
[19]  →JustOne
    ∇
[20] ∇
      df
   Display  
╔═══════════════════════════════════════════════════════════════════════════╗
            ║z←Display s                                                        
        ║
            ║z←1 43⍴"┏━━━━┯━━━┯━━━━┳━━━━┯━━━┯━━━━┳━━━━┯━━━┯━━━━┓"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┣━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━┫"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┣━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━┫"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┗━━━━┷━━━┷━━━━┻━━━━┷━━━┷━━━━┻━━━━┷━━━┷━━━━┛"               
        ║
            ║→(1=≡s)/Ok1                                                        
        ║
            ║s←⊃s                                                               
        ║
            ║Ok1: →(81=⍴,s)/Ok2                                                 
        ║
            ║z←∊("Display: argument with wrong ravel (") (⍴,s) ("). Should be 
81.") ⋄ →0║
            ║Ok2: →(' '=↑0⍴s←,s)/Chars                                          
        ║
            ║s←⍕,s                                                              
        ║
            ║s←(s≠' ')/s                                                        
        ║
            ║Chars: ((s='0')/s)←' '                                             
        ║
            ║(('8'=,z)/,z)←s                                                    
        ║
            
╚═══════════════════════════════════════════════════════════════════════════╝
   GenRCD  ╔══════════════════════╗
           ║z←GenRCD arg;R;C;D;⎕io║
           ║(R C D)←arg           ║
           ║z←0 328⍴0             ║
           ║→(D=0)/AllKit         ║
           ║z←RCD R C D           ║
           ║→0                    ║
           ║AllKit:               ║
           ║⊣{⊣z←z⍪RCD R C ⍵}¨⍳9  ║
           ║→0                    ║
           ╚══════════════════════╝
   RCD  ╔═════════════════════════════════════╗
        ║z←RCD arg;R;C;D;cel;row;col;box;B;⎕io║
        ║⎕io←1 ⋄ (R C D)←arg                  ║
        ║cel←row←col←box←81⍴0                 ║
        ║cel[1+((R-1)×9)+(C-1)]←D             ║
        ║row[1+((R-1)×9)+(D-1)]←D             ║
        ║col[1+((C-1)×9)+(D-1)]←D             ║
        ║B←1+(3×((⌊(R-1)÷3)))+(⌊(C-1)÷3)      ║
        ║box[1+((B-1)×9)+(D-1)]←D             ║
        ║z←R,C,B,D,cel,row,col,box            ║
        ╚═════════════════════════════════════╝
   Solve  ╔════════════════════════════════════════════════════╗
          ║z←Solve s;cs;⎕io                                    ║
          ║⎕io←1 ⋄ cs←0 328⍴0                                  ║
          ║⊣{⊣cs←cs⍪ GenRCD ⍵}¨{⍵,⍵⌷s}¨,⍳9 9                   ║
          ║z←2 ⎕DLX 0≠ 0 4↓cs                                  ║
          ║→(0=⍴z)/Unsolvable                                  ║
          ║→(2>⍴z)/JustOne                                     ║
          ║→TooMuch                                            ║
          ║JustOne: z←⊃z[1]                                    ║
          ║⊣{⊣((2↑⍵)⌷s)←↑2↓⍵}⍤1 cs[z;1 2 4]                    ║
          ║z←s ⋄ →0                                            ║
          ║Unsolvable: z←"No Solutions" ⋄ →0                   ║
          ║TooMuch:                                            ║
          ║""                                                  ║
          ║"/-----------------------------------------------\\"║
          ║"| WARNING: Only displaying the first solution... |"║
          ║"\\-----------------------------------------------/"║
          ║""                                                  ║
          ║→JustOne                                            ║
          ╚════════════════════════════════════════════════════╝
   Solve2  ╔════════════════════════════════════════════════════╗
           ║z←Solve2 s;cs;⎕io                                   ║
           ║cs←0 328⍴0                                          ║
           ║⊣{⊣cs←cs⍪ GenRCD ⍵}¨{⍵,⍵⌷s}¨,⍳9 9                   ║
           ║z←2 ⎕DLX 0≠ 0 4↓cs                                  ║
           ║→(0=⍴z)/Unsolvable                                  ║
           ║→(2>⍴z)/JustOne                                     ║
           ║→TooMuch                                            ║
           ║JustOne: z←⊃z[1]                                    ║
           ║a←z ⋄ b←cs[;1 2 4]                                  ║
           ║⊣{⊣((2↑⍵)⌷s)←↑2↓⍵}⍤1 cs[z;1 2 4]                    ║
           ║z←s                                                 ║
           ║→0                                                  ║
           ║Unsolvable: z←"No Solutions" ⋄ →0                   ║
           ║TooMuch:                                            ║
           ║""                                                  ║
           ║"/-----------------------------------------------\\"║
           ║"| WARNING: Only displaying the first solution... |"║
           ║"\\-----------------------------------------------/"║
           ║""                                                  ║
           ║→JustOne                                            ║
           ╚════════════════════════════════════════════════════╝


      )erase Solve2
      df
   Display  
╔═══════════════════════════════════════════════════════════════════════════╗
            ║z←Display s                                                        
        ║
            ║z←1 43⍴"┏━━━━┯━━━┯━━━━┳━━━━┯━━━┯━━━━┳━━━━┯━━━┯━━━━┓"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┣━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━┫"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┣━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━┫"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┗━━━━┷━━━┷━━━━┻━━━━┷━━━┷━━━━┻━━━━┷━━━┷━━━━┛"               
        ║
            ║→(1=≡s)/Ok1                                                        
        ║
            ║s←⊃s                                                               
        ║
            ║Ok1: →(81=⍴,s)/Ok2                                                 
        ║
            ║z←∊("Display: argument with wrong ravel (") (⍴,s) ("). Should be 
81.") ⋄ →0║
            ║Ok2: →(' '=↑0⍴s←,s)/Chars                                          
        ║
            ║s←⍕,s                                                              
        ║
            ║s←(s≠' ')/s                                                        
        ║
            ║Chars: ((s='0')/s)←' '                                             
        ║
            ║(('8'=,z)/,z)←s                                                    
        ║
            
╚═══════════════════════════════════════════════════════════════════════════╝
   GenRCD  ╔══════════════════════╗
           ║z←GenRCD arg;R;C;D;⎕io║
           ║(R C D)←arg           ║
           ║z←0 328⍴0             ║
           ║→(D=0)/AllKit         ║
           ║z←RCD R C D           ║
           ║→0                    ║
           ║AllKit:               ║
           ║⊣{⊣z←z⍪RCD R C ⍵}¨⍳9  ║
           ║→0                    ║
           ╚══════════════════════╝
   RCD  ╔═════════════════════════════════════╗
        ║z←RCD arg;R;C;D;cel;row;col;box;B;⎕io║
        ║⎕io←1 ⋄ (R C D)←arg                  ║
        ║cel←row←col←box←81⍴0                 ║
        ║cel[1+((R-1)×9)+(C-1)]←D             ║
        ║row[1+((R-1)×9)+(D-1)]←D             ║
        ║col[1+((C-1)×9)+(D-1)]←D             ║
        ║B←1+(3×((⌊(R-1)÷3)))+(⌊(C-1)÷3)      ║
        ║box[1+((B-1)×9)+(D-1)]←D             ║
        ║z←R,C,B,D,cel,row,col,box            ║
        ╚═════════════════════════════════════╝
   Solve  ╔════════════════════════════════════════════════════╗
          ║z←Solve s;cs;⎕io                                    ║
          ║⎕io←1 ⋄ cs←0 328⍴0                                  ║
          ║⊣{⊣cs←cs⍪ GenRCD ⍵}¨{⍵,⍵⌷s}¨,⍳9 9                   ║
          ║z←2 ⎕DLX 0≠ 0 4↓cs                                  ║
          ║→(0=⍴z)/Unsolvable                                  ║
          ║→(2>⍴z)/JustOne                                     ║
          ║→TooMuch                                            ║
          ║JustOne: z←⊃z[1]                                    ║
          ║⊣{⊣((2↑⍵)⌷s)←↑2↓⍵}⍤1 cs[z;1 2 4]                    ║
          ║z←s ⋄ →0                                            ║
          ║Unsolvable: z←"No Solutions" ⋄ →0                   ║
          ║TooMuch:                                            ║
          ║""                                                  ║
          ║"/-----------------------------------------------\\"║
          ║"| WARNING: Only displaying the first solution... |"║
          ║"\\-----------------------------------------------/"║
          ║""                                                  ║
          ║→JustOne                                            ║
          ╚════════════════════════════════════════════════════╝


      )vars
Const   StarBurst   a   b   one     vide
      )erase a b
      )erase Const
      )wsid
IS Sudoku2
      )save


====================================================
SEGMENTATION FAULT

----------------------------------------
-- Stack trace at main.cc:85
----------------------------------------
0x7fcfc8842c30
0x449cb7
========================================
====================================================

Goodbye.
address@hidden:/home/xtian] $ apl

                    ______ _   __ __  __    ___     ____   __
                   / ____// | / // / / /   /   |   / __ \ / /
                  / / __ /  |/ // / / /   / /| |  / /_/ // /
                 / /_/ // /|  // /_/ /   / ___ | / ____// /___
                 \____//_/ |_/ \____/   /_/  |_|/_/    /_____/

                     Welcome to GNU APL version 1.6 / 813M

                Copyright (C) 2008-2016  Dr. Jürgen Sauermann
                       Banner by FIGlet: www.figlet.org

                This program comes with ABSOLUTELY NO WARRANTY;
                          for details run: apl --gpl.

     This program is free software, and you are welcome to redistribute it
         according to the GNU Public License (GPL) version 3 or later.

SAVED 2016-11-25 12:56:51 (GMT-5)
      )load Sudoku2
*** workspace file /home/xtian/workspaces/Sudoku2.xml
    seems to be incomplete (possibly caused by a crash on )SAVE?)
    You may still be able to )COPY from it.

NOT COPIED
      )copy Sudoku2
SAVED 2016-11-30 22:06:27 (GMT-5)
      df
   Display  
╔═══════════════════════════════════════════════════════════════════════════╗
            ║z←Display s                                                        
        ║
            ║z←1 43⍴"┏━━━━┯━━━┯━━━━┳━━━━┯━━━┯━━━━┳━━━━┯━━━┯━━━━┓"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┣━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━┫"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┣━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━┫"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┠────┼───┼────╂────┼───┼────╂────┼───┼────┨"               
        ║
            ║z←z⍪   "┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃  8 │ 8 │ 8  ┃"               
        ║
            ║z←z⍪   "┗━━━━┷━━━┷━━━━┻━━━━┷━━━┷━━━━┻━━━━┷━━━┷━━━━┛"               
        ║
            ║→(1=≡s)/Ok1                                                        
        ║
            ║s←⊃s                                                               
        ║
            ║Ok1: →(81=⍴,s)/Ok2                                                 
        ║
            ║z←∊("Display: argument with wrong ravel (") (⍴,s) ("). Should be 
81.") ⋄ →0║
            ║Ok2: →(' '=↑0⍴s←,s)/Chars                                          
        ║
            ║s←⍕,s                                                              
        ║
            ║s←(s≠' ')/s                                                        
        ║
            ║Chars: ((s='0')/s)←' '                                             
        ║
            ║(('8'=,z)/,z)←s                                                    
        ║
            
╚═══════════════════════════════════════════════════════════════════════════╝
   GenRCD  ╔══════════════════════╗
           ║z←GenRCD arg;R;C;D;⎕io║
           ║(R C D)←arg           ║
           ║z←0 328⍴0             ║
           ║→(D=0)/AllKit         ║
           ║z←RCD R C D           ║
           ║→0                    ║
           ║AllKit:               ║
           ║⊣{⊣z←z⍪RCD R C ⍵}¨⍳9  ║
           ║→0                    ║
           ╚══════════════════════╝
   RCD  ╔═════════════════════════════════════╗
        ║z←RCD arg;R;C;D;cel;row;col;box;B;⎕io║
        ║⎕io←1 ⋄ (R C D)←arg                  ║
        ║cel←row←col←box←81⍴0                 ║
        ║cel[1+((R-1)×9)+(C-1)]←D             ║
        ║row[1+((R-1)×9)+(D-1)]←D             ║
        ║col[1+((C-1)×9)+(D-1)]←D             ║
        ║B←1+(3×((⌊(R-1)÷3)))+(⌊(C-1)÷3)      ║
        ║box[1+((B-1)×9)+(D-1)]←D             ║
        ║z←R,C,B,D,cel,row,col,box            ║
        ╚═════════════════════════════════════╝
   Solve  ╔════════════════════════════════════════════════════╗
          ║z←Solve s;cs;⎕io                                    ║
          ║⎕io←1 ⋄ cs←0 328⍴0                                  ║
          ║⊣{⊣cs←cs⍪ GenRCD ⍵}¨{⍵,⍵⌷s}¨,⍳9 9                   ║
          ║z←2 ⎕DLX 0≠ 0 4↓cs                                  ║
          ║→(0=⍴z)/Unsolvable                                  ║
          ║→(2>⍴z)/JustOne                                     ║
          ║→TooMuch                                            ║
          ║JustOne: z←⊃z[1]                                    ║
          ║⊣{⊣((2↑⍵)⌷s)←↑2↓⍵}⍤1 cs[z;1 2 4]                    ║
          ║z←s ⋄ →0                                            ║
          ║Unsolvable: z←"No Solutions" ⋄ →0                   ║
          ║TooMuch:                                            ║
          ║""                                                  ║
          ║"/-----------------------------------------------\\"║
          ║"| WARNING: Only displaying the first solution... |"║
          ║"\\-----------------------------------------------/"║
          ║""                                                  ║
          ║→JustOne                                            ║
          ╚════════════════════════════════════════════════════╝


      )vars
StarBurst   one     vide
      Display Solve StarBurst
┏━━━━┯━━━┯━━━━┳━━━━┯━━━┯━━━━┳━━━━┯━━━┯━━━━┓
┃  9 │ 5 │ 7  ┃  1 │ 8 │ 4  ┃  3 │ 6 │ 2  ┃
┠────┼───┼────╂────┼───┼────╂────┼───┼────┨
┃  2 │ 8 │ 1  ┃  9 │ 6 │ 3  ┃  4 │ 7 │ 5  ┃
┠────┼───┼────╂────┼───┼────╂────┼───┼────┨
┃  6 │ 4 │ 3  ┃  7 │ 2 │ 5  ┃  1 │ 9 │ 8  ┃
┣━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━┫
┃  4 │ 9 │ 6  ┃  3 │ 5 │ 7  ┃  8 │ 2 │ 1  ┃
┠────┼───┼────╂────┼───┼────╂────┼───┼────┨
┃  8 │ 7 │ 5  ┃  4 │ 1 │ 2  ┃  9 │ 3 │ 6  ┃
┠────┼───┼────╂────┼───┼────╂────┼───┼────┨
┃  3 │ 1 │ 2  ┃  8 │ 9 │ 6  ┃  5 │ 4 │ 7  ┃
┣━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━┫
┃  7 │ 2 │ 9  ┃  5 │ 4 │ 8  ┃  6 │ 1 │ 3  ┃
┠────┼───┼────╂────┼───┼────╂────┼───┼────┨
┃  5 │ 3 │ 4  ┃  6 │ 7 │ 1  ┃  2 │ 8 │ 9  ┃
┠────┼───┼────╂────┼───┼────╂────┼───┼────┨
┃  1 │ 6 │ 8  ┃  2 │ 3 │ 9  ┃  7 │ 5 │ 4  ┃
┗━━━━┷━━━┷━━━━┻━━━━┷━━━┷━━━━┻━━━━┷━━━┷━━━━┛
      )vars
StarBurst   one     vide
      )fns
Display     GenRCD  RCD     Solve   df
      )save
NOT SAVED: THIS WS IS CLEAR WS
      )wsid Sudoku2
WAS CLEAR WS
      )save
2016-11-30  22:08:39 (GMT-5) Sudoku2

      Display Solve vide

/-----------------------------------------------\
| WARNING: Only displaying the first solution... |
\-----------------------------------------------/

┏━━━━┯━━━┯━━━━┳━━━━┯━━━┯━━━━┳━━━━┯━━━┯━━━━┓
┃  1 │ 2 │ 3  ┃  4 │ 5 │ 6  ┃  7 │ 8 │ 9  ┃
┠────┼───┼────╂────┼───┼────╂────┼───┼────┨
┃  7 │ 8 │ 9  ┃  1 │ 2 │ 3  ┃  4 │ 5 │ 6  ┃
┠────┼───┼────╂────┼───┼────╂────┼───┼────┨
┃  4 │ 5 │ 6  ┃  7 │ 8 │ 9  ┃  1 │ 2 │ 3  ┃
┣━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━┫
┃  3 │ 1 │ 2  ┃  8 │ 4 │ 5  ┃  9 │ 6 │ 7  ┃
┠────┼───┼────╂────┼───┼────╂────┼───┼────┨
┃  6 │ 9 │ 7  ┃  3 │ 1 │ 2  ┃  8 │ 4 │ 5  ┃
┠────┼───┼────╂────┼───┼────╂────┼───┼────┨
┃  8 │ 4 │ 5  ┃  6 │ 9 │ 7  ┃  3 │ 1 │ 2  ┃
┣━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━╋━━━━┿━━━┿━━━━┫
┃  2 │ 3 │ 1  ┃  5 │ 7 │ 4  ┃  6 │ 9 │ 8  ┃
┠────┼───┼────╂────┼───┼────╂────┼───┼────┨
┃  9 │ 6 │ 8  ┃  2 │ 3 │ 1  ┃  5 │ 7 │ 4  ┃
┠────┼───┼────╂────┼───┼────╂────┼───┼────┨
┃  5 │ 7 │ 4  ┃  9 │ 6 │ 8  ┃  2 │ 3 │ 1  ┃
┗━━━━┷━━━┷━━━━┻━━━━┷━━━┷━━━━┻━━━━┷━━━┷━━━━┛



reply via email to

[Prev in Thread] Current Thread [Next in Thread]