다양한 슈퍼 마리오 게임에서 녹색 및 빨간색 Koopa Troopa 쉘은 평평한 표면에서 마찰없이 미끄러 져 움직일 수있는 벽돌 블록 을 파괴 할 수 있습니다. 껍질이 벽돌 블록에 닿으면 블록이 깨져 빈 공간으로 바뀌고 Koopa 껍질이 방향을 바꿉니다. 예를 들어 여기 에서 빨간 껍질을 보십시오 .
슈퍼 마리오 레벨이 한 블록 높이이고 모든 그리드 셀이 오른쪽으로 이동하는 쉘을 포함하는 가장 왼쪽 셀을 제외하고 벽돌 또는 빈 공간이라고 가정하십시오. 레벨도 주기적 이므로 쉘이 레벨의 오른쪽 또는 왼쪽 가장자리를 벗어나면 반대쪽으로 다시 들어갑니다. 이 상황에서 쉘은 더 이상 없을 때까지 레벨의 모든 벽돌 블록을 계속 튕겨 나눕니다. 마지막 벽돌 블록이 부서진 직후 껍질이 얼마나 멀리 여행 했습니까?
도전
음수가 아닌 10 진수를 취하는 프로그램이나 함수를 작성하십시오. 선행 0이없는 이진수로 표현 된이 숫자 (단 하나의 예외는 0 자체 임)는 한 블록 높은 수준의 레이아웃을 인코딩합니다. A 1
는 벽돌 블록이고 0
빈 공간입니다.
Koopa Shell은 레벨의 가장 왼쪽 가장자리에 삽입되며 처음에는 오른쪽으로 이동합니다. 예를 들어 입력과 관련된 레벨 39
은
>100111
때문에이 100111
이진 (39)이며, >
그리고 <
바로 나타 각각 포탄 이동 떠났다.
마지막 벽돌 블록 (일명 1
)이 깨지면 쉘이 이동 한 총 거리를 인쇄하거나 반환해야합니다 .
의 출력 39
IS 7
와 같은 수준 모양의 변화 :
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
마찬가지로 출력 6
은 1
다음과 같습니다.
Level Cumulative Distance
>110 0
<010 0
001< 1
000> 1 <-- output
의 짧은 코드는 승리 바이트.
참고로, 다음에 대한 입력 출력은 다음 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