Een lijst $$l$$ is opgebouwd uit strings, getallen en lijsten. Elk van die lijsten bevat opnieuw strings, getallen of lijsten. Deze laatste lijsten bevatten opnieuw strings, getallen of lijsten van ... . Een voorbeeld van een derglijke lijst $$l$$ is ['a', 'b', 1, ['a', 'b'], ['c', [2, 'b', ['e']], 'c']]. Het gaat dus om geneste lijsten, waarbij het niveau van nesting op voorhand niet vastligt.

Schrijf een functie vlak() met als enig argument een dergelijke lijst $$l$$. Het resultaat is een nieuwe lijst, die geen nesting bevat, maar die alle strings van $$l$$ bevat in de volgorde waarin ze ook in $$l$$ voorkomen. De vlakke versie van l = ['a', 'b', 1, ['a', 'b'], ['c', [2, 'b', ['e']], 'c']] is dus ['a', 'b', 1, 'a', 'b', 'c', 2, 'b', 'e', 'c'] .

LET OP: Je code mag geen lusconstructies bevatten (geen for- of while-lussen en ook geen comprehensions, en moet recursief geschreven worden (en moet dus zeker een zinvolle recursieve oproep bevatten).

Voorbeeld

vlak(['a', 'b', 1, ['a', 'b'], ['c', [2, 'b', ['e']], 'c']])
#['a', 'b', 1, 'a', 'b', 'c', 2, 'b', 'e', 'c']