(define(loto6a) (define (rec n series) (if (= n 48) series (begin (if (< (random (- 48 n)) (- 6 (length series))) (set! series (cons n series))) (rec (+ n 1) series)))) (reverse (rec 0 '())))
(define (loto6b) (define (rec series) (let *1 series) ((memv r series) (rec series)) (else (rec (cons r series)))))) (rec '()))
;; 無駄に call/cc してみた (define call/cc call-with-current-continuation) (define (loto6c) (define (rec series) (let ((retry #f) (r 0)) (if (= (length series) 6) series (begin (call/cc (lambda (k) (set! retry k))) (set! r (+ 1 (random 48))) (if (memv r series) (retry #f) (rec (cons r series))))))) (rec '()))
*1:r (+ 1 (random 48)))) (cond ((= 6 (length series