Diberikan daftar jalur, output jalur yang benar.
Contoh jalur:
/\
----+/
|
-
dan|
jalur horizontal dan vertikal./
dan\
berbelok 90 °.+
diperlakukan sebagai a-
atau|
tergantung dari arah saat ini.
Path dapat menuju ke arah mana pun dan sebuah karakter dapat digunakan di banyak path.
Masukan akan seperti ini:
/--\
A------+--+--#
B------/ \--:
C------------#
D------------#
A
,B
,C
DanD
adalah jalan mulai#
adalah tembok (jalannya buruk):
adalah akhirnya (jalannya benar)
Jadi di sini hasilnya akan B
.
Anda dapat mengasumsikan:
:
dan#
akan selalu dijangkau dari kiri.- Karakter di sebelah kanan awal jalan akan selalu
-
. - Jalan akan selalu terbentuk dengan baik.
#
dan:
akan selalu berada di kolom yang sama.- Akan selalu ada hanya satu
:
dan 4 jalur.
Uji kasus
A------#
B------#
C------#
D------:
=>
D
A-\ /---:
B-+-/ /-#
C-+---+-#
D-+---/
\-----#
=>
B
/-\
A-+\\---#
B-/\-\/-#
C----++-#
D----+/
\--:
=>
A
A-\
B-+\
C-++\/----#
D-+++//---:
\++-//--#
\+--//-#
\---/
=>
A
/-\
A-+-/-\
B-+-+-\--#
C-+-/ |/-#
D-\---++-#
\---+/
\--:
=>
B
Karena ini adalah kode-golf , jawaban terpendek menang.
code-golf
ascii-art
path-finding
TuxCrafting
sumber
sumber
/
atau\
?:
selalu dijangkau dari kiri atau mungkinkah dicapai dari atas atau bawah juga? Dengan kata lain, mungkinkah ada karakter selain#
atau:
di kolom terakhir?Jawaban:
Menyelinap , 47 byte
Uji di sini.
Yay untuk fitur tidak berdokumen ...
Penjelasan
Slip pada dasarnya adalah sintaks regex dua dimensi dan secara default program Slip mencetak subset dari input yang mereka cocokkan. Dalam hal ini saya hanya mencocokkan jalur yang valid. Untuk mencegah pencetakan seluruh jalur, saya menggunakan yang tidak berdokumen
(?,...)
grup yang hanya menunjukkan bahwa karakter yang cocok di dalamnya harus dihilangkan dari output.Adapun regex, sayangnya, ada beberapa duplikasi karena
\
dan/
perlu diperlakukan berbeda tergantung pada apakah kita bergerak secara horizontal atau vertikal. Di sisi positifnya, karena kita tahu bahwa jalan dimulai dan berakhir secara horizontal, kita tahu bahwa ada bilangan genap\
atau/
di setiap jalur, sehingga kita bisa mencocokkan keduanya di satu waktu.sumber
:)
Python, 221 byte
Indentasi pertama hanya satu ruang, di loop sementara itu adalah tab.
sumber
Javascript (ES6),
117104 byteKasus uji:
sumber
Ruby, 140 byte
Cobalah di repl.it: https://repl.it/CyJv
Tidak disatukan
sumber
Perl 211 Bytes
Tidak Disatukan:
Ini adalah golf Perl pertama saya, jadi saran dipersilahkan :)
sumber