Đăng ký học Excel và VBA cùng GPE tháng 11 - TPHCM

Mua sách "VBA trong Excel - Cải thiện và tăng tốc" tái bản

Sudoku - 1 cách giải

Thảo luận trong 'Files Excel Excel Game' bắt đầu bởi street, 20 Tháng một 2009.

  1. street

    street Thành viên mới

    Trò chơi có nguồn gốc từ Nhật Bản này đã tạo ra cả một trào lưu trong xã hội. Những bảng tính với 9 con số tưởng như đơn giản lại thách thức trí não của con người với các mức độ khác nhau.
    Mỗi bảng số Sudoku bao gồm 81 ô, được chia làm 9 bộ 3x3. Nhiệm vụ của người chơi là nhập các con số sao cho mỗi hàng, mỗi cột, mỗi bộ 3x3 đều chứa các con số từ 1 đến 9, không được trùng nhau.

    Đây là 1 cách giải tổng quát.
    Đề bài:
    [​IMG]

    Lời giải của mình:
    Các ô trống còn lại, mỗi ô ghi các số từ 1 đến 9:

    [​IMG]

    Ô A1 bằng 9 nên trong hàng 1, cột 1, các ô từ A1 đến C3, ta sẽ xóa đi số 9:

    [​IMG]

    Ô C1 bằng 2 nên trong hàng 1, cột 3, các ô từ A1 đến C3, ta sẽ xóa đi số 2:

    [​IMG]

    ......
    Làm tương tự như vậy ta sẽ được:

    [​IMG]

    Ô C2 bằng 6 nên trong hàng 2, cột 3, các ô từ A1 đến C3, ta sẽ xóa số 6, và ta được:

    [​IMG]

    Đến đây thì xuất hiện số mới là ô B1 bằng 1. Vì ô B1 bằng 1 nên trong hàng 1, cột 2, các ô từ A1 đến C3, ta sẽ xóa số 1, và ta được:

    [​IMG]

    ......
    Tương tự như vậy, kết quả là:

    [​IMG]
     
  2. Mr Okebab

    Mr Okebab Ngon Ngất Ngây

    Cách này thực ra cũng là một phép thử, phép dò, có nghĩa là liệt kê tát cả những số có thể có để sau đó xóa đi số trùng --> Số đúng

    Thực ra với một ô trống ở Sudoku 9x9 thì việcxem xét nó là số bao nhiêu thì phụ thuộc vào 3 yếu tố
    - Hàng chứa nó : Vung1
    - Cột chứa nó : Vung2
    - Bộ 3x3 chứa nó : Vung 3
    --> Vung tham chiếu = Vung1 hợp Vung2 hợp Vung3 : Vung4

    --> là số còn lại mà vùng 4 chưa có

    Vì vậy việc tạo ra một hàm VBA như vậy rất dễ dàng.
    [​IMG]

    Như VD ở trên : Xét B2 :
    - Hàng : Vùng 1 chứa : 2;3;4;5;7;8;9
    - Cột : Vùng 2 chứa : 3;4;6;7
    - 3x3 : Vung 3 chứa : 2;4;6;9
    --> Vùng 4 : 2;3;4;5;6;7;8;9
    -> B2 = 1
    Thân!

    Đọc thêm :
     

Chia sẻ trang này