fork download
  1. ; marsaglia's mental rng
  2.  
  3. (define rs
  4. (do ((rs (list 23)
  5. (cons (+ (quotient (car rs) 10)
  6. (* (modulo (car rs) 10) 6))
  7. rs)))
  8. ((member (car rs) (cdr rs))
  9. (reverse (cdr rs)))))
  10.  
  11. (display rs) (newline)
  12.  
  13. (define (mod n) (lambda (x) (modulo x n)))
  14.  
  15. (display (map (mod 10) rs)) (newline)
  16.  
  17. (display
  18. (map (lambda (n)
  19. (case n ((0) 'rock) ((1) 'paper) ((2) 'scissors)))
  20. (map (mod 3) rs)))
  21. (newline)
  22.  
  23. (define (uniq-c eql? xs)
  24. (if (null? xs) xs
  25. (let loop ((xs (cdr xs)) (prev (car xs)) (k 1) (result '()))
  26. (cond ((null? xs) (reverse (cons (cons prev k) result)))
  27. ((eql? (car xs) prev) (loop (cdr xs) prev (+ k 1) result))
  28. (else (loop (cdr xs) (car xs) 1 (cons (cons prev k) result)))))))
  29.  
  30. (display (uniq-c = (sort (map (mod 10) rs) <))) (newline)
  31.  
  32. (define ps
  33. (let loop ((rs (append (map (mod 10) rs)
  34. (list ((mod 10) (car rs)))))
  35. (ps (list)))
  36. (if (null? (cdr rs)) (reverse ps)
  37. (loop (cdr rs) (cons (cons (car rs) (cadr rs)) ps)))))
  38.  
  39. (display ps) (newline)
  40.  
  41. (display
  42. (sort ps (lambda (a b) (or (< (car a) (car b))
  43. (and (= (car a) (car b))
  44. (< (cdr a) (cdr b)))))))
  45.  
  46. (newline)
Success #stdin #stdout 0.03s 50224KB
stdin
Standard input is empty
stdout
(23 20 2 12 13 19 55 35 33 21 8 48 52 17 43 22 14 25 32 15 31 9 54 29 56 41 10 1 6 36 39 57 47 46 40 4 24 26 38 51 11 7 42 16 37 45 34 27 44 28 50 5 30 3 18 49 58 53)
(3 0 2 2 3 9 5 5 3 1 8 8 2 7 3 2 4 5 2 5 1 9 4 9 6 1 0 1 6 6 9 7 7 6 0 4 4 6 8 1 1 7 2 6 7 5 4 7 4 8 0 5 0 3 8 9 8 3)
(scissors scissors scissors rock paper paper paper scissors rock rock scissors rock paper scissors paper paper scissors paper scissors rock paper rock rock scissors scissors scissors paper paper rock rock rock rock scissors paper paper paper rock scissors scissors rock scissors paper rock paper paper rock paper rock scissors paper scissors scissors rock rock rock paper paper scissors)
((0 . 5) (1 . 6) (2 . 6) (3 . 6) (4 . 6) (5 . 6) (6 . 6) (7 . 6) (8 . 6) (9 . 5))
((3 . 0) (0 . 2) (2 . 2) (2 . 3) (3 . 9) (9 . 5) (5 . 5) (5 . 3) (3 . 1) (1 . 8) (8 . 8) (8 . 2) (2 . 7) (7 . 3) (3 . 2) (2 . 4) (4 . 5) (5 . 2) (2 . 5) (5 . 1) (1 . 9) (9 . 4) (4 . 9) (9 . 6) (6 . 1) (1 . 0) (0 . 1) (1 . 6) (6 . 6) (6 . 9) (9 . 7) (7 . 7) (7 . 6) (6 . 0) (0 . 4) (4 . 4) (4 . 6) (6 . 8) (8 . 1) (1 . 1) (1 . 7) (7 . 2) (2 . 6) (6 . 7) (7 . 5) (5 . 4) (4 . 7) (7 . 4) (4 . 8) (8 . 0) (0 . 5) (5 . 0) (0 . 3) (3 . 8) (8 . 9) (9 . 8) (8 . 3) (3 . 3))
((0 . 1) (0 . 2) (0 . 3) (0 . 4) (0 . 5) (1 . 0) (1 . 1) (1 . 6) (1 . 7) (1 . 8) (1 . 9) (2 . 2) (2 . 3) (2 . 4) (2 . 5) (2 . 6) (2 . 7) (3 . 0) (3 . 1) (3 . 2) (3 . 3) (3 . 8) (3 . 9) (4 . 4) (4 . 5) (4 . 6) (4 . 7) (4 . 8) (4 . 9) (5 . 0) (5 . 1) (5 . 2) (5 . 3) (5 . 4) (5 . 5) (6 . 0) (6 . 1) (6 . 6) (6 . 7) (6 . 8) (6 . 9) (7 . 2) (7 . 3) (7 . 4) (7 . 5) (7 . 6) (7 . 7) (8 . 0) (8 . 1) (8 . 2) (8 . 3) (8 . 8) (8 . 9) (9 . 4) (9 . 5) (9 . 6) (9 . 7) (9 . 8))