Trong các trò chơi Super Mario khác nhau, vỏ Koopa Troopa màu xanh lá cây và đỏ có thể trượt không ma sát trên bề mặt phẳng và phá hủy các khối gạch cản đường chúng. Khi một viên đạn va vào khối gạch, khối bị vỡ, biến nó thành không gian trống và vỏ Koopa đảo ngược hướng. Ví dụ, xem vỏ màu đỏ ở đây .
Giả sử một cấp độ Super Mario chỉ cao một khối và mỗi ô lưới là một viên gạch hoặc khoảng trống, ngoại trừ ô ngoài cùng bên trái chứa vỏ di chuyển sang phải. Cấp độ cũng là định kỳ , vì vậy nếu vỏ thoát ra khỏi cạnh phải hoặc trái của cấp độ, nó sẽ nhập lại ở phía đối diện. Trong tình huống này, lớp vỏ sẽ tiếp tục bật ra và phá vỡ tất cả các khối gạch trong cấp độ cho đến khi không còn nữa. Vỏ sẽ đi được bao xa sau khi khối gạch cuối cùng bị vỡ?
Thử thách
Viết chương trình hoặc hàm lấy số nguyên thập phân không âm. Số này, được biểu thị dưới dạng nhị phân không có số 0 đứng đầu (ngoại lệ duy nhất là 0), mã hóa bố cục cấp một khối. A 1
là một khối gạch và một 0
là không gian trống.
Shell Koopa được chèn ở cạnh trái của cấp độ và ban đầu di chuyển sang phải. Ví dụ: mức liên quan đến đầu vào 39
là
>100111
bởi vì 100111
là 39 trong nhị phân, >
và <
đại diện cho các vỏ di chuyển phải và trái tương ứng.
Bạn cần in hoặc trả lại tổng quãng đường mà vỏ đã di chuyển khi khối gạch cuối cùng (aka 1
) bị phá vỡ.
Đầu ra cho 39
là 7
và những thay đổi ở cấp độ trông như thế này:
Level Cumulative Distance
>100111 0
<000111 0
>000110 0
0>00110 1
00>0110 2
000>110 3
000<010 3
00<0010 4
0<00010 5
<000010 6
000001< 7
000000> 7 <-- output
Tương tự, đầu ra cho 6
là 1
:
Level Cumulative Distance
>110 0
<010 0
001< 1
000> 1 <-- output
Mã ngắn nhất tính bằng byte thắng.
Để tham khảo, đây là những kết quả đầu ra cho các đầu vào 0
để 20
:
0 0
1 0
2 0
3 0
4 0
5 0
6 1
7 1
8 0
9 0
10 1
11 2
12 2
13 1
14 3
15 3
16 0
17 0
18 1
19 3
20 2