Ich versuche, mit einem kompositorischen Tool namens OpenMusic, die eine grafische Entwicklungsumgebung basierend auf gemeinsamen Lisp ist, zu arbeiten, und es verwendet etwas namens "Rhythm Trees". Ich versuche, Rhythmus Bäume mit einem Satz von Regeln und in OM diesem Baum zu erstellen, muss die folgende Struktur haben:OpenMusic: L-System Tree-Generierung mit Lisp
- Ein Baum eine Liste mit zwei Elementen ist
- Sein erstes Element ist ein Knoten
- Seine zweites Element ist eine Liste ihrer Kinder (die auch Bäume sein kann)
eine Baumtiefe n
, eine anfängliche einzelnen Knotenbaum (1)
und Transformationsregeln Gegeben:
- (1) -> (1 2)
- (2) -> (1)
soll es geben:
n = 1 -> (1 (1 2))
Also, wo ist die Frage? Denken Sie daran, dies ist kein Code-Writing-Service;) –
Sie haben Recht @Daniel die Frage ist: Wie kann ich dieses Verhalten rekursiv definieren? Antwort kann einfach Englisch sein, also kein Code-Service. Ich habe keine Ahnung, wo ich anfangen soll. Ich brauche nicht einmal eine Antwort, nur ein Anstupsen in die richtige Richtung wäre mehr als genug. – kureta
@kureta Können Sie versuchen, die Frage ein wenig besser zu erklären? Fügen Sie vielleicht ein paar Beispiele für Funktionsaufrufe hinzu, deren Ergebnisse und wie das Ergebnis erreicht wurde (schreiben Sie im Grunde den Prozess aus, den der Computer ausführen soll). So wie es jetzt ist, kann ich zumindest nicht herausfinden, was du willst. Ich meine, du beginnst mit '(1)'. Dies wird gemäß der ersten Regel in "(1 2)" umgewandelt. Es gibt keine Transformationsregel für '(1 2)' also wie kommt man zu '(1 (1 2))'? Sollen die Atome in diesem auch umgewandelt werden (aber dann hättest du '((1 2) (1))')? – jkiiski