Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,35 @@
|
|||
#lang racket
|
||||
|
||||
(define almost-all
|
||||
'([A B C D] [C A B D] [A C D B] [D A C B] [B C D A] [A C B D] [A D C B]
|
||||
[C D A B] [D A B C] [B C A D] [C A D B] [C D B A] [C B A D] [A B D C]
|
||||
[A D B C] [B D C A] [D C B A] [B A C D] [B A D C] [B D A C] [C B D A]
|
||||
[D B C A] [D C A B]))
|
||||
|
||||
|
||||
;; Obvious method:
|
||||
(for/first ([p (in-permutations (car almost-all))]
|
||||
#:unless (member p almost-all))
|
||||
p)
|
||||
;; -> '(D B A C)
|
||||
|
||||
|
||||
;; For permutations of any set
|
||||
(define charmap
|
||||
(for/hash ([x (in-list (car almost-all))] [i (in-naturals)])
|
||||
(values x i)))
|
||||
(define size (hash-count charmap))
|
||||
|
||||
;; Illustrating approach mentioned in the task description.
|
||||
;; For each position, character with odd parity at that position.
|
||||
|
||||
(require data/bit-vector)
|
||||
|
||||
(for/list ([i (in-range size)])
|
||||
(define parities (make-bit-vector size #f))
|
||||
(for ([permutation (in-list almost-all)])
|
||||
(define n (hash-ref charmap (list-ref permutation i)))
|
||||
(bit-vector-set! parities n (not (bit-vector-ref parities n))))
|
||||
(for/first ([(c i) charmap] #:when (bit-vector-ref parities i))
|
||||
c))
|
||||
;; -> '(D B A C)
|
||||
Loading…
Add table
Add a link
Reference in a new issue