Ular terlihat seperti ini:
>>>v
@ ^ v
^ >>>^ v
^ v
^<<<<<<<<<
Ular dapat menyeberang dengan sendirinya seperti dalam kasus ini:
@
^
>^>v
^<<
Agar crossover valid, karakter di kedua sisi harus bergerak ke arah yang sama. Kasus
@
>^v
^<
dapat dianggap tidak jelas dan tidak valid.
Outputnya adalah string yang WASD
mewakili pergi dari kepala ke ekor ( @
).
Mengingat ular yang tidak mundur dan tidak ambigu, dapatkah Anda menulis sebuah program yang akan menghasilkan serangkaian gerakan yang dilakukan ular?
Ini kode-golf, jadi jawaban tersingkat menang!
Kasus uji:
(Catatan: @
Dapat diganti dengan karakter apa pun yang tidak ada di dalam v^<>
)
Memasukkan:
>>>>v
v
v<< @
v ^
>>>>>^
Keluaran: ddddssaassdddddww
Memasukkan:
@>>v
^ v
^ v
^<<<
Keluaran: dddsssaaawww
Memasukkan:
>>>v
v @
v ^
>>>>v ^
>>>>^
Keluaran: dddsssddddsddddwww
Memasukkan:
@<< v
^ v
v<^<<
v ^
>>^
Keluaran: ssaaaassddwwwwaa
Memasukkan:
@v<v
^v^v
^v^<
^<
Keluaran: ssawwasssawww
Jawaban:
Java,
626539536529 byte-87 byte dengan menyimpan beberapa di banyak tempat. Terima kasih kepada Tuan Umum untuk menunjukkan beberapa.
-3 byte karena saya tidak dapat menghapus semua ruang terlebih dahulu coba (terima kasih mbomb007)
+8 byte untuk diperbaiki untuk kasus ini:
-15 byte oleh deklarasi variabel front-loading
Versi yang dapat dibaca:
Mengambil String seperti
v @\n>>>^
. Buat jalur mulai dari setiap koordinat, lalu kembalikan yang terpanjang. Kepala pencarian yang diperlukan untuk jalur yang tumpang tindih adalah bagian tersulit.sumber
Ruby, 217
Ini dimulai pada
@
dan berjalan mundur, mencari tetangga yang menunjuk ke posisi saat ini (z
). Untuk memilih jalan yang benar di persimpangan 4 arah, ada baiknya tetangganya menunjuk ke arah yang sama (max_by{...}
). Jika tidak ada tetangga terdekat yang ditemukan, itu mengasumsikan bahwa pasti ada persimpangan dan menjangkau satu tingkat pada satu waktu sampai menemukan satu (until n
danc+=1
). Proses ini berulang untuk jumlah segmen tubuh (tidak termasuk kepala) (.scan(/\w/){...}
).Kasing uji coba yang saya tambahkan ke puzzle terus membuat saya tersandung, jadi saya beralih dari 182 char ke 218. Semua karakter tambahan itu memastikan pergerakan horizontal saya tidak masuk ke baris berikutnya. Saya ingin tahu apakah saya bisa mengatasinya dengan cara yang lebih baik.
Tidak Disatukan:
sumber