BuK/IIm14/Studenten/s3damues

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Scheme</language>
== Übungsaufgaben ==

In diesem Kapitel befinden sich die Übungsaufgaben aus den ersten vier Vorlesungen.

=== Vorlesung 1: Vorbereitungen ===


=== Vorlesung 2: Berechenbarkeitsbegriff ===

==== abzählbare unendliche Menge ====

<code id="5526b490a7d8b">(define f 
  (lambda (n) 
    (if (= n 1)
        1
        (if (= (modulo n 2) 0)
            (+ 1 (f (/ n 2)))
            (/ 1 (f (- n 1)))
            )
        )
    )
  )</code>
<run id="5526b490a7dff">(map f '(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20))</run>

'''Umkehrfunktion'''<br/>
<code id="552be5df48e9f">(define f-umkehr 
    (lambda (n) 
        (if (= n 1)
            1
            (if (> n 1)
                (* 2 (f-umkehr (- n 1)))
                (+ 1 (f-umkehr (/ 1 n)))
            )
        )
    )
)</code>
<run id="552be5df48ff5">(map f-umkehr '(1 2 1/2 3 1/3 3/2 2/3 4 1/4 4/3 3/4 5/2 2/5 5/3 3/5 5 1/5 5/4 4/5 7/3))</run>
'''Prozedur mit memoizing'''<br/>
<code id="552be5df48f11">(import hashtable)
(define table (make-hashtable))
(define false (lambda () #f))
(define f-mem
    (lambda (n) 
        (let ([resultat (hashtable/get table n false)])
            (cond
                [(= n 1) 1]
                [(number? resultat) resultat]
                [else 
                  (let([res-berechnet 
                    (if (= (modulo n 2) 0)
                        (+ 1 (f-mem (/ n 2)))
                        (/ 1 (f-mem (- n 1)))
                    )])
                    (hashtable/put! table n res-berechnet)
                    res-berechnet
                  )
                ]
            )
        )
    )
)</code>
<run id="552be5df4906b">(f-mem 999)</run>

=== Vorlesung 3: Entscheidbarkeit und Aufzählbarkeit ===
==== Einfache Beispiele für $\chi_{M}$ ====
<code id="552be5df48f7d">(define chi
  (lambda (w)
    (cond
      [(not (string? w)) #f]
      [(= (string-length w) 3) #t]
      [(not (= (string-length w) 3)) #f]
    )
  )
)</code>
<run id="552be5df490d7">(chi "aba")</run>

<code>(define chi
  (lambda (w)
    (cond
      [(not (string? w)) #f]
      [(equal? (string-ref w 0) #\a) #t]
      [(not (equal? (string-ref w 0) #\a)) #f]
    )
  )
)</code>
<run>(chi "ababababa")</run>

== Kreativaufgaben ==

In diesem Kapitel befinden sich die Kreativaufgaben aus den Vorlesungen.

=== Kreativaufgabe 1: Der Hilbertbus ===