Özyinelemeli formla bir dizeyi (stdin veya komut satırı aracılığıyla) alan bir program yazın
PREFIX[SUFFIXES]
nerede
PREFIX
boş dize de dahil olmak üzere herhangi bir küçük harf dizesi (az) olabilir veSUFFIXES
"Boşaltım"PREFIX[SUFFIXES]
terimi, boş diziyi içeren, özyinelemeli formun bir araya getirildiği herhangi bir dizgi dizisi olabilir.
Soneklerin her birindeki dize listesini özyineli olarak değerlendirip önekine ekleyerek girişten küçük harfli dizelerin bir listesini oluşturun. Bu listedeki dizgileri her satıra bir tane olacak şekilde sırayla çıktılamak için çıktı (artı isteğe bağlı bir son satırsonu).
Misal
Giriş
cat[s[up[][]][]ch[e[r[]s[]]]a[maran[]comb[]pult[[]ing[]]]]
Sonra öneki
cat
ve ve ekleri vardırs[up[][]]
,[]
,ch[e[r[]s[]]]
, vea[maran[]comb[]pult[[]ing[]]]
. Her son ekin kendi öneki ve sırayla ekleri vardır.Çıktı herhangi bir sırayla bu 9 kelime olurdu
catsup cats cat catcher catches catamaran catacomb catapult catapulting
çünkü giriş bu ağacı kodlar
ve 9 çıktı kelimesinin her biri, ağacın kökten yaprağa geçirilmesiyle oluşturulabilir.
notlar
Ön ekin boş dize olabileceğini unutmayın.
[donut[][]cruller[]]
çıkışı (herhangi bir sırayla) olacak geçerli girdidir
donut cruller
burada boş satır, ikinci son ekin eşleştiği boş dize içindir.
Sonek sırası da boş olabilir, bu nedenle önemsiz girdi durumu
[]
çıktısı olarak tek bir boş satır vardır:
- Girdinin yalnızca benzersiz çıktı sözcükleri üreteceğini varsayabilirsiniz.
- Örneğin
hat[s[]ter[]s[]]
,hats
iki kez kodlandığı için geçersiz giriş olur . - Benzer şekilde,
[[][]]
boş dize iki kez kodlandığı için geçersizdir.
- Örneğin
- Sen olabilir değil girişi Kısa gibidir ya da mümkün olduğunca sıkıştırılmış varsayalım.
- örneğin,
'e'
yukarıdaki ana örnekteki'ch'
düğüm düğüm ile birleştirilebilir , ancak bu girişin geçersiz olduğu anlamına gelmez. - Benzer şekilde,
[[[[[]]]]]
yalnızca boş dizgiyi en uygun olmayan şekilde kodlamaya rağmen geçerlidir.
- örneğin,
- Bir program yerine, giriş dizesini bağımsız değişken olarak alan ve çıktıyı normal olarak yazdıran veya bir dize veya liste olarak döndüren bir işlev yazabilirsiniz.
Bayt cinsinden en kısa kod kazanır.