Đây là một câu đố phổ biến nhiều bạn đã giải quyết bằng tay. Bây giờ đây là thời gian để viết một thuật toán để giải quyết tương tự.
Có những que diêm số bằng nhau xếp thành hai bên khác nhau đối diện với hướng của nhau. Có một khoảng trống duy nhất giữa chúng. Nói một cái gì đó giống như hình dưới đây (nếu tổng số que diêm là 4).
Mỗi cây gậy có thể trượt một bước theo hướng về phía trước (nếu không gian phía trước ngay lập tức) hoặc nó có thể nhảy qua một cây gậy ở phía trước và rơi vào không gian trống (nếu không gian đó là miễn phí). Việc di chuyển theo hướng ngược lại là không thể (thậm chí không gian là miễn phí). Không nhảy ngược cũng được cho phép. Chỉ một động thái được cho phép trong một bước.
Bây giờ, bạn phải viết một thuật toán để tìm các bước tối thiểu cần thiết bằng cách sử dụng tất cả các que diêm bên tay trái sẽ hạ cánh ở phía bên tay phải và tất cả các que diêm bên phải sẽ hạ cánh ở phía bên tay trái.
Ví dụ: Nếu có tổng số 2 que diêm (mỗi bên 1 cái) thì các bước sẽ là:
Lưu ý: Trong hình trên, thanh bên trái được di chuyển trước. Một giải pháp khác tồn tại khi thanh bên phải di chuyển đầu tiên. Nhưng đối với vấn đề này, bạn phải đưa ra một giải pháp duy nhất và đó cũng là giả định rằng thanh bên trái di chuyển trước.
Hình dưới đây mô tả các bước di chuyển với 4 que diêm (mỗi bên 2 cái):
Lưu ý: Trong hình trên, thanh bên trái được di chuyển trước. Một giải pháp khác tồn tại khi thanh bên phải di chuyển đầu tiên. Nhưng đối với vấn đề này, bạn phải đưa ra một giải pháp duy nhất và đó cũng là giả định rằng thanh bên trái di chuyển trước.
[Giả định: Đầu vào có thể là bất kỳ số chẵn nào trong khoảng từ 02 đến 14 (tức là 1 đến 7 que diêm ở mỗi bên). Đối với các đầu vào ngoài phạm vi này, bạn không cần thực hiện bất kỳ xác nhận nào, cũng không cần cung cấp bất kỳ thông báo lỗi nào. Lưu ý: Trong đầu ra, mỗi bước được phân tách bằng dấu '|' (ống) ký tự. Các lập trình viên của COBOL phải luôn coi PIC 9 (2) là kích thước đầu vào & cũng có thể giả sử đầu ra có độ dài tối đa 450 ký tự, được đệm bằng khoảng trắng ở bên phải.]
Đầu vào mẫu:
02
Đầu ra mẫu:
01To02|03To01|02To03|
Đầu vào mẫu:
04
Đầu ra mẫu:
02To03|04To02|05To04|03To05|01To03|02To01|04To02|03To04|
Đầu vào mẫu:
06
Đầu ra mẫu:
03To04|05To03|06To05|04To06|02To04|01To02|03To01|05To03|07To05|06To07|04To06|02To04|03To02|05To03|04To05|