Di mana Panah Menunjuk?
Dalam tantangan ini, tujuan Anda adalah mengikuti panah dan menampilkan karakter yang ditunjuknya.
Contohnya
Memasukkan:
d S------+ b
|
|
c +--->a
Keluaran: a
Memasukkan:
S-----+---a->c
|
V
b
Keluaran: b
Panah tidak menunjuk c
karena dibagi oleh a
, artinya jalan ini tidak pernah mengarah ke kepala panah.
Memasukkan:
a S s
| |
V V
b c
Keluaran: b
Memasukkan:
d s<+S+--V
||| Q
-++
Keluaran: Q
Jalur ini dimulai pada S
, turun, ke kanan, naik, ke kanan, lalu menunjuk turun di Q. Perhatikan bahwa jalan tidak langsung dari S
ke +
.
Memasukkan:
d s-+ +-S +--+
+-->b | | |
| | +--+ |
+--+ A<----+
Keluaran: A
Memasukkan:
S-----+
| +-^
+---+->B
+---^
Keluaran: B
Karena garis yang valid tidak akan pernah mengarah ke karakter spasi putih. Satu-satunya baris yang tidak mengarah ke karakter spasi mengarah keB
Tantangan
Input akan berupa string multi-baris di mana Anda perlu menemukan karakter yang ditunjukkan panah. Hanya akan ada satu panah yang valid. Panah yang valid hanya akan mengarah ke karakter alfanumerik tidak termasuk S
. Sebuah garis tidak akan pernah tumpang tindih dengan sendirinya. misalnya-|-
S
(modal) menunjukkan dari mana panah dimulai.-
mewakili garis horizontal+
mewakili kemungkinan perubahan poros. Panah yang valid tidak akan pernah dimulai dengan a+
.|
mewakili garis vertikal> < V ^
semua ini mewakili kepala panah. Ini tidak akan pernah terhubung ke+
.
Hanya akan ada satu S
di string. Input juga akan diisi menjadi persegi panjang (tidak harus persegi).
S
." Mungkin harus ditulis ulang menjadi "Ini tidak akan pernah menjadi karakter pertama panah." (KarenaQ
contoh memiliki+
berdekatan denganS
.) "+
Mewakili perubahan sumbu." mungkin lebih baik "+
mewakili kemungkinan perubahan poros." (KarenaB
contoh menunjukkan bahwa Anda dapat bergerak melalui+
tanpa mengubah arah.) Sebaliknya, tantangan yang bagus. :)---^
? Dengan kata lain, jika dalam contoh B, dapatkah B tetap di baris pertama?S>a
validJawaban:
JavaScript (ES6), 195
245 231 242 246 250Edit4 Sekarang, fungsi rekursif tunggal. Mungkin tidak bisa bermain golf lagi
Edit3 Tes untuk garis lurus dan uji untuk panah digabung dalam fungsi T, fungsi S dan H dihapus.
Edit2 Revisi dan lagi :( setelah ini klarifikasi ini
Sunting Perbaikan kecil, potong char di sana-sini, tunggu CJammers masuk
Tes menjalankan cuplikan di bawah ini di peramban yang mendukung EcmaScript 6. (berfungsi di Firefox. Chrome masih kehilangan operator penyebaran
...
)sumber
JavaScript 2016,
264 263 249 240 235234 byteJalankan di Firefox:
Tersebar di beberapa catatan saya:
sumber
o = 'indexOf'
dan kemudian melakukanq[o](e)
ketika Anda ingin menggunakannya.for(;;)
loop biasanya paling efisien. Mungkin salah dalam hal ini, tetapi cobalah.a<-+S->b
Saya pikir itu harus memberib
saja, karena panah yang valid tidak akan pernah mulai dengan +JavaScript 2016
(masih jawaban yang valid dan baik, tidak masalah dengan itu)VBA Excel 2007, 894 byte
Yah ini dimulai jauh lebih baik maka itu berakhir. Saya merasa logika saya cacat dan saya bisa menghemat satu ton byte jika saya menata ulang beberapa logika saya, Tapi Terlalu banyak waktu telah tenggelam ke dalam ini sudah = P
Input untuk ini adalah Kolom A dari lembar apa pun yang Anda buka. Metode ini menggunakan fakta bahwa Excel memiliki kisi-kisi yang bagus dan memecah semuanya sehingga Anda dapat melihat apa yang dilakukannya lebih jelas.
Sub m()
hanya mengambil Salin data yang disisipkan dari Kolom A dan Membaginya dengan char. Jika Kami mengizinkan input yang Dimodifikasi, maka jika Anda memformat labirin menjadi 1 karakter per sel, Anda dapat menyimpan beberapa byte dengan menghapussub m()
Rekatkan Labirin ke Excel dalam berbagai ukuran hingga 99 baris dengan 27 karakter. Jika Anda ingin labirin yang lebih besar, hanya 2 Bytes tambahan untuk meningkatkan cakupan ke 999 baris dan kolom ZZ
Mungkin juga perlu panggilan hakim pada apakah Lembar Excel valid "Input Standar" untuk jawaban VBA. Jika tidak, itu sangat mustahil untuk memberikan VBA Multi-line input VIA jendela langsung
Untuk menjalankan kode ini cukup tempel kode ini ke modul Excel, Tempel labirin ke A1 dan jalankan
sub j()
sumber
Python 3, 349 byte
Ugh, sangat banyak byte.
Pada dasarnya pencarian luas pertama. Bonus: ini sebenarnya keluar dengan anggun alih-alih menggunakan
exit()
, yang lebih lama.sumber
input()
? Bagi saya itu bermasalah.Perl 5
Solusinya ternyata lebih lama dari solusi lainnya.
Bahkan setelah bermain golf. Jadi ini adalah versi tanpa ungolfed.
Mencetak peta sehingga Anda dapat mengikuti kursor.
Cara kerjanya? Pada setiap langkah itu menempatkan gerakan yang mungkin pada tumpukan. Dan itu terus berjalan sampai tidak ada yang tersisa di tumpukan, atau solusi ditemukan.
Dapat dengan mudah dimodifikasi untuk menemukan semua solusi dan memilih yang terdekat -> while (@_) {...
Uji
sumber
Versi PHP (komentar dalam bahasa Prancis, maaf)
sumber
Haskell, 268 byte
Selamat untuk para Javascript! Memberi hadiah, tapi inilah yang aku dapat. Mungkin / Mungkin tidak berfungsi dalam semua kasus, tetapi benar-benar menangani panah mulai dan panah yang menghubungkan ke
+
es, sejauh yang saya tahu. Bahkan tidak termasuk mencariS
, hanya(0,0)
untuk saat ini.sumber
Saya ingin melihat versi APL dalam semangat https://www.youtube.com/watch?v=a9xAKttWgP4
Sebagai permulaan, solusi Julia yang di-vektor-kan yang menurut saya bisa diterjemahkan 1: 0,3 ke APL atau J. Dibutuhkan string R yang mewakili L xK arrowgram. Pertama-tama menerjemahkan matriks simbol ke dalam matriks matriks 3x3 kecil yang polanya adalah perluasan biner dari huruf-huruf string "\ 0 \ x18 \ fH \ t]] \ x1cI". Misalnya '+' dikodekan sebagai membentuk kembali ([0, digit (int (']'), 2,8)], 3,3)
Dalam representasi ini, jalan terdiri dari 2 dan dibanjiri oleh 3 dari titik awal.
Untuk menguji,
By the way, saya pikir klausa "+ lain mungkin berdekatan tetapi panah harus memprioritaskan terjadi a - atau | pertama." menempatkan pendekatan vektor pada posisi yang kurang menguntungkan. Bagaimanapun, saya mengabaikannya.
sumber