GIGAZINEã«æ°å¦ã®ã¨ãã¹ãã¼ãã3ã¶æããã¦ä½æãã「ä¸çä¸é£ããæ°ç¬」ãªããã®ããã£ãã®ã§、å³å¸ã§Pythonã¯ã³ã©ã¤ãã¼(ä¸è¡ããã°ã©ã )ãä½ã£ãã1ç§ãããã解ãã。åé¡ãä½ãã®ã¯å¤§å¤ã§ã解æããã°ã©ã ã§ä¸ç¬ã¨ã¯åã。
python -c "import sys;L=[];S=lambda D:(0in D)and[L.append(D.index(0)),[(D.__setitem__(L[-1],i),S(D),D.__setitem__(L.pop(),0))for i in set(range(1,10))-set(D[L[-1]/9*9:L[-1]/9*9+9]+D[L[-1]%9:81:9]+[d for n in(0,1,2)for d in D[L[-1]/27*27+L[-1]%9/3*3+n*9:L[-1]/27*27+L[-1]%9/3*3+n*9+3]])]]or([sys.stdout.write('%d'%d+('\n'if i%9==8 else' '))for i,d in enumerate(D)],sys.exit());S([int(c)if c!='.'else 0for c in'..53.....8......2..7..1.5..4....53...1..7...6..32...8..6.5....9..4....3......97..'])"
ã³ã¼ãã®æå¾ã®ãªã¹ãå ã®æååã9è¡9åã®æ°ç¬ã®åé¡ã¨ãªã£ã¦ãã¦、ä¸ã®è¡ã®æ°åããé ã«å ¥ã£ã¦ãã。æªç¥ã®é¨åã¯ããã(.)ã§è¡¨ãã¦ãã。ä¸è¨ã®ã³ã¼ãã§ã¯GIGAZINEã®åé¡ã¨ãªã£ã¦ãã。
å ã¿ã«Pythonã«ãããã£ã¨å¹çã®è¯ãã¢ã«ã´ãªãºã ã«ã¤ãã¦ã¯Solving Every Sudoku Puzzleãåèã«ãªããã。
以ä¸、ã¯ã³ã©ã¤ãã¼ã«ããåºåçµæ。
1 4 5 3 2 7 6 9 8 8 3 9 6 5 4 1 2 7 6 7 2 9 1 8 5 4 3 4 9 6 1 8 5 3 7 2 2 1 8 4 7 3 9 5 6 7 5 3 2 9 6 4 8 1 3 6 7 5 4 2 8 1 9 9 8 4 7 6 1 2 3 5 5 2 1 8 3 9 7 6 4
python -c "import sys;L=[];S=lambda D:(0in D)and[L.append(D.index(0)),[(D.__setitem__(L[-1],i),S(D),D.__setitem__(L.pop(),0))for i in set(range(1,10))-set(D[L[-1]/9*9:L[-1]/9*9+9]+D[L[-1]%9:81:9]+[d for n in(0,1,2)for d in D[L[-1]/27*27+L[-1]%9/3*3+n*9:L[-1]/27*27+L[-1]%9/3*3+n*9+3]])]]or([sys.stdout.write('%d'%d+('\n'if i%9==8 else' '))for i,d in enumerate(D)],sys.exit());S([int(c)if c!='.'else 0for c in'..53.....8......2..7..1.5..4....53...1..7...6..32...8..6.5....9..4....3......97..'])"
ã³ã¼ãã®æå¾ã®ãªã¹ãå ã®æååã9è¡9åã®æ°ç¬ã®åé¡ã¨ãªã£ã¦ãã¦、ä¸ã®è¡ã®æ°åããé ã«å ¥ã£ã¦ãã。æªç¥ã®é¨åã¯ããã(.)ã§è¡¨ãã¦ãã。ä¸è¨ã®ã³ã¼ãã§ã¯GIGAZINEã®åé¡ã¨ãªã£ã¦ãã。
å ã¿ã«Pythonã«ãããã£ã¨å¹çã®è¯ãã¢ã«ã´ãªãºã ã«ã¤ãã¦ã¯Solving Every Sudoku Puzzleãåèã«ãªããã。
以ä¸、ã¯ã³ã©ã¤ãã¼ã«ããåºåçµæ。
1 4 5 3 2 7 6 9 8 8 3 9 6 5 4 1 2 7 6 7 2 9 1 8 5 4 3 4 9 6 1 8 5 3 7 2 2 1 8 4 7 3 9 5 6 7 5 3 2 9 6 4 8 1 3 6 7 5 4 2 8 1 9 9 8 4 7 6 1 2 3 5 5 2 1 8 3 9 7 6 4
ã³ã¡ã³ã
ããããªã。
lambdaã¯ä½¿ã£ããã¨ãããã©[sys.stdout.write('%d'%d+('\n'if i%9==8 else' '))for i,d in enumerate(D)]
ã®for以å¾ã¯ã©ãåããã§ãã?
ã£ã¦é¨åçã«èª¬æãèãã¦ããããããªãã。
å ¨é¨ããããªãã§ã。
ãªããã®éã«èª¬æãã¦æ¬²ããã§ããã©・・・。
9×9ãªãã§ãããï½
ã§ããã°è§£èª¬ãã¦ã»ããã§ã…