Skip to content

Instantly share code, notes, and snippets.

@Sebb767
Created May 24, 2016 12:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Sebb767/5d92831e5a364a4e4118ccd41d91bda6 to your computer and use it in GitHub Desktop.
Save Sebb767/5d92831e5a364a4e4118ccd41d91bda6 to your computer and use it in GitHub Desktop.
#lang racket
{define (loesche liste praedikat) ; A33
[if (praedikat (car liste))
[if (null? (cdr liste))
'()
(loesche (cdr liste) praedikat)
]
liste
]
}
(println "A33")
(loesche (list 4 6 8 3 2 4 5) even?)
{define (drehe liste) ; A34
{define (iter alt neu)
[if (null? alt) neu
(iter (cdr alt) (cons (car alt) neu))
]
}
(iter liste '())
}
(println "A34")
(drehe (list 1 2 3))
(drehe (list 1 2 (list 3)))
(drehe (list 1 (list 5 6) 2 (list 3 4)))
{define (typ-or typ1 typ2) ; A35
(lambda (x) (or (typ1 x) (typ2 x)))
}
(println "A35")
(define paar-oder-liste? (typ-or pair? list?))
(define integer-oder-boolean? (typ-or integer? boolean?))
(integer-oder-boolean? (paar-oder-liste? (cons 1 2)))
{define (operation operatoren n) ; A36
[if (= n 1)
(lambda (x) ((car operatoren) (car x) (cadr x)))
(operation (cdr operatoren) (- n 1))
]
}
(println "A36")
(define plus (operation (list + - * /) 1))
(plus (list 1 2))
(define minus (operation (list + - * /) 2))
(minus (list 1 2))
{define (caesar_encrypt_list data key) ; A37
{define (element-at-iter list n) (list-ref list (remainder n (length list))) }
{define (iter data new key key-offset)
[if (null? data)
new
(iter (cdr data) (append new (list (remainder (+ (car data) (element-at-iter key key-offset)) 10))) key (+ 1 key-offset))
]
}
(iter data '() key 0)
}
(println "A37")
(caesar_encrypt_list (list 1 2 3 4 5 6) (list 1 3 3 7))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment