Giới thiệu
Bạn có bất hạnh khi bị mắc kẹt trong một chiếc xe chạy trên một chướng ngại vật. Tất cả các tính năng của xe đều không phản hồi, tiết kiệm cho hệ thống lái bị hỏng. Nó có thể lái thẳng, hoặc nó có thể rẽ phải. Xe có thể được hướng dẫn an toàn?
Cơ học
Xe của bạn bắt đầu ở góc trên bên trái của bản đồ 8x8 và đang cố gắng đến nơi an toàn ở góc dưới bên phải. Chiếc xe có một hướng (ban đầu bên phải), được đo theo gia số 90 độ. Chiếc xe có thể thực hiện một trong hai hành động:
- Lái một ô vuông về phía trước, hoặc
- Xoay 90 độ theo chiều kim đồng hồ, sau đó lái xe về phía trước một hình vuông
Lưu ý rằng chiếc xe không thể quay đủ mạnh để thực hiện quay 180 độ trên một ô vuông duy nhất.
Một số hình vuông là trở ngại. Nếu chiếc xe đi vào một quảng trường chướng ngại vật, nó bị đâm. Tất cả mọi thứ bên ngoài khóa học 8x8 được coi là chướng ngại vật, vì vậy lái xe ra khỏi khóa học tương đương với tai nạn.
Hình vuông bên phải phía dưới là hình vuông an toàn, cho phép chiếc xe thoát khỏi chướng ngại vật. Hình vuông bắt đầu và hình vuông an toàn được giả định không phải là trở ngại.
Bài tập, nhiệm vụ
Bạn phải viết một chương trình hoặc hàm lấy đầu vào là một mảng 8x8 (ma trận, danh sách các danh sách, v.v.), đại diện cho khóa học vượt chướng ngại vật. Chương trình trả về hoặc in Boolean, hoặc một cái gì đó tương tự như sự thật. Nếu chiếc xe có thể đi đến quảng trường an toàn mà không gặp sự cố (nghĩa là nếu bản đồ có thể giải quyết được) True
, thì ngược lại, đó là đầu ra False
.
Chấm điểm
Quy tắc golf mã tiêu chuẩn - người chiến thắng là mã có ít byte nhất.
Tiền thưởng:
Nếu, đối với bản đồ có thể giải được, mã của bạn đưa ra một loạt các đầu vào trình điều khiển hợp lệ hướng dẫn chiếc xe đến quảng trường an toàn, trừ 10 điểm phần trăm từ điểm số của bạn. Một định dạng đầu ra ví dụ có thể là
SRSSR
(biểu thị Straight, Right, Straight, Straight, Right). Đầu ra này sẽ thay thếTrue
đầu ra tiêu chuẩn .Nếu, đối với bản đồ không thể giải quyết, đầu ra mã của bạn phân biệt giữa các tình huống không thể tránh khỏi sự cố và các tình huống có thể lái xe quanh chướng ngại vật mãi mãi, trừ 10 điểm phần trăm từ điểm số của bạn. Một ví dụ đầu ra có thể là
Crash
nếu một vụ tai nạn là không thể tránh khỏi, hoặcStuck
nếu chiếc xe bị kẹt trong quá trình vượt chướng ngại vật mãi mãi. Những đầu ra này sẽ thay thếFalse
đầu ra tiêu chuẩn cho một bản đồ không thể phá hủy.
Thí dụ
Nếu chương trình được cung cấp một mảng 8x8 như thế này:
[[0, 0, 0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0],
[1, 1, 0, 0, 0, 0, 0, 0],
[0, 1, 0, 1, 0, 0, 0, 0],
[0, 0, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 1, 0],
[0, 0, 0, 0, 0, 0, 1, 0],
[0, 1, 1, 0, 0, 0, 1, 0]]
Nó sẽ được hiểu là một bản đồ như thế này, với các ô vuông màu đen biểu thị chướng ngại vật:
Và một giải pháp khả thi có thể là:
Vì một giải pháp tồn tại, chương trình sẽ trả về / in True
cho bản đồ này. Trình tự di chuyển được hiển thị ở đây là SSSSRSRRRSRSSRRRSSRSSS
.
Crash
vàStuck
. Họ ở đây vì họ ở bao lâu. Hàng 2 đầy, mọi thứ khác trống ->Crash
. Hàng 7 đầy, mọi thứ khác trống ->Stuck