Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
27
Task/Perfect-shuffle/Racket/perfect-shuffle.rkt
Normal file
27
Task/Perfect-shuffle/Racket/perfect-shuffle.rkt
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
#lang racket/base
|
||||
(require racket/list)
|
||||
|
||||
(define (perfect-shuffle l)
|
||||
(define-values (as bs) (split-at l (/ (length l) 2)))
|
||||
(foldr (λ (a b d) (list* a b d)) null as bs))
|
||||
|
||||
(define (perfect-shuffles-needed n)
|
||||
(define-values (_ rv)
|
||||
(for/fold ((d (perfect-shuffle (range n))) (i 1))
|
||||
((_ (in-naturals))
|
||||
#:break (apply < d))
|
||||
(values (perfect-shuffle d) (add1 i))))
|
||||
rv)
|
||||
|
||||
(module+ test
|
||||
(require rackunit)
|
||||
(check-equal? (perfect-shuffle '(1 2 3 4)) '(1 3 2 4))
|
||||
|
||||
(define (test-perfect-shuffles-needed n e)
|
||||
(define psn (perfect-shuffles-needed n))
|
||||
(printf "Deck size:\t~a\tShuffles needed:\t~a\t(~a)~%" n psn e)
|
||||
(check-equal? psn e))
|
||||
|
||||
(for-each test-perfect-shuffles-needed
|
||||
'(8 24 52 100 1020 1024 10000)
|
||||
'(3 11 8 30 1018 10 300)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue