(load "@lib/simul.l") # For 'permute'
(de derangements (Lst)
(filter
'((L) (not (find = L Lst)))
(permute Lst) ) )
(de subfact (N)
(if (>= 2 N)
(if (= 1 N) 0 1)
(*
(dec N)
(+ (subfact (dec N)) (subfact (- N 2))) ) ) )