Seekor semut berjalan di sepanjang tepi (bukan wajah) kubus gambar rangka. Setiap vertex yang dihadapinya menyajikannya dengan garpu yang darinya dua tepi baru bercabang. Semut memilih jalan mana yang akan diputar - left
atau right
. Arah ini relatif terhadap semut, yang menghadap puncak dan berada di luar kubus. Tujuan Anda adalah untuk menentukan, dari urutan left
/ right
pilihan yang diambil semut, apakah itu berakhir pada posisi yang sama dengan yang dimulainya.
Sebagai contoh, jika semut belok kiri empat kali ( left left left left
), ia akan melewati persegi berlawanan arah jarum jam dan berakhir di tempat yang sama dengan semula. Tetapi, jika itu berjalan left left left left right
, itu akan berakhir di tempat yang berbeda di kubus. Juga, jika berjalan left right right right left
, ujungnya berakhir pada ujung awalnya tetapi menghadap titik yang berlawanan, yang tidak dihitung sebagai posisi yang sama.
Jalur semut mungkin mengulangi tepi, termasuk ujungnya dimulai, tetapi yang penting adalah di mana ia berakhir setelah seluruh urutan.
Tulis fungsi bernama yang mengambil urutan belokan dan keluaran semut apakah semut kembali pada posisi awal setelah urutan. Menetapkan fungsi yang tidak disebutkan namanya ke variabel sudah cukup untuk membuatnya menjadi fungsi bernama.
(Sunting: Jika bahasa Anda tidak dapat membuat fungsi bernama, itu bisa mengimplementasikan fungsi dengan input dan output melalui STDIN / pencetakan atau tumpukan. Jika itu tidak mungkin, buatlah cuplikan di mana input dan output disimpan dalam variabel.)
Memasukkan
Urutan left
/ right
keputusan panjang 0
untuk 31
inklusif, diwakili dalam format pilihan Anda. Ini mungkin berupa string huruf R
/ L
, daftar angka 1
/ -1
, atau array Boolean. Tidak ada yang cheesy jika mereka menjadi nama metode atau string yang berguna untuk kode Anda.
Silakan kirim test case dalam format Anda jika berbeda dari test case di bawah ini.
Keluaran
True
/ False
, 0
/ 1
, atau analog dalam bahasa Anda.
Kriteria menang
Bytes paling sedikit menang. Ingat, Anda harus memberikan fungsi yang bernama. Anda dapat memiliki kode di luar fungsi, tetapi byte tersebut juga dihitung. Fungsi Anda harus berperilaku dengan benar jika dipanggil beberapa kali.
Uji kasus
True
kasing (satu per baris, yang kedua adalah daftar kosong):
1 1 1 1
-1 -1 -1 -1
1 -1 1 -1 1 -1
1 1 -1 -1 1 1 -1 -1
-1 1 1 -1 -1 1 1 -1
1 1 1 -1 -1 -1 -1 1
1 -1 -1 1 -1 -1
1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1
-1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
False
kasing (satu per baris):
1
1 1
1 1 1
-1 1
1 -1 -1 -1 1
1 -1 -1 1 1
-1 1 -1 1
1 1 1 1 -1
-1 -1 1 -1 1 -1 -1 1
1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1
Berikut ini kasus uji yang sama dengan L
's dan R
' s.
True
kasus:
RRRR
LLLL
RLRLRL
RRLLRRLL
LRRLLRRL
RRRLLLLR
RLLRLL
RRRRLLLLRLLRLL
LLLRLLRRLRLRRRRRRRRRRRRRRRRR
False
kasus:
R
RR
RRR
LR
RLLLR
RLLRR
LRLR
RRRRL
LLRLRLLR
RLRRRRLLLRRLLL
Tantangan kredit ekstra
Hal yang sama, tetapi dengan dodecahedron daripada kubus. Lihat Hunt the Wumpus untuk mendapatkan ide.