You are not logged in.

SantaBlock

Praktikant

  • "SantaBlock" is male
  • "SantaBlock" started this thread

Posts: 13

Date of registration: Jan 15th 2004

Location: Nicht von dieser Welt

1

Wednesday, November 24th 2004, 5:01pm

Scheme Übung 5 Aufg 4

Wer kann mir helfen?
Mein Prorgramm sieht wie folgt aus:

(define (tribo-list n)
(if (< n 0) n
(cons (tribo n) (tribo-list (- n 1)))))

(tribo-list 10) liefert bei mir (81 44 24 13 7 4 2 1 1 0 0 . -1)
Wie schaffe ich es nun nur (81 44 24 13 7 4 2 1 1 0 0) zu erhalten?

  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

2

Wednesday, November 24th 2004, 5:51pm

RE: Scheme Übung 5 Aufg 4

Quoted

Original von SantaBlock
Wer kann mir helfen?
Mein Prorgramm sieht wie folgt aus:

(define (tribo-list n)
(if (< n 0) n
(cons (tribo n) (tribo-list (- n 1)))))

(tribo-list 10) liefert bei mir (81 44 24 13 7 4 2 1 1 0 0 . -1)
Wie schaffe ich es nun nur (81 44 24 13 7 4 2 1 1 0 0) zu erhalten?
Zwei Fehler:

Wird tribo-list mit einem Argument kleiner als Null aufgerufen, so gibst Du das Argument unverändert aus. Natürlich dürfen keine negativen Zahlen ausgegeben werden. Also ist die Bedingung für das Ende der Rekursion falsch.

Zudem wird am Ende der Rekursion eine Zahl zurückgegeben, anstatt einer Liste. Daher (81 44 24 13 7 4 2 1 1 0 0 . -1) statt (81 44 24 13 7 4 2 1 1 0 0 -1).
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

Andre@s

Praktikant

Posts: 25

Date of registration: Oct 15th 2004

Location: Hannover

3

Wednesday, November 24th 2004, 11:48pm

RE: Scheme Übung 5 Aufg 4

(define (tribo-list n)
(if (< n 0) '() ; <---anstatt n versuche mal die "leere liste" als letztes anzuhängen
(cons (tribo n) (tribo-list (- n 1)))))
(tribo-list 10)

'() = (list ) "leere liste"

das letzte element einer liste ist eine leere liste

SantaBlock

Praktikant

  • "SantaBlock" is male
  • "SantaBlock" started this thread

Posts: 13

Date of registration: Jan 15th 2004

Location: Nicht von dieser Welt

4

Wednesday, November 24th 2004, 11:58pm

genau. habs auch eben herausgefunden. im buch stand erst was mit nil, lief aber nich.
Trotzdem Danke

Lucky

Erfahrener Schreiberling

  • "Lucky" is male

Posts: 449

Date of registration: Oct 17th 2003

Location: Dresden

Occupation: Um ein bißchen mehr Ahnung zu haben als andere

5

Thursday, November 25th 2004, 1:06pm

Scheisse net, echt jetzt! Beim letzten Übungsblatt hatte ich diese Iterator Prozedur bissel falsch, aber bitte was?

Source code

1
2
3
4
5
6
7
8
9
(define (iterator start next end?)
  (define (i-innen cur n) (
                          if (end? cur n)
                             cur
                             (i-innen (next cur (+ n 1)) )
                             )
                          )
  (i-innen start 0)
 )



Danke für die Hilfe!
no risk no fun, no brain no pain nor gain

SantaBlock

Praktikant

  • "SantaBlock" is male
  • "SantaBlock" started this thread

Posts: 13

Date of registration: Jan 15th 2004

Location: Nicht von dieser Welt

6

Thursday, November 25th 2004, 1:40pm

Du meinst wohl die Iterator Prozedur aus dem 4. Übungsblatt, oder?
Versuchs mal hiermit:

(define (iterator start next end?)
(define (iterator-algo start next end? n)
(if (end? start n) start
(iterator-algo (next start n)
next
end?
(+ n 1)
)))
(iterator-algo start next end? 0))

Lucky

Erfahrener Schreiberling

  • "Lucky" is male

Posts: 449

Date of registration: Oct 17th 2003

Location: Dresden

Occupation: Um ein bißchen mehr Ahnung zu haben als andere

7

Thursday, November 25th 2004, 2:47pm

nochmal ne Frage:

Man hat eine Liste (define list ("Hallo" "Toll" "Schoen" "Scheisse"))

Und ich möchte das Wort an der 3. Stelle haben, OHNE car und cdr Befehle.
Also quasi: Wie komme ich an die n-te Stelle einer Liste ran???

Es würde auch gehen, wenn ich wüsste, wie ich das erste Wort einer liste, an das ich mit car rangekommen bin, löschen könnte!
no risk no fun, no brain no pain nor gain

This post has been edited 2 times, last edit by "Lucky" (Nov 25th 2004, 2:50pm)


  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

8

Thursday, November 25th 2004, 2:51pm

Quoted

Original von Lucky
Man hat eine Liste (define list ("Hallo" "Toll" "Schoen" "Scheisse"))

Und ich möchte das Wort an der 3. Stelle haben, OHNE car und cdr Befehle.
Also quasi: Wie komme ich an die n-te Stelle einer Liste ran???
list-ref

Quoted

Es würde auch gehen, wenn ich wüsste, wie ich das erste Wort einer liste, an das ich mit car rangekommen bin, löschen könnte!
list-tail
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

This post has been edited 1 times, last edit by "Joachim" (Nov 25th 2004, 2:51pm)


Lucky

Erfahrener Schreiberling

  • "Lucky" is male

Posts: 449

Date of registration: Oct 17th 2003

Location: Dresden

Occupation: Um ein bißchen mehr Ahnung zu haben als andere

9

Thursday, November 25th 2004, 3:39pm

danke Dir!
no risk no fun, no brain no pain nor gain

Lucky

Erfahrener Schreiberling

  • "Lucky" is male

Posts: 449

Date of registration: Oct 17th 2003

Location: Dresden

Occupation: Um ein bißchen mehr Ahnung zu haben als andere

10

Thursday, November 25th 2004, 9:41pm

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
    (define (spell-char char spell-list)
    (define (iteratorhilfe char1 spell-list1 n)
      (if (= n (length spell-list1))
              "scheisse"
              (if (eq? (string-ref (list-ref spell-list1 n) 0)
                   char)
                  (list-ref spell-list1 n)
                  (iteratorhilfe char1 spell-list1 (+ n 1)))
              )
           )
     (iteratorhilfe char spell-list 0))

(spell-char "ENGEL" (list "Einfuehlsam" "Goettlich" "Liebevoll" "Niedlich"))


Diese Funktion gibt bei mir scheisse aus, obwohl er doch Einfuehlsam ausgeben müsste!

Idee: Erstmal gucken mit if, ob denn schon das Ende der Liste erreicht ist. Wenn ja, dann scheisse ausgeben. Wenn nein, dann die zweite if Anweisung ausführen. Wenn erster Buchstabe des n.ten Wortes der Liste spell-list1 gleich dem Buchstaben der Variable char ist, dann prima, diese Wort ausgeben. Ansonsten sich selber nochmal aufrufen, aber mit n+1, da er ja bei 0 beginnt, dem ersten Wort in der Liste.


H I L F E
no risk no fun, no brain no pain nor gain

This post has been edited 3 times, last edit by "Lucky" (Nov 25th 2004, 9:46pm)


  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

11

Thursday, November 25th 2004, 10:09pm

Quoted

Original von Lucky
Diese Funktion gibt bei mir scheisse aus, obwohl er doch Einfuehlsam ausgeben müsste!
Gleich drei Fehler:

  • Das Prädikat eq? ist für string und char nicht definiert (siehe DrScheme-Hilfe zum Stichwort eq?). Hier mußt Du also ein anderes Äquivalenzprädikat verwenden (steht im selben Abschnitt in der Hilfe).

  • string-ref liefert den Typ char zurück. Das ist nicht mit string vergleichbar. (Strings sind Folgen von Chars, näheres siehe Hilfe.)

  • Den Beispielaufruf von spell-char solltest Du natürlich nicht mit "ENGEL", sondern mit einem einzelnen Zeichen machen. Wenn Du hier ein Argument vom Typ char übergibst (anstatt vom Typ string), kannst Du meine zweite Anmerkung vergessen.


HTH :)
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

Lucky

Erfahrener Schreiberling

  • "Lucky" is male

Posts: 449

Date of registration: Oct 17th 2003

Location: Dresden

Occupation: Um ein bißchen mehr Ahnung zu haben als andere

12

Thursday, November 25th 2004, 10:15pm

Auweia!

Ich hab jetzt aus allem Listen gemacht. Dann funktioniert es jetzt. Da hab ich echt was lustiges programmiert :D Naja, aber da die Aufgabenstellung den Vrrgleich zwischen einem char und einem Buchstaben aus einem Wort einer Liste fordert, muss ich noch bissel suchen, weiss jetzt aber, das zumindest das Prinzip stimmt... Nicht aber die Befehle lol! Danke Dir echt!
no risk no fun, no brain no pain nor gain

This post has been edited 1 times, last edit by "Lucky" (Nov 25th 2004, 10:16pm)


iriania

Junior Schreiberling

  • "iriania" is female

Posts: 222

Date of registration: Nov 24th 2003

Location: Waqwaq

Occupation: Wie? Ich studiere? seit wann denn?

13

Thursday, November 25th 2004, 10:28pm

Aufgabe 1.2

Hallo,
ich kriege den 2. Teil der 1. Aufgabe nicht auf die Reihe, weil ich nicht ganz verstanden habe, wie iterator funktioniert. Kann mir jemand da weiterhelfen?:(

(Ich kann bei der 4. Aufgabe helfen, falls jemand noch Schwierigkeiten damit hat!:D )
...und sie dreht sich doch!

This post has been edited 1 times, last edit by "iriania" (Nov 25th 2004, 10:39pm)


iriania

Junior Schreiberling

  • "iriania" is female

Posts: 222

Date of registration: Nov 24th 2003

Location: Waqwaq

Occupation: Wie? Ich studiere? seit wann denn?

14

Thursday, November 25th 2004, 10:34pm

Kann mir jemand freundlicherweise seine lösung für Aufgabe 4 des letzten Aufgabenblatts e-mailen? ich habe sie leider nicht lösen können, und Aufgabe 2 in diesem Blatt ist ja komplett darauf aufgebaut.
;(
...und sie dreht sich doch!

This post has been edited 1 times, last edit by "iriania" (Nov 25th 2004, 10:36pm)


Dude

Junior Schreiberling

Posts: 181

Date of registration: Oct 11th 2004

15

Thursday, November 25th 2004, 10:37pm

Die Musterloesung für Uebungsblatt Numero 4 ist bereits im Netz.

Lucky

Erfahrener Schreiberling

  • "Lucky" is male

Posts: 449

Date of registration: Oct 17th 2003

Location: Dresden

Occupation: Um ein bißchen mehr Ahnung zu haben als andere

16

Thursday, November 25th 2004, 10:37pm

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Alte:
(define (popsim p0 g n) 
  (define (popsim-iter ergebnis n) (
                           if (= n 0)
                           ergebnis
                           (popsim-iter (+ ergebnis (* (* g ergebnis) (- 1 ergebnis)))  (- n 1) )
                               ))
  (popsim-iter p0 g n)
  )
Neue auf iterator basierend:

(define (popsim po g nmax)
(iterator 
          po
          (lambda (cur n) (+ cur (* (* g cur) (- 1 cur))) )
          (lambda (cur n) (= n nmax) )
          
      ))
no risk no fun, no brain no pain nor gain

iriania

Junior Schreiberling

  • "iriania" is female

Posts: 222

Date of registration: Nov 24th 2003

Location: Waqwaq

Occupation: Wie? Ich studiere? seit wann denn?

17

Thursday, November 25th 2004, 10:42pm

Danke!
:)
...und sie dreht sich doch!

iriania

Junior Schreiberling

  • "iriania" is female

Posts: 222

Date of registration: Nov 24th 2003

Location: Waqwaq

Occupation: Wie? Ich studiere? seit wann denn?

18

Friday, November 26th 2004, 9:30am

?( Meine Lösung für Aufgabe 1.2 sieht bisher so aus:
(define (n-times proc n)
(iterator proc
(lambda (proc x)(f-nach-g proc proc))
(lambda (proc x )(>= x (- n 1) ))))
anstatt der erwarteten 256 bekomme ich aber 65536
(256^2). Woran könnte das liegen??? ?(
...und sie dreht sich doch!

SantaBlock

Praktikant

  • "SantaBlock" is male
  • "SantaBlock" started this thread

Posts: 13

Date of registration: Jan 15th 2004

Location: Nicht von dieser Welt

19

Friday, November 26th 2004, 7:14pm

Hoffe du hast es noch nicht losgeschickt... deine prozedur wendet proc einmal zuviel an. Ich hab deine Prozedur nur etwas geändert:

(define (n-times proc n)
(iterator proc
(lambda (cur x)(compose proc cur))
(lambda (cur x )(= x (- n 1)))))

Sollte jetzt laufen...hoffe ich

iriania

Junior Schreiberling

  • "iriania" is female

Posts: 222

Date of registration: Nov 24th 2003

Location: Waqwaq

Occupation: Wie? Ich studiere? seit wann denn?

20

Saturday, November 27th 2004, 8:39pm

Ich hatte es zwar schon längst geschickt, aber trotzdem danke!=)
...und sie dreht sich doch!