HA3 7
-
- Nerd
- Beiträge: 647
- Registriert: 1. Okt 2007 12:40
- Wohnort: Darmstadt
- Kontaktdaten:
-
- Mausschubser
- Beiträge: 56
- Registriert: 6. Aug 2007 22:38
-
- Mausschubser
- Beiträge: 56
- Registriert: 6. Aug 2007 22:38
- Skylo
- BASIC-Programmierer
- Beiträge: 149
- Registriert: 7. Nov 2006 20:08
- Wohnort: Darmstadt (Woogsviertel)
- Kontaktdaten:
also mein weg bisher..
Die (insert-every-where) funktion wiederholt sich übrigens mit unterlisten quasi
Das hat bei mir ein Problem gelöst das ich zum verfolgen des 1. Ansatz von perm gebraucht hab.
Nun bei Perm hab ich nun nur noch das problem, das nachdem ich schon die richtigen Ergebnisse ausgegeben habe (klappt eigentlich wunderbar) er dann irgendwelche komischen Listen generiert wie
Ich hab im prinzip halt keine abruchbedingung leider. Oder muss halt am Ende die falschen raussortieren.
Im prinzip kann man beim sortieren doppelte elemente in der liste löschen und dann elemente die nicht die länge 3 haben danach.
Aber es muss auch ohne gehen!
Was ist eure Lösung zu dem problem!
Die (insert-every-where) funktion wiederholt sich übrigens mit unterlisten quasi
fügt also X überall in beide unterlisten ein.(insert-everwhere 'x ( (1 2 3 ) ( 3 4 5)) )
Das hat bei mir ein Problem gelöst das ich zum verfolgen des 1. Ansatz von perm gebraucht hab.
Nun bei Perm hab ich nun nur noch das problem, das nachdem ich schon die richtigen Ergebnisse ausgegeben habe (klappt eigentlich wunderbar) er dann irgendwelche komischen Listen generiert wie
und sowas!(perm '(1 2 3))
... (2 2 3) ( 3 3 3)
Ich hab im prinzip halt keine abruchbedingung leider. Oder muss halt am Ende die falschen raussortieren.

Im prinzip kann man beim sortieren doppelte elemente in der liste löschen und dann elemente die nicht die länge 3 haben danach.
Aber es muss auch ohne gehen!
Was ist eure Lösung zu dem problem!
Junge, geh kacken! Echt jetzt!
-
- Mausschubser
- Beiträge: 56
- Registriert: 6. Aug 2007 22:38
kannst du nicht irgendwie terminieren, wann das ende der richtigen ausgegebenen listen ist?
ich haenge noch ein paar schritte vor dir...
(perm '(1 2) liefert
(list (list 1 1 2) (list 1 1 2) (list 1 2 1) (list 2 1 2) (list 1 2 2) (list 1 2 2))
jetzt muss ich nur die doppelten zahlen in der liste und die doppelten listen mit filter irgendwie verschwinden lassen.
gibts da keinen vordefinierten operator fuer filter?
ich haenge noch ein paar schritte vor dir...
(perm '(1 2) liefert
(list (list 1 1 2) (list 1 1 2) (list 1 2 1) (list 2 1 2) (list 1 2 2) (list 1 2 2))
jetzt muss ich nur die doppelten zahlen in der liste und die doppelten listen mit filter irgendwie verschwinden lassen.
gibts da keinen vordefinierten operator fuer filter?

- Skylo
- BASIC-Programmierer
- Beiträge: 149
- Registriert: 7. Nov 2006 20:08
- Wohnort: Darmstadt (Woogsviertel)
- Kontaktdaten:
hmmm ich hatte mal ne ähnlihce ausgabe bevor ich alles neu programmiert hab!
Nämlich wie gesagt insert-everywhere.
Die Hauptzeile meines Programms ist wohl
Perm wird solang aufgerufen bis die Liste nur 1 Lang ist und gibt dann nur die Einelement List zurück.
Also meist (3)
Dann führt er eigentlich zum ersten Mal map mit der Funktion insert-x aus.
Hier fügt er das element davor (first alon) in das Ergebnis aus (perm (rest)) ein.
Also kommen eigentlich zwei listen
(2 3) und (3 2) raus.
Dann fügt er quasi mit insert-everywhere 1 ein und das in beide listen an alle stellen.
Damit kommt er dann auf alle richtigen Ergebnisse.
Wichtig ist das INSERT-EVERYWHERE meiner Meinung nach auch alle Teillisten bearbeitet.
Noch dazu muss halt die Rekursion schlau gewählt sein.
Problem is ja immernoch (ich weiss auch nich mehr grad weiter), das er nach den richtigen Ergebnissen halt noch irgendeinen Müll auswirft
Nämlich wie gesagt insert-everywhere.
Die Hauptzeile meines Programms ist wohl
Code: Alles auswählen
(map insert-x (perm (rest alon)))
Also meist (3)
Dann führt er eigentlich zum ersten Mal map mit der Funktion insert-x aus.
Hier fügt er das element davor (first alon) in das Ergebnis aus (perm (rest)) ein.
Also kommen eigentlich zwei listen
(2 3) und (3 2) raus.
Dann fügt er quasi mit insert-everywhere 1 ein und das in beide listen an alle stellen.
Damit kommt er dann auf alle richtigen Ergebnisse.
Wichtig ist das INSERT-EVERYWHERE meiner Meinung nach auch alle Teillisten bearbeitet.
Noch dazu muss halt die Rekursion schlau gewählt sein.
Problem is ja immernoch (ich weiss auch nich mehr grad weiter), das er nach den richtigen Ergebnissen halt noch irgendeinen Müll auswirft

Junge, geh kacken! Echt jetzt!
- Skylo
- BASIC-Programmierer
- Beiträge: 149
- Registriert: 7. Nov 2006 20:08
- Wohnort: Darmstadt (Woogsviertel)
- Kontaktdaten:
mit einer weiteren hilfsfunktion komme ich nun auf dieses Ergebnis
Yeah! 
Leiderbrauch ich für diese Ausgabe pro lÄnge > 2 der Eingangsliste ein flatten-once mehr!
Wer kennt dieses Problem?
PS: Die Hilfsfunktion die mir gefehlt hat war eine Suche ob ein Objekt bereits inner Liste drinsteckt.
So fügt er kein 1 mehr in eine Liste wie 1 2 ein!
Code: Alles auswählen
(list (list 1 2) (list 2 1))
(list (list 1 2 3) (list 2 1 3) (list 2 3 1) (list 1 3 2) (list 3 1 2) (list 3 2 1))
(list
(list 1 2 3 4)
(list 2 1 3 4)
(list 2 3 1 4)
(list 2 3 4 1)
(list 1 3 2 4)
(list 3 1 2 4)
(list 3 2 1 4)
(list 3 2 4 1)
(list 1 3 4 2)
(list 3 1 4 2)
(list 3 4 1 2)
(list 3 4 2 1)
(list 1 2 4 3)
(list 2 1 4 3)
(list 2 4 1 3)
(list 2 4 3 1)
(list 1 4 2 3)
(list 4 1 2 3)
(list 4 2 1 3)
(list 4 2 3 1)
(list 1 4 3 2)
(list 4 1 3 2)
(list 4 3 1 2)
(list 4 3 2 1))

Leiderbrauch ich für diese Ausgabe pro lÄnge > 2 der Eingangsliste ein flatten-once mehr!
Wer kennt dieses Problem?
PS: Die Hilfsfunktion die mir gefehlt hat war eine Suche ob ein Objekt bereits inner Liste drinsteckt.
So fügt er kein 1 mehr in eine Liste wie 1 2 ein!
Junge, geh kacken! Echt jetzt!
-
- Nerd
- Beiträge: 647
- Registriert: 1. Okt 2007 12:40
- Wohnort: Darmstadt
- Kontaktdaten:
-
- Mausschubser
- Beiträge: 70
- Registriert: 1. Okt 2007 15:55
- Wohnort: Darmstadt
- Kontaktdaten:
Hi, hab mal eine ganz kurze und wohl blöde Frage...
Und zwar soll ja in der Ausgabe bei der 7.1 stehen '( x x x)
Und bei mir steht jetzt (list x x x)
Im Prinzip ist es ja das gleiche, aber ich frage mich, ob wir jetzt speziel die Quote Ausgabe machen müssen oder nicht...
Und wenn, dann frage ich mich, wie ich das machen soll....
Ich stehe da gerade auf dem Schlauch
Und zwar soll ja in der Ausgabe bei der 7.1 stehen '( x x x)
Und bei mir steht jetzt (list x x x)
Im Prinzip ist es ja das gleiche, aber ich frage mich, ob wir jetzt speziel die Quote Ausgabe machen müssen oder nicht...
Und wenn, dann frage ich mich, wie ich das machen soll....
Ich stehe da gerade auf dem Schlauch