; einfache Suche ; Kopf (define (suche container volumen stuecke) 'undefiniert) ;(suche '() 100 '(30 30 30 20 20 15 10 5 2 1 1 1)) ; zu viele Stücke (define (suche container volumen stuecke) (if (> (apply + container) volumen) "zu voll" 'undefiniert)) ;(suche '() 100 '(30 30 30 20 20 15 10 5 2 1 1 1)) ;(suche '(30 30 30 20) 100 '(20 15 10 5 2 1 1 1)) ; zu wenig Stücke, weil keine mehr da sind. (define (suche container volumen stuecke) (cond ((> (apply + container) volumen) "zu voll") ((null? stuecke) "noch Platz im Container") (else 'undefiniert))) ;(suche '() 100 '(30 30 30 20 20 15 10 5 2 1 1 1)) ;(suche '(30 30 30 20) 100 '(20 15 10 5 2 1 1 1)) ;(suche '(20 20 30) 100 '()) ; zu wenig Stücke, es sind aber noch welche da. (define (suche container volumen stuecke) (cond ((= (apply + container) volumen) container) ((> (apply + container) volumen) (display "war zu voll")(newline) (suche (cdr container) volumen stuecke)) ((null? stuecke) "noch Platz im Container") (else (suche (cons (car stuecke) container) volumen (cdr stuecke)) ))) (suche '() 100 '(30 30 30 20 20 15 10 5 2 1 1 1)) ;(suche '(30 30 30 20) 100 '(20 15 10 5 2 1 1 1)) ;(suche '(20 20 30) 100 '())