Katakanlah saya sedang menulis sesuatu, dan saya tidak sengaja menulisnya di kotak yang salah:
+-------+--------+
| Verbs | Nouns |
+-------+--------+
| Truck | |
| eat | Banana |
| | Car |
+-------+--------+
Jadi saya, karena malas, hanya menggambar panah ke ruang seharusnya:
+-------+--------+
| Verbs | Nouns |
+-------+--------+
|[Truck]---> |
| eat | Banana |
| | Car |
+-------+--------+
Tugas Anda adalah untuk membuatnya terlihat cantik - ubah menjadi ini:
+-------+--------+
| Verbs | Nouns |
+-------+--------+
| | Truck |
| eat | Banana |
| | Car |
+-------+--------+
Aturan
- Frasa atau kata dikelilingi oleh tanda kurung ([...])
Entri multiline dilambangkan sebagai [...](multiline dihapus), baris baru, [...] --...-->. Jadi panah selalu keluar dari braket kananbawah
Sebagai contoh:
+-----------+----------+
| Verbs | Nouns |
+-----------+----------+
| | |
|[is a noun]-> |
| eat | Banana |
| | Car |
+-----------+----------+
Berubah menjadi:
+-----------+----------+
| Verbs | Nouns |
+-----------+----------+
| | |
| | is a noun|
| eat | Banana |
| | Car |
+-----------+----------+
- Kotak dibatasi oleh plus ("+"), dan harus diasumsikan bahwa panah tidak akan melewati plus
- Akan selalu ada ruang di ujung panah untuk kata atau frasa yang cocok
- Urutan penting - kata harus muncul di tempat panah menunjuk, meskipun penyelarasan vertikal tidak penting
- Panah dapat berputar 90 derajat sekaligus, tetapi hanya antara "/" dan "\" (lihat di bawah)
Sebagai contoh:
+-----------+----------+
| Verbs | Nouns |
+-----------+----------+
| [Truck]--\| |
/------------/| <--\
| | eat | Banana ||
| | /--\ | Car ||
| +--|--|-----+----------+|
\----/ \-----------------/
Sebuah kompetisi
Setiap input dapat diterima (file teks, STDIN, dll.)
Setiap output yang dapat dibaca dapat diterima (file teks, STDOUT, dll)
Berikut ini beberapa contoh lainnya:
Ini golf kode, jadi kode terpendek menang!
Beberapa test case:
+--------+----------+-------------+
| Colors | Foods | Countries |
+--------+----------+-------------+
| red | pizza | Switzerland |
/--> /----> | |
| |[kale]/ | hot dogs | Brazil |
| | <----------------------\ |
| | orange |[yellow]\ | [green]/ |
| +--------+--------|-+-------------+
\-------------------/
/------------------------------------------\
| |
| +------------------+----------+-------+ |
| | frog | | | |
| | forge | dog | eagle | |
| | foundation | diligent | ease | |
| |[Brother]--\ | down | elf | |
| | | |[egg]--\ |[fort]---/
\----> | | | | |
| \-\ | \-----> |
+-------------|----+----------+ |
| Boy \--> | |
| Bull | |
| Browser | |
+-----------------------------+-------+
/--------------------------------------\
| /---------------\|
/------------|---------------------/ ||
| | /---------------\ ||
| +---------|-+-----------+-|------+--------|+ ||
\----> | | clarinet | \> | [drums]/| ||
| [viola]\\---> | +---------+ ||
| \-----> | | |/---/|
+-----------+ [violin]\ | | [cello]--/ |
| <------------/ | +---------+ |
| +-----------+ <----------\| |
| | | | [tuba]/| |
| | [piano]\ | | | |
| <-----------/ | | | |
| +-----------+--------+ | |
| | |[trumpet]------/
| [flute]-----> | |
| | saxaphone | |
+-----------+--------------------+---------+
Jawaban:
Python,
700681676667 karakterBelum sepenuhnya bermain golf, tetapi ingin memberikan jawaban.
Strategi :
Saya mengubah input menjadi sebuah matriks. Lalu saya memindai baris demi baris, mencari
[
s. Untuk setiap[
, saya menemukan yang cocok]
, lalu saya memanggil fungsi jejakT
dengan tempat langsung di sebelah kanan]
. Fungsi jejak mengikuti garis, mengganti jalur dengan' '
s saat berjalan, dan mengembalikan ke mana kata harus pergi. Kemudian saya menghapus kata di lokasi lama dan meletakkan kata di lokasi baru.Akhirnya, saya menelepon
F
, yang secara rekursif merekonstruksi kotak-kotak itu.Tes :
sumber