Tulis program yang menerima (melalui stdin atau baris perintah) string dengan bentuk rekursif
PREFIX[SUFFIXES]
dimana
PREFIX
mungkin sembarang string huruf kecil (az), termasuk string kosong, danSUFFIXES
dapat berupa urutan string apa pun dengan bentuk rekursif yangPREFIX[SUFFIXES]
disatukan, termasuk urutan kosong.
Buat daftar string huruf kecil dari input dengan mengevaluasi secara berulang daftar string di masing-masing sufiks dan menambahkannya ke awalan. Output ke stdout string dalam daftar ini dalam urutan apa pun, satu per baris (ditambah satu baris tambahan opsional).
Contoh
Jika inputnya
cat[s[up[][]][]ch[e[r[]s[]]]a[maran[]comb[]pult[[]ing[]]]]
maka awalan adalah
cat
dan dan akhiran yangs[up[][]]
,[]
,ch[e[r[]s[]]]
, dana[maran[]comb[]pult[[]ing[]]]
. Setiap sufiks memiliki awalan dan sufiks pada gilirannya.Outputnya adalah 9 kata ini dalam urutan apa pun
catsup cats cat catcher catches catamaran catacomb catapult catapulting
karena input mengkodekan pohon ini
dan masing-masing dari 9 kata keluaran dapat dibentuk dengan melintasi pohon dari akar ke daun.
Catatan
Ingat bahwa awalan mungkin berupa string kosong, jadi kira-kira seperti itu
[donut[][]cruller[]]
adalah input yang valid yang hasilnya akan (dalam urutan apa pun)
donut cruller
di mana baris kosong adalah untuk string kosong yang cocok dengan sufiks kedua.
Urutan akhiran juga bisa kosong, jadi kasus input sepele
[]
memiliki satu baris kosong sebagai hasilnya:
- Anda dapat mengasumsikan bahwa input hanya akan menghasilkan kata-kata keluaran unik.
- mis.
hat[s[]ter[]s[]]
akan menjadi input yang tidak valid karenahats
dikodekan dua kali. - Demikian pula,
[[][]]
tidak valid karena string kosong dikodekan dua kali.
- mis.
- Anda tidak boleh berasumsi bahwa inputnya sesingkat atau sekompresi mungkin.
- misal
'e'
simpul dalam contoh utama di atas dapat dikombinasikan dengan'ch'
simpul tersebut, tetapi itu tidak berarti bahwa input tidak valid. - Demikian pula,
[[[[[]]]]]
ini valid, meskipun hanya pengkodean string kosong dengan cara yang tidak optimal.
- misal
- Alih-alih program Anda dapat menulis fungsi yang mengambil string input sebagai argumen dan mencetak output secara normal atau mengembalikannya sebagai string atau daftar.
Kode terpendek dalam byte menang.