Dies ist eine statische Kopie unseres alten Forums. Es sind keine Interaktionen möglich.
This is a static copy of our old forum. Interactions are not possible.

Informatik Minister

Senior Schreiberling

  • "Informatik Minister" is male

Posts: 1,234

Date of registration: Dec 11th 2001

41

Wednesday, February 20th 2002, 11:17pm

OK, keinen bock mehr

Das ist meine finale Aufgabe, ich hab keine Lust mehr, obwohl ich zum ersten mal konzentriert an Scheme sass :)

Mal sehn was freitag auf mich zukommt, ich will auch sonne aufgabe und nix komplizierteres....oder was einfaches, was ich dann trotzdem nich schaff, weils n komisches thema beinhaltet...

(define (passt? liste)
(cond ((= (length liste) 2) (if (number? (car liste)) #t #f))
((null? liste) '())
(else (if (and (not (null? liste)) (even? (length liste))) (and (number? (car liste)) (or (symbol? (cadr liste)) (number? (cadr liste))) (passt? (cddr liste)))
#f))))

(define (Mutate ls)
(if (> (length ls) 0)
(if (= (car ls) 0)
(Mutate (cddr ls))
(cons (cadr ls) (Mutate (cons (- (car ls) 1) (cdr ls)))))
'()))

(define (Action ls)
(if (passt? ls)
(Mutate ls)
#f))


(Action '(2 f 4 w 2 t 3 g 4 g))
(Action '(g 3 h 4 j5))
(Action '())

Mieks

Alter Hase

  • "Mieks" is male

Posts: 106

Date of registration: Jan 14th 2002

Location: Linden

42

Wednesday, February 20th 2002, 11:18pm

So ???

(define (make-new-list orglist)
(define (check? liste)
(if (null? liste)
#t
(if (OR (null? (cdr liste)) (AND (not(symbol? (cadr liste))) (not(number? (cadr liste)))))
#f
(if (number? (car liste))
(check? (cddr liste))
#f))))
(define (writech char anz)
(if (= anz 0)
()
(append (list char) (writech char (- anz 1)))))
(define (rec alist)
(if (check? alist)
(if (null? alist)
()
(append (writech (cadr alist) (car alist)) (rec (cddr alist))))
#f))
(rec orglist))

(make-new-list '(2 u 4 t 1 b 0 k 2 4))
(make-new-list '(2 u 4 t 1 b 0 k 2 ))
(make-new-list '(a u 4 t 1 b 0 k 2 4))
(make-new-list '(2 u 4 t a b 0 k 2 4))
(make-new-list '(2 u 4 t 1 b 0 k a 4))
Realität ist der bedauerliche Zustand, der auf mangelnden Alkoholkonsum zurückzuführen ist.

Informatik Minister

Senior Schreiberling

  • "Informatik Minister" is male

Posts: 1,234

Date of registration: Dec 11th 2001

43

Wednesday, February 20th 2002, 11:26pm

denke ja

aber wie gesagt, ich finds eleganter die länge der liste einmalig auf even? zu testen, statt
(null? (cdr liste))

aber egalo
ansonsten passts, klarro

tom wird uns lieben....
wehe er denkt sich "hmmm, könnte ja freitag schwerere sachen stellen, da kennen die ja alle schon die aufgaben von MI und DO......

naja, wills nich hoffen

aufn gutes gelingen uns allen

Mieks

Alter Hase

  • "Mieks" is male

Posts: 106

Date of registration: Jan 14th 2002

Location: Linden

44

Wednesday, February 20th 2002, 11:31pm

Also, wenn ich morgen was mit Bäumen bekomme... :( Hoff mal auf normale Listen... poste dann morgen meine Aufgabe hier.
Allen die morgen ran müssen, Viel Erfolg !
Realität ist der bedauerliche Zustand, der auf mangelnden Alkoholkonsum zurückzuführen ist.

Zypressen Hügel

Junior Schreiberling

Posts: 244

Date of registration: Dec 22nd 2001

45

Wednesday, February 20th 2002, 11:39pm

ich will auch noch mal :P

(define (komische-prozedur lst)
(define (make-exp counter val result)
(if (> counter 0)
(make-exp (- counter 1) val (append (list val) result))
result))
(define (iter liste newlist)
(if (> (length liste) 2)
(iter (cddr liste) (append newlist (make-exp (cadr liste) (car liste) '())))
(append newlist (make-exp (cadr liste) (car liste) '()))))
(define (alles-ok? liste)
(define (iter lst2)
(if (> (length lst2) 1)
(if (number? (cadr lst2))
(iter (cddr lst2))
#f)
(if (= (length lst2) 0)
#t
#f)))
(if (= (length liste) 0) #f (iter liste)))
(if (alles-ok? lst) (iter lst '()) #f))

(komische-prozedur '(z 2 g 5 h 8))
(komische-prozedur '())
(komische-prozedur '(r))
(komische-prozedur '(t 5 g g))

(z z g g g g g h h h h h h h h)
#f
#f
#f
Man kann auch ohne Spass Alkohol haben 8)

Zypressen Hügel

Junior Schreiberling

Posts: 244

Date of registration: Dec 22nd 2001

46

Wednesday, February 20th 2002, 11:41pm

das ist ja witzig, aus der "h 8 klammer zu" aus dem funktionsaufruf macht das forum ein smiley mit sonnenbrille 8) 8) 8)
Man kann auch ohne Spass Alkohol haben 8)

Mieks

Alter Hase

  • "Mieks" is male

Posts: 106

Date of registration: Jan 14th 2002

Location: Linden

47

Wednesday, February 20th 2002, 11:46pm

hm... is mir schon wieder zu kompliziert.. bin nicht so gut im Code-lesen... habs einfach ausprobiert. die nimmt auch Paare und Bäume als Symbole. Weiß nich ob das schlimm ist. achso und die zahlen sollten doch vor den Symbolen stehen, oder? egal, läuft...
Realität ist der bedauerliche Zustand, der auf mangelnden Alkoholkonsum zurückzuführen ist.

Informatik Minister

Senior Schreiberling

  • "Informatik Minister" is male

Posts: 1,234

Date of registration: Dec 11th 2001

48

Thursday, February 21st 2002, 12:08am

gääähn

so, deins auch nochmal durch zyphüg, die aufgabe beherrsch ich wie kein zweiter...

jo, alles logisch...muss was werden !

gute nacht usw.usf.



thilo

Praktikant

  • "thilo" is male

Posts: 14

Date of registration: Dec 11th 2001

49

Thursday, February 21st 2002, 12:27pm

Die Aufgabe am Donnerstag um 10 Uhr lautete in etwa:

(define my-list '(27 2 27 7))

(insert! '(18 4) my-list 1) --> (27 2 18 4 27 7)

(insert! '(2001) my-list 5) --> (27 2 18 4 27 7 2001)

(insert! '() my-list -1) --> #f
(insert! '() my-list 7) --> #f


Schreiben Sie die Prozedur insert!, die eine Liste in eine andere liste (hier: my-list) einfügt.
Schreiben sie dazu zwei Unterprozeduren, eine die die n-te Stelle einer Liste findet und eine die die letzte Stelle einer Liste findet.

Ich hoffe ich hab nichts vergessen und kann euch damit helfen.
Thilo 8)

MAX

Senior Schreiberling

  • "MAX" is male

Posts: 822

Date of registration: Dec 11th 2001

Location: Hannover

50

Thursday, February 21st 2002, 12:38pm

Ich verstehe nicht ganz!!!

Quoted

(insert! '(18 4) my-list 1) --> (27 2 18 4 27 7)
(insert! '(2001) my-list 5) --> (27 2 18 4 27 7 2001)


Wenn die Liste my-list (27 2 27 7) ist und die andere Liste (18 4) an die Stelle 1 eingefürgt werden soll (oder?), dann wie kommst es zu neuen Liste (27 2 18 4 27 7). Es wurde doch nicht an der Stelle 1 eigefügt!!! Oder verstehe ich etwas nicht???
mfg
MAX

Informatik Minister

Senior Schreiberling

  • "Informatik Minister" is male

Posts: 1,234

Date of registration: Dec 11th 2001

51

Thursday, February 21st 2002, 12:39pm

sooooooooo

war heute ZUM GLÜCK noch nicht dran...
morgen steh ich dann bestimmt auch scheisse da....
aber die aufgabe da hab ich mal fertig gemacht...

(define (ende liste)
(if (>(length liste) 1)
(ende (cdr liste))
liste))

(ende '(1 2 3 4))

(define (position liste count)
(if (> count 1)
(position (cdr liste) (- count 1))
liste))

(position '(1 2 3 4) 3)


(define (insert list1 list2 stelle)
(begin (set-cdr! (ende list2) (position list1 stelle))
(set-cdr! (position list1 (- stelle 1)) list2)
list1))


(insert '(1 2 3 4) '(a b c d) 2)


ende - geht zum ende einer liste, so dass CDR die leere liste ist
position - geht zur speziellen position von einer liste, so dass der rest an die zweite angehängt werden kann, und die liste2 dann komplett wieder an allem VOR dem rest von (position liste1)

sodale....
bin ich stolz....und werd ich mich ärgern, wenn ich morgen verkacke....

in diesem sinne!

MAX

Senior Schreiberling

  • "MAX" is male

Posts: 822

Date of registration: Dec 11th 2001

Location: Hannover

52

Thursday, February 21st 2002, 12:41pm

Ehh???

Kannste die Aufgabe zuerst genau erklären, was und wozu das alles sein soll???
mfg
MAX

Informatik Minister

Senior Schreiberling

  • "Informatik Minister" is male

Posts: 1,234

Date of registration: Dec 11th 2001

53

Thursday, February 21st 2002, 12:46pm

oki

aufgabe:

Eine Liste an einer Position einer andren einfügen, ohne dass eine neue Liste erzeugt wird (also irgendwas mit set!)
2 Hilfsprozeduren

ende = geht zum ende einer liste, so dass man was ans ende einer liste anhängen kann

position = geht zur speziellen position in einer liste, so dass man da wiederrum was anhängen kann


1) geht man in liste1 zur position und hängt den rest davon an die liste2, die dann neu definiert ist (set-cdr!)

2) hängt man die neue liste2 komplett an den teil von liste1, der VOR der position steht...

3) liste1 ausgeben, da die ja jetzt so aussieht:

x-elemente von liste1 -> liste2 -> restlichen elemente von liste1


ich hätts inner prüfung aber nich hinbekommen...wär nicht auf set-cdr! gekommen...keine erinnerung :/

thilo

Praktikant

  • "thilo" is male

Posts: 14

Date of registration: Dec 11th 2001

54

Thursday, February 21st 2002, 12:55pm

Sehr gut Herr Minister,

die Aufgabe verstanden und schnell gelöst.

So sah meine Lösung auch aus. Im grunde gar nicht so schwer, wenn man den Befehl set-cdr! kennt.

Wünsche euch Glück und Erfolg,

TaG ;)
Thilo 8)

Diktator

Senior Schreiberling

  • "Diktator" is male
  • "Diktator" started this thread

Posts: 605

Date of registration: Feb 12th 2002

Location: Region Hannover

Occupation: Gartenbau

55

Thursday, February 21st 2002, 12:55pm

übung für morgen?

ich hab ne aufgabe geschrieben, die eine übung für morgen sein kann. kann sie mir einer lösen, ich bin absoluter nicht-schemer.

Schreibe eine prozedur delete!, die elemente einer liste löscht. Die zu löschenden elemente, sind einer weiteren liste zu entnehmen.
Bsp: (delete! ’(liste mit elementen) ’(liste,die sagt, welche stellen gelöscht werden sollen.)) --> (liste ohne gelöschte elemente)
oder:
(delete! '(1 2 14 17) ' (4 1))---> (2 14)

thx. ?(
Diktator
Holzhacken ist deshalb so beliebt, weil man bei dieser Tätigkeit den Erfolg sofort sieht. - Albert Einstein

Informatik Minister

Senior Schreiberling

  • "Informatik Minister" is male

Posts: 1,234

Date of registration: Dec 11th 2001

56

Thursday, February 21st 2002, 12:59pm

kurze anmerkung....

(define (insert list1 list2 stelle)
(if (or (> stelle (length list1)) (< stelle 1))
#f
(begin (set-cdr! (ende list2) (position list1 stelle))
(set-cdr! (position list1 (- stelle 1)) list2)
list1)))


so muss die aussehen, damit gewährleistet ist, dass man weder ne stelle angeben kann, die grösser ist als die länge der liste, noch ne negative position

ich kannte die aufgabe schon etwas länger...und hab auch n bisschen was erklärt bekommen...

ABER: irgendwo is nochn fehler....wenn man an die erste stelle ansetzen will, gehts nich...das machich grad noch

Posts: 2

Date of registration: Feb 19th 2002

57

Thursday, February 21st 2002, 12:59pm

Mahlzeit!

Also es wär' echt super, wenn einer von den Donnerstagsprüflingen die Aufgabe hier posten würde.

Danke schonmal

gruß,
micha

breuti

Praktikant

  • "breuti" is male

Posts: 7

Date of registration: Jan 29th 2002

Location: H-Town

58

Thursday, February 21st 2002, 1:00pm

alternative Lösung...

Habe die Prüfung gerade abgelegt.
Man gut, dass ich mir gestern noch mal die Listenbefehle in der Scheme-Hilfe reingezogen habe...

Meine Lösung:

(define my-list '(27 2 27 7))

(define (insert! list1 list2 position)
(if (or (> (+ position 1) (length list2)) (< position 0)) #f
(set! my-list (append (reverse (list-tail (reverse list2) (- (length list2) (+ position 1)))) list1 (list-tail list2 (+ position 1))))
)
)

my-list
(insert! '(18 4) my-list 1)
my-list
(insert! '(2001) my-list 5)
my-list

(insert! '() my-list -1)
(insert! '() my-list 7)

Ach ja: Die Position fängt bei 0 an zu zählen!!!


So, und jetzt will ich das Wort "SCHEME" nie wieder hören!!!

Schönens Wochenende allerseits 8)

Informatik Minister

Senior Schreiberling

  • "Informatik Minister" is male

Posts: 1,234

Date of registration: Dec 11th 2001

59

Thursday, February 21st 2002, 1:06pm

heftiger thread

@breuti:

kann bei deiner lösung aber die 2te liste nicht an stelle 1 (bzw. 0) setzen...also ganz annen anfang von liste1

Meine sieht jetzt so aus, und müsste langsam auch makellos sein:

(define (ende liste)
(if (>(length liste) 1)
(ende (cdr liste))
liste))

(define (position liste count)
(if (> count 1)
(position (cdr liste) (- count 1))
liste))

(define (insert list1 list2 stelle)
(if (= stelle 1)
(append list2 list1)
(if (or (> (- stelle 1) (length list1)) (< stelle 1))
#f
(begin (set-cdr! (ende list2) (position list1 stelle))
(set-cdr! (position list1 (- stelle 1)) list2)
list1))))

(insert '(1 2 3 4) '(a b c d) 2)
(insert '(1 2 3 4) '(a b c d) 1)
(insert '(1 2 3 4) '(a b c d) 4)
(insert '(1 2 3 4) '(a b c d) 7)
(insert '(1 2 3 4) '(a b c d) -2)

MAX

Senior Schreiberling

  • "MAX" is male

Posts: 822

Date of registration: Dec 11th 2001

Location: Hannover

60

Thursday, February 21st 2002, 1:09pm

o ja!!!

Ich kann dich verstehen Breuti!!! Aber ich muss noch paar Tage durchhalten und nur an scheme denken!!!
Also danke an alle für die Lösungen und Aufgaben! Übrigens gab es nicht noch eine Aufgabe???
mfg
MAX