Hintergrund
Eine Matroschka-Puppe (oder russische Nistpuppe) ist eine Reihe von Puppen, die ineinander passen. Ich habe versehentlich meine Sammlung von Matroschka-Puppen verwechselt und weiß nicht mehr, welche in welche passt.
Zielsetzung
In einer vorgegebenen Liste von einzigartigen Strings, sortieren sie in verschachtelte Matrjoschka - Puppen. Jede Saite ist eine individuelle Puppe, und eine Matroschka-Puppe ist eine Liste von Saiten.
Regeln
Sei min(a,b)das lexikografische Minimum von Strings aund b. Es sei a ⊂ bbezeichnet, dass dies aeine Teilzeichenfolge von ist b. Dann,
- Die Liste der Matroschka-Puppen muss lexikographisch sortiert sein
- String
akann in String passen,bwenna ⊂ b - Wenn
a ⊂ bunda ⊂ c, dannawird reingehenmin(b,c) - Wenn beide
a ⊂ cundb ⊂ c, abera ⊄ bb ⊄ a, dann wird nurmin(a,b)hineingehenc - Wenn beide
a ⊂ cundb ⊂ c, und aucha ⊂ b, dann wird nurbhineingehenc. Das heißt, Superstrings stehen vor Teilstrings, damit die Matroschka nicht vorzeitig beendet wird.
Beispiele
In:
hahaha, hah, lol, lololol, bahaha, bah, haha, ah
Out:
bahaha, bah, ah
hahaha, haha, hah
lololol, lol
In:
aa, aaaa, a, aaaaaaaaaa
Out:
aaaaaaaaaa, aaaa, aa, a
ab, ba, aba, bab? Durch die Regel 3, die beide abund bagehen in abaund um 4 Regel banicht gehen kann entweder abaoder bab.