<div class="notebook"> <div class="nb-cell markdown" name="md1"> ## 06.08. Verflachung von Listen Schreiben Sie ein Prädikatflatten/2, das als Argumente zwei Listen nimmtund gelingt, wenn die zweite Liste die „Verflachung“ der ersten Liste ist: ``` ?- flatten([a,b,[c,d]],[a,b,c,d]). true. ?- flatten([[a,[b,[c,d]]]],[a,b,c,d]). true. ``` </div> <div class="nb-cell markdown" name="md2"> Eventuell benötigen Sie das Prädikate ``is_list/1``, das gelingt, wenn dasArgument eine Liste ist, und das Prädikat ``not/1``, das gelingt, wenn dasArgument ``false`` liefert. Sie können das Prädikat ``append/3`` verwenden, auch wenn das nicht zu der effektivsten Lösung führt. </div> <div class="nb-cell program" data-background="true" name="p1"> % flatten/2 % flatten: ist erfolgreich, wenn L2 die Verflachung aus L1 ist flatten(...):- ... </div> <div class="nb-cell query" name="q1"> flatten([[a,[b,[c,d]]]],[a,b,c,d]). </div> </div>