Chọn sách Phiêu lưu của riêng bạn là một dạng văn học tương tác, nơi người đọc phải đưa ra quyết định ảnh hưởng đến kết quả của câu chuyện. Tại một số điểm nhất định trong câu chuyện, người đọc có nhiều lựa chọn có thể được chọn, mỗi người gửi người đọc đến một trang khác nhau trong cuốn sách.
Ví dụ, trong một bối cảnh giả tưởng, người ta có thể phải quyết định xem có nên mạo hiểm vào một hang động bí ẩn bằng cách "nhảy" sang trang 22 hay khám phá khu rừng gần đó bằng cách nhảy sang trang 8. Những "cú nhảy" này có thể được thể hiện như các cặp số trang, như vậy:
14 22
14 8
Trong hầu hết các trường hợp, có nhiều kết thúc cho câu chuyện nhưng chỉ có một vài cái tốt. Mục tiêu là điều hướng câu chuyện để đi đến một kết thúc tốt đẹp.
Bài tập:
Đưa ra một danh sách "các bước nhảy" cho một cuốn sách nhất định, nhiệm vụ của bạn là xác định lộ trình sẽ dẫn đến một kết thúc cụ thể. Vì việc này khá dễ, nên thử thách thực sự là làm càng ít nhân vật càng tốt.
Đây là mã golf .
Đầu vào mẫu (trong đó 1 là bắt đầu và 100 là mục tiêu):
1 10
10 5
10 13
5 12
5 19
13 15
12 20
15 100
Đầu ra mẫu:
1 10 13 15 100
Đầu vào mẫu:
15 2
1 4
2 12
1 9
3 1
1 15
9 3
12 64
4 10
2 6
80 100
5 10
6 24
12 80
6 150
120 9
150 120
Đầu ra mẫu:
1 15 2 12 80 100
Ghi chú:
- Danh sách các bước nhảy sẽ được người dùng nhập vào, từ tệp hoặc stdin. Bạn có thể chọn bất cứ điều gì là thuận tiện nhất.
- Đầu vào sẽ chứa 1 bước nhảy trên mỗi dòng, với điểm gốc và đích được phân tách bằng một khoảng trắng.
- Các dòng trong đầu vào không được đảm bảo theo bất kỳ thứ tự cụ thể nào.
- Một đường dẫn thành công sẽ bắt đầu ở trang 1 và kết thúc ở trang 100.
- Bạn có thể cho rằng có ít nhất 1 đường dẫn đến mục tiêu. Bạn không cần tìm tất cả các đường dẫn, bạn cũng không cần tìm đường đi ngắn nhất. Chỉ cần tìm ít nhất một.
- Số trang nhỏ nhất sẽ là 1. Không có giới hạn đối với số trang lớn nhất. (Bạn có thể cho rằng nó sẽ phù hợp với phạm vi của một int.)
- Vòng lặp có thể tồn tại. Ví dụ: danh sách có thể có các bước nhảy từ trang 5 đến 10, 10 đến 19 và 19 đến 5.
- Có thể có ngõ cụt. Đó là, một trang đích có thể không có nơi nào để nhảy tới.
- Ngược lại, có thể có các trang không thể truy cập. Đó là, một trang gốc có thể không phải là đích của bất kỳ bước nhảy nào.
- Không phải tất cả số trang trong khoảng từ 1 đến 100 đều được đảm bảo sử dụng.
- Đầu ra của bạn phải bao gồm một tuyến số trang hợp lệ, bắt đầu bằng 1 và kết thúc bằng 100, cách nhau bởi khoảng trắng.
Hãy nhớ rằng, đây là mã golf, vì vậy giải pháp ngắn nhất sẽ thắng!
EDIT: Đã thêm một mẫu khác để thử nghiệm.