2.5 1.11 phòng thí nghiệm Sudoku Python
Ngày đăng:
21/01/2023
Trả lời:
0
Lượt xem:
70
Một chương trình Python đơn giản tạo và giải các câu đố Sudoku m x n Show Cài đặt# Python 2 pip install py-sudoku # Python 3 pip3 install py-sudoku Cách sử dụngsử dụng cơ bảnfrom sudoku import Sudoku # Initializes a Sudoku puzzle with 3 x 3 sub-grid and # generates a puzzle with half of the cells empty puzzle = Sudoku(3).difficulty(0.5) puzzle.show() # +-------+-------+-------+ # | 4 1 | 3 | 7 6 | # | 9 3 | 7 | 4 1 | # | 2 | 1 4 | 8 3 | # +-------+-------+-------+ # | 9 5 8 | | 7 | # | 3 4 | 7 | 1 | # | 7 2 | 8 9 3 | 5 4 | # +-------+-------+-------+ # | 8 | 2 | 3 7 4 | # | 4 | | 1 9 5 | # | | 5 | 6 | # +-------+-------+-------+ solution = puzzle.solve() solution.show() # +-------+-------+-------+ # | 4 1 5 | 3 8 9 | 7 6 2 | # | 8 9 3 | 6 7 2 | 4 5 1 | # | 2 6 7 | 1 4 5 | 9 8 3 | # +-------+-------+-------+ # | 9 5 8 | 4 1 6 | 2 3 7 | # | 3 4 6 | 5 2 7 | 8 1 9 | # | 1 7 2 | 8 9 3 | 5 4 6 | # +-------+-------+-------+ # | 5 8 9 | 2 6 1 | 3 7 4 | # | 6 2 4 | 7 3 8 | 1 9 5 | # | 7 3 1 | 9 5 4 | 6 2 8 | # +-------+-------+-------+ solution.board # [[4, 1, 5, 3, 8, 9, 7, 6, 2], # [8, 9, 3, 6, 7, 2, 4, 5, 1], # [2, 6, 7, 1, 4, 5, 9, 8, 3], # [9, 5, 8, 4, 1, 6, 2, 3, 7], # [3, 4, 6, 5, 2, 7, 8, 1, 9], # [1, 7, 2, 8, 9, 3, 5, 4, 6], # [5, 8, 9, 2, 6, 1, 3, 7, 4], # [6, 2, 4, 7, 3, 8, 1, 9, 5], # [7, 3, 1, 9, 5, 4, 6, 2, 8]] solution.width # 3 solution.height # 3 Tạo câu đốm x n câu đố hình chữ nhật có thể được khởi tạo bằng cách sử dụng hàm tạo from sudoku import Sudoku # Initializes a Sudoku puzzle with 3 x 3 sub-grid and # generates a puzzle with half of the cells empty puzzle = Sudoku(3).difficulty(0.5) puzzle.show() # +-------+-------+-------+ # | 4 1 | 3 | 7 6 | # | 9 3 | 7 | 4 1 | # | 2 | 1 4 | 8 3 | # +-------+-------+-------+ # | 9 5 8 | | 7 | # | 3 4 | 7 | 1 | # | 7 2 | 8 9 3 | 5 4 | # +-------+-------+-------+ # | 8 | 2 | 3 7 4 | # | 4 | | 1 9 5 | # | | 5 | 6 | # +-------+-------+-------+ solution = puzzle.solve() solution.show() # +-------+-------+-------+ # | 4 1 5 | 3 8 9 | 7 6 2 | # | 8 9 3 | 6 7 2 | 4 5 1 | # | 2 6 7 | 1 4 5 | 9 8 3 | # +-------+-------+-------+ # | 9 5 8 | 4 1 6 | 2 3 7 | # | 3 4 6 | 5 2 7 | 8 1 9 | # | 1 7 2 | 8 9 3 | 5 4 6 | # +-------+-------+-------+ # | 5 8 9 | 2 6 1 | 3 7 4 | # | 6 2 4 | 7 3 8 | 1 9 5 | # | 7 3 1 | 9 5 4 | 6 2 8 | # +-------+-------+-------+ solution.board # [[4, 1, 5, 3, 8, 9, 7, 6, 2], # [8, 9, 3, 6, 7, 2, 4, 5, 1], # [2, 6, 7, 1, 4, 5, 9, 8, 3], # [9, 5, 8, 4, 1, 6, 2, 3, 7], # [3, 4, 6, 5, 2, 7, 8, 1, 9], # [1, 7, 2, 8, 9, 3, 5, 4, 6], # [5, 8, 9, 2, 6, 1, 3, 7, 4], # [6, 2, 4, 7, 3, 8, 1, 9, 5], # [7, 3, 1, 9, 5, 4, 6, 2, 8]] solution.width # 3 solution.height # 30 # Initializes a 3 x 5 puzzle puzzle = Sudoku(3, 5) # Initializes a 4 x 4 puzzle puzzle = Sudoku(4) puzzle = Sudoku(4, 4) Sử dụng from sudoku import Sudoku # Initializes a Sudoku puzzle with 3 x 3 sub-grid and # generates a puzzle with half of the cells empty puzzle = Sudoku(3).difficulty(0.5) puzzle.show() # +-------+-------+-------+ # | 4 1 | 3 | 7 6 | # | 9 3 | 7 | 4 1 | # | 2 | 1 4 | 8 3 | # +-------+-------+-------+ # | 9 5 8 | | 7 | # | 3 4 | 7 | 1 | # | 7 2 | 8 9 3 | 5 4 | # +-------+-------+-------+ # | 8 | 2 | 3 7 4 | # | 4 | | 1 9 5 | # | | 5 | 6 | # +-------+-------+-------+ solution = puzzle.solve() solution.show() # +-------+-------+-------+ # | 4 1 5 | 3 8 9 | 7 6 2 | # | 8 9 3 | 6 7 2 | 4 5 1 | # | 2 6 7 | 1 4 5 | 9 8 3 | # +-------+-------+-------+ # | 9 5 8 | 4 1 6 | 2 3 7 | # | 3 4 6 | 5 2 7 | 8 1 9 | # | 1 7 2 | 8 9 3 | 5 4 6 | # +-------+-------+-------+ # | 5 8 9 | 2 6 1 | 3 7 4 | # | 6 2 4 | 7 3 8 | 1 9 5 | # | 7 3 1 | 9 5 4 | 6 2 8 | # +-------+-------+-------+ solution.board # [[4, 1, 5, 3, 8, 9, 7, 6, 2], # [8, 9, 3, 6, 7, 2, 4, 5, 1], # [2, 6, 7, 1, 4, 5, 9, 8, 3], # [9, 5, 8, 4, 1, 6, 2, 3, 7], # [3, 4, 6, 5, 2, 7, 8, 1, 9], # [1, 7, 2, 8, 9, 3, 5, 4, 6], # [5, 8, 9, 2, 6, 1, 3, 7, 4], # [6, 2, 4, 7, 3, 8, 1, 9, 5], # [7, 3, 1, 9, 5, 4, 6, 2, 8]] solution.width # 3 solution.height # 31 để giải câu đố hoặc from sudoku import Sudoku # Initializes a Sudoku puzzle with 3 x 3 sub-grid and # generates a puzzle with half of the cells empty puzzle = Sudoku(3).difficulty(0.5) puzzle.show() # +-------+-------+-------+ # | 4 1 | 3 | 7 6 | # | 9 3 | 7 | 4 1 | # | 2 | 1 4 | 8 3 | # +-------+-------+-------+ # | 9 5 8 | | 7 | # | 3 4 | 7 | 1 | # | 7 2 | 8 9 3 | 5 4 | # +-------+-------+-------+ # | 8 | 2 | 3 7 4 | # | 4 | | 1 9 5 | # | | 5 | 6 | # +-------+-------+-------+ solution = puzzle.solve() solution.show() # +-------+-------+-------+ # | 4 1 5 | 3 8 9 | 7 6 2 | # | 8 9 3 | 6 7 2 | 4 5 1 | # | 2 6 7 | 1 4 5 | 9 8 3 | # +-------+-------+-------+ # | 9 5 8 | 4 1 6 | 2 3 7 | # | 3 4 6 | 5 2 7 | 8 1 9 | # | 1 7 2 | 8 9 3 | 5 4 6 | # +-------+-------+-------+ # | 5 8 9 | 2 6 1 | 3 7 4 | # | 6 2 4 | 7 3 8 | 1 9 5 | # | 7 3 1 | 9 5 4 | 6 2 8 | # +-------+-------+-------+ solution.board # [[4, 1, 5, 3, 8, 9, 7, 6, 2], # [8, 9, 3, 6, 7, 2, 4, 5, 1], # [2, 6, 7, 1, 4, 5, 9, 8, 3], # [9, 5, 8, 4, 1, 6, 2, 3, 7], # [3, 4, 6, 5, 2, 7, 8, 1, 9], # [1, 7, 2, 8, 9, 3, 5, 4, 6], # [5, 8, 9, 2, 6, 1, 3, 7, 4], # [6, 2, 4, 7, 3, 8, 1, 9, 5], # [7, 3, 1, 9, 5, 4, 6, 2, 8]] solution.width # 3 solution.height # 32 để tạo vấn đề # Create a 3 x 5 sub-grid problem with 0.4 difficulty (40% of cells empty) puzzle = Sudoku(3, 5).difficulty(0.4) # Create a solved 4 x 4 problem puzzle = Sudoku(4).solve() Hiển thị câu đốsolution = Sudoku(5, 3).solve() # Shows the puzzle only solution.show() # +----------------+----------------+----------------+ # | 09 10 11 04 06 | 05 01 03 12 13 | 08 14 15 02 07 | # | 03 05 07 08 01 | 02 14 15 09 04 | 06 10 11 12 13 | # | 12 02 13 14 15 | 07 10 06 11 08 | 01 03 04 05 09 | # +----------------+----------------+----------------+ # | 13 14 06 11 08 | 15 07 09 02 12 | 10 01 05 03 04 | # | 10 03 15 05 02 | 13 04 08 14 01 | 12 09 07 11 06 | # | 01 07 04 09 12 | 03 05 10 06 11 | 13 02 08 15 14 | # +----------------+----------------+----------------+ # | 07 13 08 15 05 | 12 11 04 10 03 | 14 06 09 01 02 | # | 06 01 12 03 09 | 08 02 07 15 14 | 11 13 10 04 05 | # | 04 11 10 02 14 | 06 09 01 13 05 | 15 08 12 07 03 | # +----------------+----------------+----------------+ # | 08 12 02 06 10 | 01 13 11 05 07 | 03 04 14 09 15 | # | 05 15 09 13 11 | 14 03 12 04 10 | 02 07 06 08 01 | # | 14 04 01 07 03 | 09 06 02 08 15 | 05 11 13 10 12 | # +----------------+----------------+----------------+ # | 11 09 03 12 13 | 10 15 14 07 02 | 04 05 01 06 08 | # | 15 06 14 01 04 | 11 08 05 03 09 | 07 12 02 13 10 | # | 02 08 05 10 07 | 04 12 13 01 06 | 09 15 03 14 11 | # +----------------+----------------+----------------+ # Use print or show_full to display more information print(solution) solution.show_full() # --------------------------- # 15x15 (5x3) SUDOKU PUZZLE # Difficulty: SOLVED # --------------------------- # +----------------+----------------+----------------+ # | 09 10 11 04 06 | 05 01 03 12 13 | 08 14 15 02 07 | # | 03 05 07 08 01 | 02 14 15 09 04 | 06 10 11 12 13 | # | 12 02 13 14 15 | 07 10 06 11 08 | 01 03 04 05 09 | # +----------------+----------------+----------------+ # | 13 14 06 11 08 | 15 07 09 02 12 | 10 01 05 03 04 | # | 10 03 15 05 02 | 13 04 08 14 01 | 12 09 07 11 06 | # | 01 07 04 09 12 | 03 05 10 06 11 | 13 02 08 15 14 | # +----------------+----------------+----------------+ # | 07 13 08 15 05 | 12 11 04 10 03 | 14 06 09 01 02 | # | 06 01 12 03 09 | 08 02 07 15 14 | 11 13 10 04 05 | # | 04 11 10 02 14 | 06 09 01 13 05 | 15 08 12 07 03 | # +----------------+----------------+----------------+ # | 08 12 02 06 10 | 01 13 11 05 07 | 03 04 14 09 15 | # | 05 15 09 13 11 | 14 03 12 04 10 | 02 07 06 08 01 | # | 14 04 01 07 03 | 09 06 02 08 15 | 05 11 13 10 12 | # +----------------+----------------+----------------+ # | 11 09 03 12 13 | 10 15 14 07 02 | 04 05 01 06 08 | # | 15 06 14 01 04 | 11 08 05 03 09 | 07 12 02 13 10 | # | 02 08 05 10 07 | 04 12 13 01 06 | 09 15 03 14 11 | # +----------------+----------------+----------------+ Hạt giốngCác vấn đề có thể được tạo ra với một hạt giống nhất định bảng nhập khẩuBảng câu đố cũng có thể được nhập board = [ [0,0,7,0,4,0,0,0,0], [0,0,0,0,0,8,0,0,6], [0,4,1,0,0,0,9,0,0], [0,0,0,0,0,0,1,7,0], [0,0,0,0,0,6,0,0,0], [0,0,8,7,0,0,2,0,0], [3,0,0,0,0,0,0,0,0], [0,0,0,1,2,0,0,0,0], [8,6,0,0,7,0,0,0,5] ] puzzle = Sudoku(3, 3, board=board) print(puzzle) # --------------------------- # 9x9 (3x3) SUDOKU PUZZLE # Difficulty: 0.74 # --------------------------- # +-------+-------+-------+ # | 7 | 4 | | # | | 8 | 6 | # | 4 1 | | 9 | # +-------+-------+-------+ # | | | 1 7 | # | | 6 | | # | 8 | 7 | 2 | # +-------+-------+-------+ # | 3 | | | # | | 1 2 | | # | 8 6 | 7 0 | 5 | # +-------+-------+-------+ puzzle.solve().show_full() # --------------------------- # 9x9 (3x3) SUDOKU PUZZLE # Difficulty: SOLVED # --------------------------- # +-------+-------+-------+ # | 9 8 7 | 6 4 2 | 5 3 1 | # | 2 3 5 | 9 1 8 | 7 4 6 | # | 6 4 1 | 5 3 7 | 9 8 2 | # +-------+-------+-------+ # | 5 2 6 | 3 8 4 | 1 7 9 | # | 1 7 3 | 2 9 6 | 8 5 4 | # | 4 9 8 | 7 5 1 | 2 6 3 | # +-------+-------+-------+ # | 3 1 9 | 8 6 5 | 4 2 7 | # | 7 5 4 | 1 2 3 | 6 9 8 | # | 8 6 2 | 4 7 9 | 3 1 5 | # +-------+-------+-------+ bảng không hợp lệCác bảng không hợp lệ đưa ra lỗi khi cố gắng giải quyết board = [ [0,0,7,0,4,0,0,0,0], [0,0,0,0,0,8,0,0,6], [0,4,1,0,0,0,9,0,0], [0,0,0,0,0,0,1,7,0], [0,0,0,0,0,6,0,0,0], [0,0,8,7,0,0,2,0,0], [3,0,0,0,0,0,0,0,0], [0,0,0,1,2,0,0,0,0], [8,6,0,0,7,6,0,0,5] ] puzzle = Sudoku(3, 3, board=board) puzzle.show_full() # --------------------------- # 9x9 (3x3) SUDOKU PUZZLE # Difficulty: 0.74 # --------------------------- # +-------+-------+-------+ # | 7 | 4 | | # | | 8 | 6 | # | 4 1 | | 9 | # +-------+-------+-------+ # | | | 1 7 | # | | 6 | | # | 8 | 7 | 2 | # +-------+-------+-------+ # | 3 | | | # | | 1 2 | | # | 8 6 | 7 6 | 5 | # +-------+-------+-------+ puzzle.solve().show_full() # --------------------------- # 9x9 (3x3) SUDOKU PUZZLE # Difficulty: INVALID PUZZLE (GIVEN PUZZLE HAS NO SOLUTION) # --------------------------- # +-------+-------+-------+ # | | | | # | | | | # | | | | # +-------+-------+-------+ # | | | | # | | | | # | | | | # +-------+-------+-------+ # | | | | # | | | | # | | | | # +-------+-------+-------+ Nếu bạn muốn đưa ra lỗi from sudoku import Sudoku # Initializes a Sudoku puzzle with 3 x 3 sub-grid and # generates a puzzle with half of the cells empty puzzle = Sudoku(3).difficulty(0.5) puzzle.show() # +-------+-------+-------+ # | 4 1 | 3 | 7 6 | # | 9 3 | 7 | 4 1 | # | 2 | 1 4 | 8 3 | # +-------+-------+-------+ # | 9 5 8 | | 7 | # | 3 4 | 7 | 1 | # | 7 2 | 8 9 3 | 5 4 | # +-------+-------+-------+ # | 8 | 2 | 3 7 4 | # | 4 | | 1 9 5 | # | | 5 | 6 | # +-------+-------+-------+ solution = puzzle.solve() solution.show() # +-------+-------+-------+ # | 4 1 5 | 3 8 9 | 7 6 2 | # | 8 9 3 | 6 7 2 | 4 5 1 | # | 2 6 7 | 1 4 5 | 9 8 3 | # +-------+-------+-------+ # | 9 5 8 | 4 1 6 | 2 3 7 | # | 3 4 6 | 5 2 7 | 8 1 9 | # | 1 7 2 | 8 9 3 | 5 4 6 | # +-------+-------+-------+ # | 5 8 9 | 2 6 1 | 3 7 4 | # | 6 2 4 | 7 3 8 | 1 9 5 | # | 7 3 1 | 9 5 4 | 6 2 8 | # +-------+-------+-------+ solution.board # [[4, 1, 5, 3, 8, 9, 7, 6, 2], # [8, 9, 3, 6, 7, 2, 4, 5, 1], # [2, 6, 7, 1, 4, 5, 9, 8, 3], # [9, 5, 8, 4, 1, 6, 2, 3, 7], # [3, 4, 6, 5, 2, 7, 8, 1, 9], # [1, 7, 2, 8, 9, 3, 5, 4, 6], # [5, 8, 9, 2, 6, 1, 3, 7, 4], # [6, 2, 4, 7, 3, 8, 1, 9, 5], # [7, 3, 1, 9, 5, 4, 6, 2, 8]] solution.width # 3 solution.height # 33 khi bảng không hợp lệ, hãy chuyển tham số from sudoku import Sudoku # Initializes a Sudoku puzzle with 3 x 3 sub-grid and # generates a puzzle with half of the cells empty puzzle = Sudoku(3).difficulty(0.5) puzzle.show() # +-------+-------+-------+ # | 4 1 | 3 | 7 6 | # | 9 3 | 7 | 4 1 | # | 2 | 1 4 | 8 3 | # +-------+-------+-------+ # | 9 5 8 | | 7 | # | 3 4 | 7 | 1 | # | 7 2 | 8 9 3 | 5 4 | # +-------+-------+-------+ # | 8 | 2 | 3 7 4 | # | 4 | | 1 9 5 | # | | 5 | 6 | # +-------+-------+-------+ solution = puzzle.solve() solution.show() # +-------+-------+-------+ # | 4 1 5 | 3 8 9 | 7 6 2 | # | 8 9 3 | 6 7 2 | 4 5 1 | # | 2 6 7 | 1 4 5 | 9 8 3 | # +-------+-------+-------+ # | 9 5 8 | 4 1 6 | 2 3 7 | # | 3 4 6 | 5 2 7 | 8 1 9 | # | 1 7 2 | 8 9 3 | 5 4 6 | # +-------+-------+-------+ # | 5 8 9 | 2 6 1 | 3 7 4 | # | 6 2 4 | 7 3 8 | 1 9 5 | # | 7 3 1 | 9 5 4 | 6 2 8 | # +-------+-------+-------+ solution.board # [[4, 1, 5, 3, 8, 9, 7, 6, 2], # [8, 9, 3, 6, 7, 2, 4, 5, 1], # [2, 6, 7, 1, 4, 5, 9, 8, 3], # [9, 5, 8, 4, 1, 6, 2, 3, 7], # [3, 4, 6, 5, 2, 7, 8, 1, 9], # [1, 7, 2, 8, 9, 3, 5, 4, 6], # [5, 8, 9, 2, 6, 1, 3, 7, 4], # [6, 2, 4, 7, 3, 8, 1, 9, 5], # [7, 3, 1, 9, 5, 4, 6, 2, 8]] solution.width # 3 solution.height # 34 puzzle.solve(raising=True) Làm cách nào để tạo Sudoku bằng Python?Hãy bắt đầu phát triển trò chơi sudoku trên python. . Cài đặt mô-đun Pygame Khởi tạo cửa sổ trò chơi sudoku và các biến Chức năng đánh dấu ô đã chọn Chức năng vẽ đường để tạo lưới sudoku Hàm điền giá trị vào ô Chức năng báo lỗi khi nhập sai giá trị Làm thế nào để giải Sudoku theo chương trình?Thuật toán hiện tại của bạn. . Đối với mỗi ô trống trong lưới Sử dụng trạng thái hiện tại của lưới Đoán từng số từ 1 đến 9 Xác minh dự đoán hiện tại là một giải pháp khả thi trong cột, hàng và hộp Cập nhật trạng thái lưới với giải pháp khả thi Tiếp tục thử từng số đến 9 Làm cách nào để in Sudoku bằng Python?Hãy làm đi. . Bước 1. Tạo và in bảng. . Bước 2. Viết hàm kiểm tra xem một số có hợp lệ cho một ô nào đó không. . Bước 3. Tạo hàm kiểm tra ô trống. . Bước 4. Chèn một số hợp lệ vào ô trống đầu tiên. . Bước 5. Chèn số hợp lệ vào tất cả các ô trống Có công thức giải Sudoku không?Ví dụ, trong cột đầu tiên và cột thứ tư bắt đầu từ bên trái của lưới 9×9, chúng ta có thể lập các phương trình sau. m+n=a, g+n+f=g+c . Ở hàng thứ hai và hàng cuối cùng bắt đầu từ trên cùng của lưới 9×9, có thể lập các phương trình sau. b+g+f=a+g, e+n+m=a+b+d. |