Permutations: Difference between revisions

Content added Content deleted
(→‎{{header|Racket}}: We now have a library function, and also a faster+simpler naive impl)
Line 2,440: Line 2,440:


=={{header|Racket}}==
=={{header|Racket}}==
<lang Racket>
<lang racket>
#lang racket
#lang racket


Line 2,451: Line 2,451:
(let loop ([l l] [tail '()])
(let loop ([l l] [tail '()])
(if (null? l) (list tail)
(if (null? l) (list tail)
(append-map ( (x) (loop (remq x l) (cons x tail))) l))))
(append-map (λ(x) (loop (remq x l) (cons x tail))) l))))
(perms '(A B C))
(perms '(A B C))
;; -> '((C B A) (B C A) (C A B) (A C B) (B A C) (A B C))
;; -> '((C B A) (B C A) (C A B) (A C B) (B A C) (A B C))