Çeşitli Süper Mario oyunlarında yeşil ve kırmızı Koopa Troopa kabukları düz yüzeylerde sürtünmesizce kayabilir ve yollarındaki tuğla blokları yok edebilir . Bir kabuk bir tuğla bloğa çarptığında, blok kırılır ve boş alana dönüştürülür ve Koopa kabuğu yönü tersine çevirir. Örnek olarak, burada kırmızı kabuğu izleyin .
Süper Mario seviyesinin sadece bir blok yüksek olduğunu ve sağa doğru hareket eden bir kabuk içeren en soldaki hücre hariç her ızgara hücresinin bir tuğla veya boş alan olduğunu varsayalım. Seviye ayrıca periyodiktir , bu nedenle kabuk seviyenin sağ veya sol kenarından çıkarsa, karşı tarafa tekrar girer. Bu durumda, kabuk daha fazla kalmayıncaya kadar zıplamaya ve seviyedeki tüm tuğla blokları kırmaya devam edecektir. Kabuk, son tuğla blok kırıldıktan hemen sonra ne kadar ilerleyecek?
Meydan okuma
Negatif olmayan bir ondalık sayı içeren bir program veya işlev yazın. Başında sıfır olmadan (tek istisna 0 kendisidir) ikili olarak ifade edilen bu sayı, bir blok-üst düzey düzeni kodlar. A 1
bir tuğla blok ve bir 0
boş alandır.
Koopa Kabuğu, seviyenin en sol kenarına yerleştirilir ve başlangıçta sağa hareket eder. Örneğin, giriş ile ilişkili düzeyde 39
olduğu
>100111
çünkü 100111
ikilik sistemde 39 ve >
ve <
sağ temsil ve sırasıyla kabukları hareketli bıraktı.
Son tuğla blok (aka 1
) kırıldıktan sonra kabuğun kat ettiği toplam mesafeyi yazdırmanız veya geri göndermeniz gerekir .
İçin çıkış 39
IS 7
ve böyle düzey görünüm değişiklikleri:
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
Benzer bir şekilde, çıkış 6
IS 1
:
Level Cumulative Distance
>110 0
<010 0
001< 1
000> 1 <-- output
Bayt cinsinden en kısa kod kazanır.
Referans olarak, girişler 0
için çıkışlar şunlardır 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