Find the missing permutation: Difference between revisions
Content deleted Content added
Replaced the two D entries with one, updated |
→{{header|Racket}}: Naive method (using new builtin), and better style |
||
Line 1,155: | Line 1,155: | ||
=={{header|Racket}}== |
=={{header|Racket}}== |
||
<lang racket> |
<lang racket> |
||
#lang racket |
|||
(define almost-all |
(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] |
|||
(map symbol->string '(ABCD CABD ACDB DACB BCDA |
|||
[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])) |
|||
ABDC ADBC BDCA DCBA |
|||
BACD BADC BDAC CBDA |
|||
DBCA DCAB))) |
|||
⚫ | |||
(define character-enumeration |
|||
⚫ | |||
⚫ | |||
⚫ | |||
;; Obvious method: |
|||
(for/first ([p (in-permutations (car almost-all))] |
|||
#:unless (member p almost-all)) |
|||
p) |
|||
;; -> '(D B A C) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
(define charmap |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
(list->string |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
(define character-index (hash-ref character-enumeration |
|||
(string-ref permutation position))) |
|||
⚫ | |||
(not (bit-vector-ref parities character-index)))) |
|||
(for/first ([(c i) character-enumeration] |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
(define n (hash-ref charmap (list-ref permutation i))) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
;; -> '(D B A C) |
|||
⚫ | |||
=={{header|REXX}}== |
=={{header|REXX}}== |