Tantangan
Buat fungsi yang, ketika diberi input seni ASCII (mengarahkan jalur yang pada akhirnya mungkin loop), output panjang loop (jika ada satu) dan panjang "ekor" yang mengarah ke loop di salah satu formulir di bawah ini.
Memasukkan
Masukan Anda harus diteruskan ke suatu fungsi. Di bawah ini adalah contoh input sederhana.
# --> # --> #
^ |
| |
| v
# <-- #
Anda dapat memvisualisasikan blok di atas seperti ini
"Ekor" adalah satu item, sedangkan loop empat panjang.
Yang lebih sulit:
# --> # --> #
^ |
| |
| v
# --> # <-- # # --> #
^ ^ |
| | |
| | v
# --> # # <-- # <-- #
Keluaran
Anda harus mengeluarkan melalui STDOUT atau alternatif terdekat bahasa Anda.
Dua bilangan bulat keluaran Anda harus panjang dari ekor dan panjang dari loop. Output ini bisa dalam dua bentuk.
- string yang dibatasi ruang:
"2 10"
- array bilangan bulat:
[2, 10]
Aturan
Setiap blok, atau
#
, hanya akan memiliki satu jalur dari dirinya sendiri.Setiap panah adalah dua segmen garis dan satu kepala.
Blok awal akan selalu berada di kolom paling kiri.
Input tidak akan pernah menjadi hanya satu lingkaran.
Contoh
# --> # --> # --> #
^ ^ |
| | |
| | v
# # <-- # <-- #
Yang ini memiliki panjang ekor 2 dan panjang lingkaran 6. Di bawah, ekor dan lingkaran dipisahkan.
Ekor
# -->
^
|
|
#
Loop
# --> # --> #
^ |
| |
| v
# <-- # <-- #
Output yang benar adalah [2, 6]
dan"2 6"
.
Jika input hanya berupa ekor , panjang loop adalah nol.
# --> # --> # --> #
|
|
v
<-- # <-- #
Output yang benar untuk input di atas adalah [6, 0]
dan"6 0"
sumber
Jawaban:
JavaScript (ES6), 221
229Suatu fungsi dengan input sebagai parameter, output sebagai string melalui jendela popup (peringatan).
Pindai input berulang kali:
pada setiap langkah
Ketika tidak ada lagi ekor yang harus dihilangkan, jumlah langkah sejauh ini adalah ukuran ekor dan jumlah sisa '# adalah ukuran lingkaran.
Semua baris baru di dalam backticks signifikan dan dihitung
Tes menjalankan cuplikan di bawah ini dengan Firefox (bukan Chrome, karena tidak mendukung
...
)sumber
Ruby,
287278 byteCoba di sini .
Ini membangun hash (kamus) dari node. Untuk setiap node, jumlah koneksi yang masuk dan node berikutnya (mungkin nol) disimpan.
Akhirnya:
Versi kode yang dapat dibaca tersedia di sini .
sumber
Ruby, 276
sumber