Как я могу переписать программу pemutations стать комбинированной программой? - PullRequest
0 голосов
/ 17 мая 2019

каждый, я хочу переписать профессионала по пульсации, сделать его профессионалом комбинации, любой идеал?например, список ввода '(1 2 2) становится ((1 2 2) (1 2 2) (2 1 2) (2 2 1) (2 1 2) (2 2 1)) я хочу, чтобы он стал ((1 2 2) (2 1 2) (2 2 1))

(defun test-company - перестановки (lst) (if (not lst) '(nil) (cl-mapcan (lambda (e) (mapcar (lambda (perm) (cons e perm)) (тестовая компания - перестановки (cl-remove estst: count 1)))) lst))) (тестовая компания - перестановки '(1 22))

1 Ответ

0 голосов
/ 17 мая 2019
(defun test-company--permutations (lst)
  (if (not lst)
      '(nil)
    (cl-mapcan
     (lambda (e)
       (mapcar (lambda (perm) (cons e perm))
               (test-company--permutations (cl-remove e lst :count 1))))
     lst)))
(test-company--permutations '(1 2 2))
...