Je dois créer cette fonction flat
qui est supposée re-contracter une nouvelle liste de la liste d'entrée (mais ici, la liste d'entrée peut avoir une liste imbriquée à l'intérieur):Extraire chaque nombre dans la liste et reconstruire la liste?
ex. plat (A (B (C) D) A) est (ABCDA)
Mon algorithme est le suivant, pas sûr si elle est correcte:
- Vérifiez si la liste est vide: sinon, allez sur; si oui, fait - retourne la liste vide
- Si la liste a une longueur de 1, done - retourne la liste
- Si la liste a une longueur supérieure à 1, que dois-je faire maintenant? (Je peux utiliser
car
etcdr
pour extraire la liste, mais dans les deux cas, comment puis-je faire récursivement extraire la liste à la fin, et je pense utiliser append pour reconstruire la liste après.)
Toute aide/conseil serait appréciée.
Si la liste a une longueur 1, il pourrait toujours ressembler '((1))' et doit donc être 'flat'-tened – Dirk
oh droit ... a oublié que – Jonathan