開発環境
- macOS Catalina - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Go (プログラミング言語)
入門Goプログラミング (Nathan Youngman(著)、Roger Peppé(著)、吉川 邦夫(監修, 翻訳)、翔泳社)のUNIT 6(ネズミの穴を下って)、LESSON 29(チャレンジ:数独のルール)の解答を求めてみる。
コード
package main
import (
"errors"
"fmt"
"math/rand"
"time"
)
var (
errCell = errors.New("不正なマス目")
errNum = errors.New("不正な数")
errCellDefault = errors.New("初期値が設定されている")
)
const (
rows, colums = 9, 9
)
type cell struct {
n int8
fixed bool
}
type sudoku [rows][colums]cell
func newSudoku(a [rows][colums]int8) sudoku {
t := [rows][colums]cell{}
for i, row := range a {
for j, m := range row {
t[i][j] = cell{n: m, fixed: m != 0}
}
}
return sudoku(t)
}
func validCell(row, col int8) bool {
return 1 <= row && row <= 9 && 1 <= col && col <= 9
}
func validNum(n int8) bool {
return 1 <= n && n <= 9
}
func (s sudoku) String() string {
t := ""
for _, row := range s {
t += "|"
for _, cell := range row {
t += fmt.Sprintf("%v|", cell.n)
}
t += "\n"
}
return t
}
func (s *sudoku) set(row, col, m int8) error {
if !validCell(row, col) {
return errCell
}
if !validNum(m) {
return errNum
}
row--
col--
if s[row][col].fixed {
return errCellDefault
}
for _, cell := range s[row] {
if cell.n == m {
return errors.New("同じ行に既にその数があります")
}
}
for _, row := range s {
if row[col].n == m {
return errors.New("同じ列に既にその数があります")
}
}
rowStart := ((row + 9) - row%3) % 9
colStart := ((col + 9) - col%3) % 9
for i := rowStart; i < rowStart+3; i++ {
for j := colStart; j < colStart+3; j++ {
if s[i][j].n == m {
return errors.New("同じブロックに既にその数があります")
}
}
}
s[row][col] = cell{n: m, fixed: false}
return nil
}
func (s *sudoku) clear(row, col int8) error {
if !validCell(row, col) {
return errCell
}
row--
col--
if s[row][col].fixed {
return errCellDefault
}
s[row][col].n = 0
return nil
}
func main() {
rand.Seed(time.Now().UnixNano())
s := newSudoku([rows][colums]int8{
{5, 3, 0, 0, 7, 0, 0, 0, 0},
{6, 0, 0, 1, 9, 5, 0, 0, 0},
{0, 9, 8, 0, 0, 0, 0, 6, 0},
{8, 0, 0, 0, 6, 0, 0, 0, 3},
{4, 0, 0, 8, 0, 3, 0, 0, 1},
{7, 0, 0, 0, 2, 0, 0, 0, 6},
{0, 6, 0, 0, 0, 0, 2, 8, 0},
{0, 0, 0, 4, 1, 9, 0, 0, 5},
{0, 0, 0, 0, 8, 0, 0, 7, 9},
})
fmt.Println(s)
i := 0
for i < 20 {
row := int8(rand.Intn(11))
col := int8(rand.Intn(11))
var err error
switch rand.Intn(2) {
case 0:
m := int8(rand.Intn(11))
fmt.Printf("書き込もうとしている数 %v ", m)
err = s.set(row, col, m)
default:
fmt.Print("消去 ")
err = s.clear(row, col)
}
fmt.Printf("マス目(%v, %v)\n", row, col)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(s)
i++
}
}
}
入出力結果(Zsh、PowerShell、Terminal)
% go run ./sudoku.go
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
消去 マス目(4, 5)
初期値が設定されている
書き込もうとしている数 5 マス目(0, 0)
不正なマス目
書き込もうとしている数 4 マス目(3, 7)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|4|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 3 マス目(2, 5)
初期値が設定されている
消去 マス目(4, 6)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|4|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
消去 マス目(7, 2)
初期値が設定されている
消去 マス目(1, 3)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|4|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 9 マス目(10, 0)
不正なマス目
書き込もうとしている数 5 マス目(7, 1)
同じ列に既にその数があります
消去 マス目(5, 9)
初期値が設定されている
消去 マス目(9, 1)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|4|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
消去 マス目(5, 7)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|4|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
消去 マス目(10, 10)
不正なマス目
消去 マス目(3, 10)
不正なマス目
消去 マス目(5, 9)
初期値が設定されている
消去 マス目(3, 9)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|4|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
消去 マス目(1, 10)
不正なマス目
書き込もうとしている数 6 マス目(6, 5)
初期値が設定されている
消去 マス目(7, 7)
初期値が設定されている
書き込もうとしている数 1 マス目(8, 8)
同じ行に既にその数があります
消去 マス目(0, 10)
不正なマス目
書き込もうとしている数 8 マス目(9, 3)
同じ行に既にその数があります
書き込もうとしている数 0 マス目(1, 10)
不正なマス目
消去 マス目(3, 1)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|4|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
消去 マス目(6, 4)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|4|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
消去 マス目(3, 4)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|4|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 7 マス目(4, 3)
同じブロックに既にその数があります
書き込もうとしている数 9 マス目(9, 1)
同じ行に既にその数があります
消去 マス目(6, 1)
初期値が設定されている
書き込もうとしている数 9 マス目(9, 8)
初期値が設定されている
書き込もうとしている数 2 マス目(3, 8)
初期値が設定されている
消去 マス目(3, 9)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|4|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 9 マス目(2, 3)
同じ行に既にその数があります
消去 マス目(7, 3)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|4|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
消去 マス目(10, 5)
不正なマス目
書き込もうとしている数 0 マス目(6, 7)
不正な数
書き込もうとしている数 9 マス目(9, 8)
初期値が設定されている
消去 マス目(6, 9)
初期値が設定されている
書き込もうとしている数 0 マス目(7, 6)
不正な数
消去 マス目(10, 4)
不正なマス目
書き込もうとしている数 0 マス目(2, 6)
不正な数
書き込もうとしている数 5 マス目(2, 8)
同じ行に既にその数があります
書き込もうとしている数 5 マス目(9, 8)
初期値が設定されている
書き込もうとしている数 8 マス目(2, 5)
初期値が設定されている
書き込もうとしている数 9 マス目(6, 8)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|4|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|9|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 8 マス目(8, 7)
同じブロックに既にその数があります
書き込もうとしている数 3 マス目(5, 5)
同じ行に既にその数があります
書き込もうとしている数 5 マス目(4, 2)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|4|6|0|
|8|5|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|9|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 6 マス目(8, 0)
不正なマス目
書き込もうとしている数 1 マス目(3, 5)
同じ列に既にその数があります
書き込もうとしている数 3 マス目(1, 10)
不正なマス目
書き込もうとしている数 8 マス目(4, 10)
不正なマス目
書き込もうとしている数 7 マス目(8, 5)
初期値が設定されている
消去 マス目(5, 5)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|4|6|0|
|8|5|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|9|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
消去 マス目(5, 2)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|4|6|0|
|8|5|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|9|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 3 マス目(6, 1)
初期値が設定されている
書き込もうとしている数 3 マス目(5, 6)
初期値が設定されている
書き込もうとしている数 5 マス目(0, 10)
不正なマス目
書き込もうとしている数 2 マス目(7, 9)
同じ行に既にその数があります
消去 マス目(1, 5)
初期値が設定されている
書き込もうとしている数 4 マス目(8, 6)
初期値が設定されている
書き込もうとしている数 3 マス目(4, 4)
同じ行に既にその数があります
書き込もうとしている数 9 マス目(3, 6)
同じ行に既にその数があります
消去 マス目(7, 5)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|4|6|0|
|8|5|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|9|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
消去 マス目(3, 6)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|4|6|0|
|8|5|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|9|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 9 マス目(9, 10)
不正なマス目
消去 マス目(4, 4)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|4|6|0|
|8|5|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|9|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 5 マス目(6, 9)
初期値が設定されている
書き込もうとしている数 5 マス目(3, 4)
同じブロックに既にその数があります
書き込もうとしている数 8 マス目(4, 7)
同じ行に既にその数があります
書き込もうとしている数 2 マス目(8, 7)
同じ列に既にその数があります
書き込もうとしている数 0 マス目(6, 8)
不正な数
書き込もうとしている数 6 マス目(8, 3)
同じブロックに既にその数があります
書き込もうとしている数 2 マス目(10, 5)
不正なマス目
書き込もうとしている数 1 マス目(2, 3)
同じ行に既にその数があります
消去 マス目(0, 8)
不正なマス目
消去 マス目(8, 0)
不正なマス目
書き込もうとしている数 7 マス目(2, 8)
同じ列に既にその数があります
書き込もうとしている数 7 マス目(10, 5)
不正なマス目
消去 マス目(0, 1)
不正なマス目
消去 マス目(10, 1)
不正なマス目
消去 マス目(3, 10)
不正なマス目
書き込もうとしている数 4 マス目(2, 1)
初期値が設定されている
書き込もうとしている数 4 マス目(8, 1)
同じ行に既にその数があります
消去 マス目(10, 2)
不正なマス目
消去 マス目(1, 4)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|4|6|0|
|8|5|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|9|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
消去 マス目(6, 9)
初期値が設定されている
書き込もうとしている数 4 マス目(7, 7)
初期値が設定されている
書き込もうとしている数 4 マス目(5, 5)
同じ行に既にその数があります
書き込もうとしている数 2 マス目(1, 4)
|5|3|0|2|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|4|6|0|
|8|5|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|9|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
% go run ./sudoku.go
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 9 マス目(5, 6)
初期値が設定されている
書き込もうとしている数 7 マス目(9, 6)
同じ行に既にその数があります
書き込もうとしている数 9 マス目(8, 6)
初期値が設定されている
消去 マス目(6, 8)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
消去 マス目(7, 7)
初期値が設定されている
消去 マス目(7, 8)
初期値が設定されている
書き込もうとしている数 10 マス目(10, 10)
不正なマス目
消去 マス目(4, 4)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
消去 マス目(5, 8)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
消去 マス目(9, 1)
|5|3|0|0|7|0|0|0|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 6 マス目(1, 2)
初期値が設定されている
消去 マス目(3, 3)
初期値が設定されている
書き込もうとしている数 2 マス目(2, 5)
初期値が設定されている
書き込もうとしている数 2 マス目(1, 8)
|5|3|0|0|7|0|0|2|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 6 マス目(3, 8)
初期値が設定されている
消去 マス目(1, 4)
|5|3|0|0|7|0|0|2|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 4 マス目(2, 5)
初期値が設定されている
消去 マス目(2, 1)
初期値が設定されている
書き込もうとしている数 8 マス目(8, 0)
不正なマス目
書き込もうとしている数 9 マス目(9, 9)
初期値が設定されている
消去 マス目(3, 5)
|5|3|0|0|7|0|0|2|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
消去 マス目(2, 0)
不正なマス目
消去 マス目(6, 7)
|5|3|0|0|7|0|0|2|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|0|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 0 マス目(9, 5)
不正な数
書き込もうとしている数 9 マス目(9, 0)
不正なマス目
消去 マス目(10, 5)
不正なマス目
消去 マス目(9, 9)
初期値が設定されている
書き込もうとしている数 4 マス目(4, 5)
初期値が設定されている
書き込もうとしている数 1 マス目(6, 6)
|5|3|0|0|7|0|0|2|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|1|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 7 マス目(10, 7)
不正なマス目
消去 マス目(5, 4)
初期値が設定されている
消去 マス目(1, 7)
|5|3|0|0|7|0|0|2|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|1|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
消去 マス目(2, 10)
不正なマス目
書き込もうとしている数 1 マス目(5, 6)
初期値が設定されている
消去 マス目(5, 7)
|5|3|0|0|7|0|0|2|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|1|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 5 マス目(1, 0)
不正なマス目
消去 マス目(10, 2)
不正なマス目
消去 マス目(1, 7)
|5|3|0|0|7|0|0|2|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|1|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|0|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 3 マス目(8, 3)
|5|3|0|0|7|0|0|2|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|1|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|3|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
消去 マス目(3, 1)
|5|3|0|0|7|0|0|2|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|1|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|3|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 10 マス目(2, 6)
不正な数
消去 マス目(1, 1)
初期値が設定されている
書き込もうとしている数 6 マス目(9, 3)
同じブロックに既にその数があります
書き込もうとしている数 0 マス目(3, 8)
不正な数
消去 マス目(9, 5)
初期値が設定されている
書き込もうとしている数 5 マス目(10, 7)
不正なマス目
消去 マス目(2, 0)
不正なマス目
書き込もうとしている数 7 マス目(5, 5)
同じ列に既にその数があります
消去 マス目(5, 10)
不正なマス目
消去 マス目(8, 4)
初期値が設定されている
書き込もうとしている数 8 マス目(3, 3)
初期値が設定されている
書き込もうとしている数 4 マス目(7, 5)
同じブロックに既にその数があります
消去 マス目(0, 8)
不正なマス目
消去 マス目(10, 6)
不正なマス目
消去 マス目(4, 2)
|5|3|0|0|7|0|0|2|0|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|1|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|3|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
消去 マス目(3, 3)
初期値が設定されている
書き込もうとしている数 4 マス目(1, 9)
|5|3|0|0|7|0|0|2|4|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|1|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|3|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 0 マス目(0, 9)
不正なマス目
書き込もうとしている数 6 マス目(10, 2)
不正なマス目
書き込もうとしている数 3 マス目(6, 10)
不正なマス目
書き込もうとしている数 5 マス目(7, 6)
同じ列に既にその数があります
消去 マス目(9, 6)
|5|3|0|0|7|0|0|2|4|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|1|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|3|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 0 マス目(5, 8)
不正な数
書き込もうとしている数 10 マス目(10, 0)
不正なマス目
書き込もうとしている数 3 マス目(4, 10)
不正なマス目
消去 マス目(3, 7)
|5|3|0|0|7|0|0|2|4|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|1|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|3|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
消去 マス目(3, 9)
|5|3|0|0|7|0|0|2|4|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|1|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|3|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
書き込もうとしている数 8 マス目(3, 4)
同じ行に既にその数があります
書き込もうとしている数 6 マス目(4, 10)
不正なマス目
書き込もうとしている数 9 マス目(10, 10)
不正なマス目
書き込もうとしている数 8 マス目(7, 4)
同じ行に既にその数があります
書き込もうとしている数 8 マス目(4, 3)
同じ行に既にその数があります
書き込もうとしている数 0 マス目(7, 0)
不正なマス目
書き込もうとしている数 10 マス目(8, 6)
不正な数
消去 マス目(1, 10)
不正なマス目
消去 マス目(6, 10)
不正なマス目
消去 マス目(2, 4)
初期値が設定されている
書き込もうとしている数 4 マス目(9, 6)
同じブロックに既にその数があります
書き込もうとしている数 6 マス目(9, 1)
同じ列に既にその数があります
書き込もうとしている数 4 マス目(3, 8)
初期値が設定されている
書き込もうとしている数 10 マス目(1, 0)
不正なマス目
消去 マス目(8, 0)
不正なマス目
消去 マス目(6, 3)
|5|3|0|0|7|0|0|2|4|
|6|0|0|1|9|5|0|0|0|
|0|9|8|0|0|0|0|6|0|
|8|0|0|0|6|0|0|0|3|
|4|0|0|8|0|3|0|0|1|
|7|0|0|0|2|1|0|0|6|
|0|6|0|0|0|0|2|8|0|
|0|0|3|4|1|9|0|0|5|
|0|0|0|0|8|0|0|7|9|
%
0 コメント:
コメントを投稿