Day 111簡単な数独チェックプログラム

2026-06-15 JST ・ 難易度: 中級 ・ カテゴリ: 総合演習

Pythonコード

1def check_sudoku(board):2    # 行ごとのチェック3    for row in board:4        if sorted(row) != list(range(1, 10)):5            return False6    7    # 列ごとのチェック8    for col in range(9):9        column = [row[col] for row in board]10        if sorted(column) != list(range(1, 10)):11            return False12    13    # 3x3サブグリッドごとのチェック14    for i in range(0, 9, 3):15        for j in range(0, 9, 3):16            subgrid = [board[x][y] for x in range(i, i+3) for y in range(j, j+3)]17            if sorted(subgrid) != list(range(1, 10)):18                return False19    20    return True21    22# サンプル数独ボード23board = [24    [5, 3, 4, 6, 7, 8, 9, 1, 2],25    [6, 7, 2, 1, 9, 5, 3, 4, 8],26    [1, 9, 8, 3, 4, 2, 5, 6, 7],27    [8, 5, 9, 7, 6, 1, 4, 2, 3],28    [4, 2, 6, 8, 5, 3, 7, 9, 1],29    [7, 1, 3, 9, 2, 4, 8, 5, 6],30    [9, 6, 1, 5, 3, 7, 2, 8, 4],31    [2, 8, 7, 4, 1, 9, 6, 3, 5],32    [3, 4, 5, 2, 8, 6, 1, 7, 9]33]34    35print(check_sudoku(board))

解説

次に試してみよう