Was ich hier versuche, ist zunächst eine beliebige Liste flattern und dann diese Liste in meine Verschlüsselungsfunktion übergeben. Obwohl das nicht funktioniert und ich bin mir nicht sicher warum. Hier ist das, was ich bisher,(Common Lisp) Abflachung und Weitergabe Liste
(defun flatten (l)
(cond ((null l) l)
((atom l) (list l))
(t (loop for a in l appending (flatten a))))
)
(defun encrypt(enctext)
(flatten enctext)
(if(eq 'A (first enctext)) ;If the first charcater equals 'A'...
(progn ;To allow multiple statements in an if statement
(prinC#\B) ; First statement, print this character
(encrypt(rest enctext)))) ;Second statement, run function again passing the rest of the characters
(if(eq 'B (first enctext))
(progn
(prinC#\C)
(encrypt(rest enctext))))
)
Und das ist, wie ich den Aufruf der Verschlüsselungsfunktion
(encrypt '((A)(B))
Soll ich die „abzuflachen“ -Funktion innerhalb meiner „verschlüsseln“ Funktion aufrufen? Oder rufen Sie nach den rekursiven Aufrufen innerhalb der Funktion "flatten" "encrypt" auf? Und wie würde ich die gedrückte Liste richtig übergeben?
Danke ! Ich habe versucht, alles in eine Funktion zu integrieren, aber ich bin mir nicht einmal sicher, ob du das kannst. – Jcan1995
@JoshuaCantero Ich fügte ein weiteres Beispiel hinzu, um es ohne Abflachung zu tun. – jkiiski
Ja, mir ist aufgefallen, es hilft sehr. – Jcan1995