Pengantar:
Meskipun saya awalnya memiliki lagu Belanda di kepala saya, di mana liriknya adalah: " Doe 'n stapje naar voren, en' n stapje terug " (yang diterjemahkan menjadi " Ambil sedikit langkah maju, dan sedikit mundur "), ketika Saya mencari lirik lengkap, saya menyadari mereka hanya bolak-balik, dan tidak pernah menyamping.
Jadi, alih-alih sekarang saya menggunakan lirik dari Mr C The Slide Man alias DJ Casper - Cha-Cha Slide untuk tantangan ini.
Jika kita mengabaikan yang lainnya dan hanya melihat kata "kiri", "kanan", "kembali", dan "hop" (saya menghitung "hop" ke depan) termasuk jumlah yang disebutkan, lagu lengkap akan memiliki daftar berikut ( Saya menggunakan singkatan LRBH di sini):
LBHRLLBHRLBHHRRLLLRLBHHHHRRLLLBHHHHHRLRLRLHRLLBHHLRLBHH
Di sini lirik lagu lengkap dalam cuplikan kode JavaScript yang dapat disembunyikan (untuk menghemat ruang), tempat gerakan dan jumlahnya dikelilingi dengan tanda kurung yang diblokir:
Tantangan:
Sekarang ke tantangan itu sendiri. Kami mengambil satu, dua, atau tiga input † . Salah satunya adalah daftar bilangan bulat indeks (jadi non-negatif untuk 0-diindeks; atau positif untuk 1-diindeks). (Input lain bersifat opsional dan dijelaskan dalam aturan tantangan.)
Setiap test case akan dimulai pada suatu posisi {x=0, y=0}
.
Sekarang gunakan daftar lirik gerakan dan hapus semua gerakan pada indeks daftar masukan yang diberikan. Kemudian 'berjalan' di atas gerakan (hingga indeks terbesar dari array-input) dan output posisi Anda akan berakhir di.
Bergerak akan mengubah koordinat sebagai berikut:
- R
: x+1
- L
: x-1
- H
: y+1
- B
:y-1
Aturan tantangan:
- Daftar bergerak dapat diakses dengan cara apa pun yang Anda inginkan. †: Dapat menjadi input tambahan; bisa dalam file terpisah di disk yang akan Anda baca; bisa dalam variabel tingkat kelas yang Anda akses. Ini akan harus dalam bentuk
L
,R
,B
danH
meskipun (dapat berupa string atau karakter-list / array), sehingga Anda tidak bisa menyimpan bergerak-daftar sebagai1
s dan-1
s atau bilangan bulat. - Daftar-pindah yang diberikan di atas adalah kode-keras dan akan selalu sama. (Itulah mengapa tidak apa-apa untuk menempatkannya sebagai bidang tingkat kelas alih-alih menganggapnya sebagai input jika ini membantu byte-count jawaban Anda.)
- Input-list dapat berupa 0-diindeks atau 1-diindeks (terserah Anda)
- Kami hanya 'menapaki' pergerakan ke atas dan mengecualikan indeks terbesar dari daftar.
- †: Anda juga diperbolehkan mengambil item terakhir ini sebagai input integer yang terpisah, alih-alih item terakhir dari array-input.
- Output dari koordinat x dan y yang kita dapatkan bisa dalam format yang wajar (integer-array yang berisi dua item, string yang dibatasi, dicetak ke STDOUT pada dua baris yang terpisah, dll.)
- Anda dapat menganggap daftar input diurutkan dari terendah ke tertinggi (atau tertinggi ke terendah jika itu yang Anda inginkan, dalam hal ini item pertama adalah ukuran awal dari daftar bergerak - jika tidak diambil sebagai input yang terpisah). Dan itu juga tidak akan berisi indeks yang digandakan.
- Jika indeks terbesar dari daftar input lebih besar dari daftar langkah di atas (55 langkah ada di daftar bergerak di atas), kami membungkus kembali ke awal daftar lagi (sebanyak yang diperlukan tergantung pada indeks terbesar dari input).
- Anda diizinkan untuk menghasilkan
y,x
bukanx,y
, tetapi harap tentukan ini dalam jawaban Anda jika Anda melakukannya.
Contoh:
Memasukkan: [0,4,8,10,13,14,27,34,42,43,44,50,53,56,59,60,64]
Di sini gerakan dan (indeks-0) indeks di atas satu sama lain:
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
Menghapus indeks dari daftar input, kita akan memiliki sisa daftar berikut:
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
Sekarang jika kita berjalan dari posisi {0, 0}
melewati gerakan yang tersisa, kita akan memiliki koordinat baru berikut setelah setiap gerakan:
{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}
Jadi hasil akhirnya adalah: {-6, 10}
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa pun'. - Aturan standar berlaku untuk jawaban Anda, jadi Anda diperbolehkan menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program penuh. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda.
- Juga, menambahkan penjelasan untuk jawaban Anda sangat dianjurkan.
Kasus uji:
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}