Tantangan
Anda telah memberikan peta kepada teman yang terlihat sedikit seperti ini:
|
/
|
/
|
\
|
\
D
Peta sederhana yang dimulai di bagian atas dan berakhir di bagian bawah. Sayangnya, temanmu tidak mengerti. Bisakah Anda memecahkan kode peta sehingga dia bisa membacanya?
Memasukkan
Input adalah string karakter yang terdiri dari |
, /
, \
, D
, ^
, Y
, (space) , dan baris baru.
|
menyuruh tinggal di kolom yang sama.\
memberitahu untuk pindah ke kolom ke kanan dan ke bawah 1./
memberitahu untuk pindah ke kolom ke kiri dan ke bawah 1.D
menandai tujuan.^
(Jika ada) menceritakan perpecahan di jalan.Y
(Jika ada) menceritakan tentang bergabung kembali dengan jalan. Perlakukan itu seperti|
.
Input akan diatur sedemikian rupa sehingga membuat semacam jalur:
|
|
\
|
^
/ \
/ |
D |
Akan selalu ada spasi di antara dua jalur, dan semua jalur akan bergabung kembali atau mencapai baris terakhir dari input. Hanya akan ada satu pembagian per peta. Tidak ada batasan panjang peta input. Tidak akan pernah ada lebih dari dua jalur.
Keluaran
Outputnya harus berupa serangkaian arah.
- " L " harus memberi tahu temanmu untuk memindahkan L. eft dan mengambil 1 langkah ke depan.
- " R " harus memberi tahu teman Anda untuk memindahkan R ight dan mengambil 1 langkah maju.
- " F " harus memberi tahu teman Anda untuk maju 1 langkah.
Untuk peta contoh input, outputnya adalah sebagai berikut:
F F L F R R R
Perhatikan bahwa teman Anda mulai di bagian atas peta dan menghadap ke bawah peta. Berikan arahan dari sudut pandangnya. Misalnya "^", program Anda harus dapat memilih jalur yang mengarah ke tujuan (D). Jika kedua jalur bergabung kembali, program Anda harus memilih jalur paling lurus (jalur paling banyak |
) untuk diikuti. Petunjuk arah harus dipisahkan oleh spasi, dan harus diakhiri dengan D .
Contohnya
Memasukkan
|
|
\
\
^
/ |
| |
\ |
\ \
\ \
\ /
Y
D
Keluaran
F F L L L F F F L L R F
Karena jalur paling kiri hanya berisi 1 |
, kami menggunakan jalur paling kanan yang memiliki 3.
Memasukkan
\
|
/
|
\
|
/
D
Keluaran
L F R F L F R
Memasukkan
/
\
/
\
^
\ \
D \
Keluaran
R L R L R L
Detail lainnya
- Ini golf kode, jadi orang dengan kode terpendek pada hari Rabu berikutnya, 19 Agustus, menang.
- Umpan balik yang konstruktif disambut dan sangat dihargai.
- Terinspirasi sebagian oleh A Map to Hidden Treasure
- Jangan ragu untuk mengubah judul menjadi sesuatu yang lebih kreatif.
- Jika Anda menemukan kesalahan yang saya buat, perbaiki.
- Dan tentu saja, bersenang-senanglah.
Terima kasih!
Agak terlambat, mungkin, tapi UndefinedFunction adalah pengkodean pemenang dalam JavaScript! Terima kasih untuk semua yang masuk. Tidak ada entri lain yang akan diterima.
L L
, yang saya pikir seharusnyaL L L
. Contoh denganY
masih memiliki1
di akhir dan juga tampaknya memiliki kesalahan lain. Saya membaca peta seolah-F F R R R F F F R R L F
olah saya memahami aturan dengan benar.L
untuk^
keduanya dan duaL
untuk keduanya/
? Dan mengapa Anda menambahkan dua lagiF
di akhirY
contoh?Jawaban:
Javascript (ES6),
261248252248212 byteKarena hanya satu pemisahan yang harus didukung:
Namun, 240 byte dan kami dapat menangani beberapa pemisahan:
Kedua program mendefinisikan fungsi anonim.
Untuk menggunakan, beri fungsi nama dengan menambahkan
f=
sebelum kode.Setelah itu, mereka dapat dipanggil dengan
Penjelasan
(usang, tetapi masih konsep yang sama. Untuk solusi split ganda)
Catatan
Semua garis miring terbalik (
\
) pada input diloloskan sebagai\\
, sehingga javascript dapat mengenalinya.Kedua output berisi spasi tambahan.
sumber
PHP,
634631607396382381347338330337324 byteGolf pertamaku jadi lembut. Setiap tips sangat dihargai.
Penjelasan Singkat:
Saya memiliki hitungan yaitu 0 jika Input hanya memiliki satu jalur. Ketika jalur membagi jumlah adalah 1 untuk jalur kiri dan 2 untuk jalur kanan. Setelah mendefinisikan kedua jalur (atau hanya satu) saya memeriksa jalur mana yang memiliki lebih banyak "F's".
Versi Tidak Serigala:
Log:
Disimpan 36 Bytes berkat Kamehameha.
Menyimpan banyak byte dengan mengubah sedikit logika.
Disimpan 42 Bytes berkat aksioma.
Diganti setiap statment dengan operator ternary.
sumber
$a=$b='';
bukannya -$a='';$b='';
Menghemat sekitar 3 byte.$a=$a.'L ';
dapat dikurangi menjadi$a.='L '
. Anda tampaknya telah melakukan itu di beberapa tempat. Itu akan menghemat sekitar 6 byte :)foreach($e as$i)
); Saya telah menguji itu dan tampaknya berfungsi dengan baik.as
di dalamforeach
, spasi di antaraecho
dan nama variabel dapat dihapus sehingga Anda memilikiecho$b
. Juga, beberapa tes kesetaraan dapat lebih pendek juga,$c==0
bisa!$c
dan jika itu yang terjadi, Anda dapat menginisialisasinya$c
untuk''
dengan$a
dan$b
!PHP, 281 byte
Ini adalah hasil dari dua iterasi golf. Versi ungolfed adalah:
Ini cukup golf sendiri dan muncul sebagai peningkatan dari program golf berikut (312 byte):
Ini adalah versi golf dari aslinya:
Contoh eksekusi:
Ini juga menangani beberapa garpu dengan benar (perlu bergabung sebelum garpu berikutnya untuk memiliki paling banyak dua cabang kapan saja). Saya bertanya tentang beberapa garpu dalam komentar tetapi kode sudah dilakukan ketika jawabannya ("tidak diperlukan") datang.
Kode lengkap dengan test suite dan lebih banyak komentar dapat ditemukan di github .
sumber