; marsaglia's mental rng (define rs (do ((rs (list 23) (cons (+ (quotient (car rs) 10) (* (modulo (car rs) 10) 6)) rs))) ((member (car rs) (cdr rs)) (reverse (cdr rs))))) (display rs) (newline) (define (mod n) (lambda (x) (modulo x n))) (display (map (mod 10) rs)) (newline) (display (map (lambda (n) (case n ((0) 'rock) ((1) 'paper) ((2) 'scissors))) (map (mod 3) rs))) (newline) (define (uniq-c eql? xs) (if (null? xs) xs (let loop ((xs (cdr xs)) (prev (car xs)) (k 1) (result '())) (cond ((null? xs) (reverse (cons (cons prev k) result))) ((eql? (car xs) prev) (loop (cdr xs) prev (+ k 1) result)) (else (loop (cdr xs) (car xs) 1 (cons (cons prev k) result))))))) (display (uniq-c = (sort (map (mod 10) rs) <))) (newline) (define ps (let loop ((rs (append (map (mod 10) rs) (list ((mod 10) (car rs))))) (ps (list))) (if (null? (cdr rs)) (reverse ps) (loop (cdr rs) (cons (cons (car rs) (cadr rs)) ps))))) (display ps) (newline) (display (sort ps (lambda (a b) (or (< (car a) (car b)) (and (= (car a) (car b)) (< (cdr a) (cdr b))))))) (newline)