Giriş:
Başlangıçta kafamda Hollandaca bir şarkı olmasına rağmen, şarkı sözleri: " Doe 'n stapje naar voren, en' n stapje terug " (" Küçük bir adım ileri ve biraz geri adım at ") Tam şarkı sözlerini aradım, sadece ileri geri döndüklerini ve asla yanlara gitmediklerini fark ettim.
Bunun yerine, şimdi bu meydan okuma için Bay C The Slide Man aka DJ Casper - Cha-Cha Slide sözlerini kullanıyorum .
Diğer her şeyi göz ardı edersek ve yalnızca belirtilen miktarlar dahil olmak üzere "sol", "sağ", "geri" ve "hop" (ileri olarak "hop" olarak saydım) kelimelerine bakarsak, şarkının tamamı aşağıdaki listeye ( LRBH kısaltmalarını burada kullanıyorum):
LBHRLLBHRLBHHRRLLLRLBHHHHRRLLLBHHHHHRLRLRLHRLLBHHLRLBHH
Burada, hareketlerin ve miktarların engellenmiş köşeli parantezlerle çevrili olduğu gizlenebilir bir JavaScript kod snippet'indeki (yerden tasarruf etmek için) tam şarkı sözleri:
Meydan okuma:
Şimdi meydan okuma üzerine. Bir, iki veya üç giriş alırız † . Bunlardan biri dizin tamsayılarının bir listesidir (yani 0 dizinli için negatif olmayan veya 1 dizinli için pozitif). (Diğer girdiler isteğe bağlıdır ve meydan okuma kurallarında açıklanmıştır.)
Her test durumu bir konumda başlayacaktır {x=0, y=0}
.
Şimdi hareketlerin şarkı sözleri listesini kullanın ve giriş listesinin verilen dizinlerindeki tüm hareketleri kaldırın . Ardından, hamleleri 'girdi' (giriş dizisinin en büyük dizinine kadar) ve sonuçta bulunacağınız konumu çıktılayın.
Hareketler koordinatları aşağıdaki gibi değiştirecektir:
- R
: x+1
- L
: x-1
- H
: y+1
- B
:y-1
Zorluk kuralları:
- Taşıma listesine istediğiniz şekilde erişilebilir. †: Ek bir girdi olabilir; okuyacağınız diskteki ayrı bir dosyada olabilir; eriştiğiniz sınıf düzeyinde bir değişkende olabilir. Bu şeklinde olması gerekecektir
L
,R
,B
veH
olsa (bir dize veya karakter listesi / dizi olabilir) böylece olamaz benzeri hareketlerin listesine kaydetme1
s ve-1
s veya tamsayılar. - Yukarıda verilen hamle listesi sabit olarak kodlanmıştır ve daima aynı olacaktır. (Bu yüzden cevabınızın bayt sayımına yardımcı oluyorsa, onu girdi olarak almak yerine sınıf düzeyinde bir alan olarak koymak iyi olur.)
- Giriş listesi hem 0 dizinli hem de 1 dizinli olabilir (size kalmış)
- Listenin en büyük dizinine giden ve hariç tutulan hareketleri yalnızca 'yürüyoruz'.
- †: Bu son öğeyi, girdi dizisinin son öğesi yerine, ayrılmış tamsayı girişi olarak da almanıza izin verilir.
- Sonunda x ve y koordinatlarının çıktısı herhangi bir makul biçimde olabilir (iki öğe içeren tamsayı dizisi, ayrılmış dize, iki ayrı satıra STDOUT'a yazdırılmış vb.)
- Giriş listesinin en düşükten en yükseğe (veya tercih ettiğiniz buysa en yüksekten en düşüğe) sıralandığını varsayabilirsiniz; bu durumda ilk öğe, hareketler listesinin başlangıç boyutudur - ayrı giriş olarak alınmazsa). Ayrıca yinelenen indeksler içermez.
- Girdi listesinin en büyük dizini yukarıdaki hareket listesinden daha büyükse (55 hamle yukarıdaki hareket listesinde), listenin başına geri döneriz (en büyük dizine bağlı olarak gerektiği kadar) giriş).
- Bunun
y,x
yerine çıktıx,y
almanıza izin verilir , ancak bunu yanıtınızda belirtin.
Misal:
Giriş: [0,4,8,10,13,14,27,34,42,43,44,50,53,56,59,60,64]
Burada üst üste hamle ve (0 dizinli) endeksler:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64
L, B, H, R, L, L, B, H, R, L, B, H, H, R, R, L, L, L, R, L, B, H, H, H, H, R, R, L, L, L, B, H, H, H, H, H, R, L, R, L, R, L, H, R, L, L, B, H, H, L, R, L, B, H, H, L, B, H, R, L, L, B, H, R, L
Girdi listesinin endeksleri kaldırıldığında, aşağıdaki hamle listesi kalır:
1, 2, 3, 5, 6, 7, 9,11,12,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,32,33,35,36,37,38,39,40,41,45,46,47,48,49,51,52,54,55,57,58,61,62,63
B, H, R, L, B, H, L, H, H, L, L, L, R, L, B, H, H, H, H, R, R, L, L, B, H, H, H, H, R, L, R, L, R, L, L, B, H, H, L, L, B, H, L, H, R, B, H, R
Şimdi {0, 0}
, kalan hamlelerin üzerindeki pozisyondan yürürsek, her hamleden sonra aşağıdaki yeni koordinatlara sahip oluruz:
{0,0};B,{0,-1};H,{0,0};R,{1,0};L,{0,0};B,{0,-1};H,{0,0};L,{-1,0};H,{-1,1};H,{-1,2};L,{-2,2};L,{-3,2};L,{-4,2};R,{-3,2};L,{-4,2};B,{-4,1};H,{-4,2};H,{-4,3};H,{-4,3};H,{-4,5};R,{-3,5};R,{-2,5};L,{-3,5};L,{-4,5};B,{-4,4};H,{-4,5};H,{-4,6};H,{-4,7};H,{-4,8};R,{-3,8};L,{-4,8};R,{-3,8};L,{-4,8};R,{-3,8};L,{-4,8};L,{-5,8};B,{-5,7};H,{-5,8};H,{-5,9};L,{-6,9};L,{-7,9};B,{-7,8};H,{-7,9};L,{-8,9};H,{-8,10};R,{-7,10};B,{-7,9};H,{-7,10};R,{-6,10}
Böylece nihai çıktı: {-6, 10}
Genel kurallar:
- Bu kod golf , bayt en kısa cevap kazanır.
Kod golf dillerinin, kod yazmayan dillerle yanıt göndermenizi engellemesine izin vermeyin. 'Herhangi bir' programlama dili için mümkün olduğunca kısa bir cevap bulmaya çalışın. - Cevabınız için standart kurallar geçerlidir , bu nedenle STDIN / STDOUT, fonksiyonlar / yöntem uygun parametreler ve dönüş tipi, tam programlar ile kullanılabilir. Çağrınız.
- Varsayılan Loopholes yasaktır.
- Mümkünse, lütfen kodunuz için test içeren bir bağlantı ekleyin.
- Ayrıca, cevabınız için bir açıklama eklemeniz şiddetle tavsiye edilir.
Test senaryoları:
0-indexed input: [0,4,8,10,13,14,27,34,42,43,44,50,53,56,59,60,64]
1-indexed input: [1,5,9,11,14,15,28,35,43,44,45,51,54,57,60,61,65]
Output: {-6, 10}
0-indexed input: [55] (Note: There are 55 moves in the unmodified list)
1-indexed input: [56] (Note: There are 55 moves in the unmodified list)
Output: {-6, 11}
0-indexed input: [0,1,4,5,6,9,10,15,16,17,19,20,27,29,30,37,38,39,41,44,45,46,49,51,52]
1-indexed input: [1,2,5,6,7,10,11,16,17,18,20,21,28,30,31,38,39,40,42,45,46,47,50,52,53]
Output: {10, 16}
0-indexed input: [2,3,7,8,11,12,13,14,18,21,22,23,24,25,26,31,32,33,34,35,36,38,40,42,43,47,48,50,53]
1-indexed input: [3,4,8,9,12,13,14,15,19,22,23,24,25,26,27,32,33,34,35,36,37,39,41,43,44,48,49,51,54]
Output: {-18, -7}
0-indexed input: [0]
1-indexed input: [1]
Output: {0, 0}
0-indexed input: [4,6,7,11,12,13,15,17,20,28,31,36,40,51,59,66,73,74,80,89,92,112,113,114,116,120,122,125,129,134,136,140,145,156,161,162,165,169,171,175,176,178,187,191,200]
1-indexed input: [5,7,8,12,13,14,16,18,21,29,32,37,41,52,60,67,74,75,81,90,93,113,114,115,117,121,123,126,130,135,137,141,146,157,162,163,166,170,172,176,177,179,188,192,201]
Output: {-17, 37}
0-indexed input: [25,50,75,100,125,150,175,200,225,250]
1-indexed input: [26,51,76,101,126,151,176,201,226,251]
Output: {-28, 49}