HA3 7

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Beitrag von Krümelmonster »

Ich habe es mit dem Tipp
immerhin schon geschafft,
insert-everywhere mit einer
lokalen Hilfsprozedur zu
implementieren.

Wie ich da jetzt map einbauen
soll ist mir ein Geheimnis.
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von Stumpf.Alex »

Ah..danke für den Tipp! Das hat bei mir eine Lawine ins rollen gebracht! Die Idee die dahinter steckt ist geil, aber darauf muss man erstmal kommen.

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Beitrag von Krümelmonster »

Hab jetzt die Hausübung komplett fertig.

War ziemlich knifflig diesmal finde ich.
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

ChRiZz88
Mausschubser
Mausschubser
Beiträge: 87
Registriert: 7. Nov 2007 18:09
Kontaktdaten:

Beitrag von ChRiZz88 »

Tss.. Ich hab weiter nichmal ne Minimalchance, das insert-everywhere rauszufinden, da helfen alle Tipps nix Oo Mein Problem ist, dass mir die doppelte Rekursion, also insert-at mit dem Rest von der von generate-all-pos erstellten Liste UND insert-everywhere erneut aufrufen, einfach ein Rätsel is =) Flatten-once hab' ich inzwischen erledigt, aber mit perm kann ich nicht weitermachen, solange insert-everywhere nicht funktioniert ;)

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Beitrag von Krümelmonster »

In der insert-everywhere brauchst du ja
noch eine Hilfsprozedur, die das X an der
gegebenen Stelle einfügt.
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

ChRiZz88
Mausschubser
Mausschubser
Beiträge: 87
Registriert: 7. Nov 2007 18:09
Kontaktdaten:

Beitrag von ChRiZz88 »

Hab ich doch schon mit insert-at, oder?

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von Stumpf.Alex »

JA, aber insert-everywhere, gibt dir eine Liste, in der alle möglichen Positionen in der das X eingefügt werden kann, zurück.

Tipfeler
Neuling
Neuling
Beiträge: 2
Registriert: 27. Okt 2007 19:02

Beitrag von Tipfeler »

Dürfen wir eigentlich

(length '(a b c)) benutzen um die länge einer liste zu erfahren?

Oder muss man dafür ne eigene Prozedur schreiben?

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von Stumpf.Alex »

Ich denke du darfst alles benutzen was in dem Sprachlevel, das für die Aufgabe verwendet werden soll, zur Verfügung steht. Du musst ja nicht jedesmal das Rad neu erfinden. :lol:

ChRiZz88
Mausschubser
Mausschubser
Beiträge: 87
Registriert: 7. Nov 2007 18:09
Kontaktdaten:

Beitrag von ChRiZz88 »

Stumpf.Alex hat geschrieben:JA, aber insert-everywhere, gibt dir eine Liste, in der alle möglichen Positionen in der das X eingefügt werden kann, zurück.
Joa, also sieht mein Ansatz so aus, dass ich sag:
Wenn die Liste leer ist, dann (cons x empty)
Wenn rest der Liste leer is, dann Ausgabe
Wenn die Liste ein Element hat, dann Liste aus insert-at mit Parameter 1 und insert-at mit Parameter 2 (einfach mal, um das zu testen, wird wahrscheinlich auch von einer funktionierenden Rekursion abgefangen)
Und meine Rekursion sieht bisher so aus:
else Liste aus insert-everywhere mit Parameter x und dem Rest der Liste aus generate-all-pos von 1 bis zur Anzahl der Listenelemente --> geht aber in ne Endlosschleife.

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von Stumpf.Alex »

Wenn du das jetzt veruschst auf map zu abstrahieren hast du es! (abgesehen von der Endlosschliefe, dass sich aber dann auch lösen sollte)

ChRiZz88
Mausschubser
Mausschubser
Beiträge: 87
Registriert: 7. Nov 2007 18:09
Kontaktdaten:

Beitrag von ChRiZz88 »

Und was soll map genau machen in dem Fall?? Hmm, wenn Problem ist jetzt, dass ich nicht weiß, wie ich map sagen soll, dass er die von generate-all-pos erzeugte Liste nacheinander durchgehen soll... Bisher mache ich nur mit (first ....) oder (first (rest ... ) und so, das stimmt auch soweit, aber ich müssts automatisieren

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von Stumpf.Alex »

Naja, du gibts map halt nicht die Originalliste, sondern die durchnummererierte Liste von generate-all-pos. Dann brauchst du nur noch eine lokale Hilfsprozedur, die in map aufgerufen wird. Da map die sortierte Zahlenliste Element für Element durcharbeitet, weißt du auch an welcher Position das neue Element in der Orignalliste rein muss.

ChRiZz88
Mausschubser
Mausschubser
Beiträge: 87
Registriert: 7. Nov 2007 18:09
Kontaktdaten:

Beitrag von ChRiZz88 »

(insert-everywhere 5 '(3 2)) --> (list (list (list 5 3 2)) (list (list 3 5 2)) (list (list 3 2 5)))

ist immer wieder einmal list zu viel, oder? Oo

Edit: Okay, ein cons rausgenommen, jetz gehtz ;D Danke, ich find' die Lösung sensationell^^ Zumal ich jetz map verstanden habe :D danke, Alex ;)

Benutzeravatar
giftnudel
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 112
Registriert: 3. Mai 2005 11:26

Beitrag von giftnudel »

Dann nimm's halt weg. Find mal raus, wo die zusätzliche Liste herkommt, bestimmt irgendwo am Ende deiner Rekursion.

Antworten

Zurück zu „Archiv“