mahuan1279
发表于 2022-2-27 16:31:14
夏生生 发表于 2022-2-27 16:17
谢谢提醒,您提供的思路已经很清晰了,我顺着这个思路向下走就是
偶数一样有遗漏。
_$ (f2 '("a" "b" "c" "d" "e" "f") 6 2)
(("a" "a") ("a" "a" "a") ("a" "a" "a" "a") ("a" "a" "a" "a" "a") ("a" "a" "a" "a" "a" "a") ("b" "b") ("b" "a" "b") ("b" "a" "a" "b") ("b" "a" "a" "a" "b") ("b" "a" "a" "a" "a" "b") ("b" "b" "b") ("b" "b" "b" "b") ("b" "b" "b" "b" "b") ("b" "b" "b" "b" "b" "b") ("c" "c") ("c" "a" "c") ("c" "a" "a" "c") ("c" "a" "a" "a" "c") ("c" "a" "a" "a" "a" "c") ("c" "b" "c") ("c" "b" "b" "c") ("c" "b" "b" "b" "c") ("c" "b" "b" "b" "b" "c") ("c" "c" "c") ("c" "c" "c" "c") ("c" "c" "c" "c" "c") ("c" "c" "c" "c" "c" "c") ("d" "d") ("d" "b" "d") ("d" "b" "b" "d") ("d" "b" "b" "b" "d") ("d" "b" "b" "b" "b" "d") ("d" "c" "d") ("d" "c" "c" "d") ("d" "c" "c" "c" "d") ("d" "c" "c" "c" "c" "d") ("d" "d" "d") ("d" "d" "d" "d") ("d" "d" "d" "d" "d") ("d" "d" "d" "d" "d" "d") ("e" "e") ("e" "c" "e") ("e" "c" "c" "e") ("e" "c" "c" "c" "e") ("e" "c" "c" "c" "c" "e") ("e" "d" "e") ("e" "d" "d" "e") ("e" "d" "d" "d" "e") ("e" "d" "d" "d" "d" "e") ("e" "e" "e") ("e" "e" "e" "e") ("e" "e" "e" "e" "e") ("e" "e" "e" "e" "e" "e") ("f" "f") ("f" "d" "f") ("f" "d" "d" "f") ("f" "d" "d" "d" "f") ("f" "d" "d" "d" "d" "f") ("f" "e" "f") ("f" "e" "e" "f") ("f" "e" "e" "e" "f") ("f" "e" "e" "e" "e" "f") ("f" "f" "f") ("f" "f" "f" "f") ("f" "f" "f" "f" "f") ("f" "f" "f" "f" "f" "f"))
_$
("f" "f" "d" "d" "f" "f")("f" "f" "e" "e" "f" "f")遗漏了。
Bao_lai
发表于 2022-2-27 16:53:12
不知道楼主这个何用呢?
夏生生
发表于 2022-2-27 16:56:15
Bao_lai 发表于 2022-2-27 16:53
不知道楼主这个何用呢?
不是蛮好解释,有序对称排点一类的应用
mahuan1279
发表于 2022-2-27 18:07:55
本帖最后由 mahuan1279 于 2022-2-27 18:22 编辑
夏生生 发表于 2022-2-27 15:17
应该向下面截图的这种逻辑;;;前提m>=2
(defun f(a m n)
(defun f1(a m n)
(setq flst (list a a) i 0 j (max 1 (- a n)) vlst nil)
(while (<= j a)
(while (< i (- m 2))
(setq fflst (list j))
(repeat i
(setq fflst (cons j fflst)))
(setq vlst (cons fflst vlst))
(setq i (+ i 1))
)
(setq j (+ j 1) i 0)
)
(setq vlst (mapcar '(lambda (x) (cons a (reverse (cons a x)))) vlst))
(setq vlst (cons flst (reverse vlst)))
)
(defun f2(a m n)
(setq k (max 1 (- a n)) vvlst nil)
(while (< k a)
(setq plst (list a a k) qlst (list a a k k))
(while (<= (length plst) (/ (+ m 1) 2))
(setq ptlst (append plst (cdr (reverse plst))))
(setq vvlst (cons ptlst vvlst))
(if (<= (length plst) (/ m 2))
(progn
(setq ptlst (append plst (reverse plst)))
(setq vvlst (cons ptlst vvlst))
)
)
(setq plst (cons a plst))
)
(while (<= (length qlst) (/ (+ m 1) 2))
(setq qtlst (append qlst (cdr (reverse qlst))))
(setq vvlst (cons qtlst vvlst))
(if (<= (length qlst) (/ m 2))
(progn
(setq qtlst (append qlst (reverse qlst)))
(setq vvlst (cons qtlst vvlst))
)
)
(setq qlst (reverse (cons k (reverse qlst))))
)
(setq k (+ k 1))
)
vvlst
)
(setq ii 1 lst nil)
(while (<= ii a)
(setq lst (append (f1 ii m n) lst))
(setq ii (+ ii 1))
)
(setq lst (append (f2 a m n) lst))
)
F
_$ (f 4 3 2)
((4 4) (4 2 4) (4 3 4) (4 4 4) (3 3) (3 1 3) (3 2 3) (3 3 3) (2 2) (2 1 2) (2 2 2) (1 1) (1 1 1))
_$ (f 4 5 2)
((4 4 3 4 4) (4 4 2 4 4) (4 4) (4 2 4) (4 2 2 4) (4 2 2 2 4) (4 3 4) (4 3 3 4) (4 3 3 3 4) (4 4 4) (4 4 4 4) (4 4 4 4 4) (3 3) (3 1 3) (3 1 1 3) (3 1 1 1 3) (3 2 3) (3 2 2 3) (3 2 2 2 3) (3 3 3) (3 3 3 3) (3 3 3 3 3) (2 2) (2 1 2) (2 1 1 2) (2 1 1 1 2) (2 2 2) (2 2 2 2) (2 2 2 2 2) (1 1) (1 1 1) (1 1 1 1) (1 1 1 1 1))
_$ (f 4 4 2)
((4 4) (4 2 4) (4 2 2 4) (4 3 4) (4 3 3 4) (4 4 4) (4 4 4 4) (3 3) (3 1 3) (3 1 1 3) (3 2 3) (3 2 2 3) (3 3 3) (3 3 3 3) (2 2) (2 1 2) (2 1 1 2) (2 2 2) (2 2 2 2) (1 1) (1 1 1) (1 1 1 1))
_$ (f 5 5 2)
((5 5 4 5 5) (5 5 3 5 5) (5 5) (5 3 5) (5 3 3 5) (5 3 3 3 5) (5 4 5) (5 4 4 5) (5 4 4 4 5) (5 5 5) (5 5 5 5) (5 5 5 5 5) (4 4) (4 2 4) (4 2 2 4) (4 2 2 2 4) (4 3 4) (4 3 3 4) (4 3 3 3 4) (4 4 4) (4 4 4 4) (4 4 4 4 4) (3 3) (3 1 3) (3 1 1 3) (3 1 1 1 3) (3 2 3) (3 2 2 3) (3 2 2 2 3) (3 3 3) (3 3 3 3) (3 3 3 3 3) (2 2) (2 1 2) (2 1 1 2) (2 1 1 1 2) (2 2 2) (2 2 2 2) (2 2 2 2 2) (1 1) (1 1 1) (1 1 1 1) (1 1 1 1 1))
_$ (f 6 6 2)
((6 6 5 5 6 6) (6 6 5 6 6) (6 6 4 4 6 6) (6 6 4 6 6) (6 6) (6 4 6) (6 4 4 6) (6 4 4 4 6) (6 4 4 4 4 6) (6 5 6) (6 5 5 6) (6 5 5 5 6) (6 5 5 5 5 6) (6 6 6) (6 6 6 6) (6 6 6 6 6) (6 6 6 6 6 6) (5 5) (5 3 5) (5 3 3 5) (5 3 3 3 5) (5 3 3 3 3 5) (5 4 5) (5 4 4 5) (5 4 4 4 5) (5 4 4 4 4 5) (5 5 5) (5 5 5 5) (5 5 5 5 5) (5 5 5 5 5 5) (4 4) (4 2 4) (4 2 2 4) (4 2 2 2 4) (4 2 2 2 2 4) (4 3 4) (4 3 3 4) (4 3 3 3 4) (4 3 3 3 3 4) (4 4 4) (4 4 4 4) (4 4 4 4 4) (4 4 4 4 4 4) (3 3) (3 1 3) (3 1 1 3) (3 1 1 1 3) (3 1 1 1 1 3) (3 2 3) (3 2 2 3) (3 2 2 2 3) (3 2 2 2 2 3) (3 3 3) (3 3 3 3) (3 3 3 3 3) (3 3 3 3 3 3) (2 2) (2 1 2) (2 1 1 2) (2 1 1 1 2) (2 1 1 1 1 2) (2 2 2) (2 2 2 2) (2 2 2 2 2) (2 2 2 2 2 2) (1 1) (1 1 1) (1 1 1 1) (1 1 1 1 1) (1 1 1 1 1 1))
_$
x_s_s_1
发表于 2022-2-27 20:08:12
本帖最后由 x_s_s_1 于 2022-2-27 20:09 编辑
mahuan1279 发表于 2022-2-27 18:07
;;;前提m>=2
(defun f(a m n)
(defun f1(a m n)
谢谢了,我再仔细研读一下
mahuan1279
发表于 2022-2-28 23:42:55
mahuan1279 发表于 2022-2-27 18:07
;;;前提m>=2
(defun f(a m n)
(defun f1(a m n)
由两个表拼凑而成总显得不够完美,直接一步到位。
_$ (defun f(a m n)
(setq i 1 vvlst nil)
(while (<= i a)
(setq k (max 1 (- i n)))
(while (<= k i)
(setq vlst nil)
(setq plst (list (list i k i)))
(setq qlst (list (list i k k i)))
(while (<= (length (car plst)) m)
(setq vlst (append plst vlst))
(if (= (length plst) 1)
(setq plst (list (list i k k k i) (list i i k i i)))
(setq plst (cons (cons i (cons k (cdr (reverse (cons i (cons k (cdr (car plst)))))))) (mapcar '(lambda (x) (cons i (reverse (cons i x)))) plst)))
)
)
(while (<= (length (car qlst)) m)
(setq vlst (append qlst vlst))
(if (= (length plst) 1)
(setq qlst (list (list i k k k k i) (list i i k k i i)))
(setq qlst (cons (cons i (cons k (cdr (reverse (cons i (cons k (cdr (car qlst)))))))) (mapcar '(lambda (x) (cons i (reverse (cons i x)))) qlst)))
)
)
(setq vvlst (append vlst vvlst))
(setq k (+ k 1))
)
(setq vvlst (cons (list i i) vvlst))
(setq i (+ i 1))
)
vvlst
)
F
_$ (f 4 3 2)
((4 4) (4 4 4) (4 3 4) (4 2 4) (3 3) (3 3 3) (3 2 3) (3 1 3) (2 2) (2 2 2) (2 1 2) (1 1) (1 1 1))
_$ (f 5 4 3)
((5 5) (5 5 5 5) (5 5 5) (5 4 4 5) (5 4 5) (5 3 3 5) (5 3 5) (5 2 2 5) (5 2 5) (4 4) (4 4 4 4) (4 4 4) (4 3 3 4) (4 3 4) (4 2 2 4) (4 2 4) (4 1 1 4) (4 1 4) (3 3) (3 3 3 3) (3 3 3) (3 2 2 3) (3 2 3) (3 1 1 3) (3 1 3) (2 2) (2 2 2 2) (2 2 2) (2 1 1 2) (2 1 2) (1 1) (1 1 1 1) (1 1 1))
_$
mahuan1279
发表于 2022-3-1 12:45:23
本帖最后由 mahuan1279 于 2022-3-1 13:18 编辑
mahuan1279 发表于 2022-2-28 23:42
由两个表拼凑而成总显得不够完美,直接一步到位。
_$ (defun f(a m n)
(setq i 1 vvlst nil)
当K=i时,有重复情况,需单独处理。
_$ (defun f(a m n)
(setq i 1 vvlst nil)
(while (<= i a)
(setq k (max 1 (- i n)))
(while (< k i)
(setq vlst nil)
(setq plst (list (list i k i)))
(setq qlst (list (list i k k i)))
(while (<= (length (car plst)) m)
(setq vlst (append plst vlst))
(if (= (length plst) 1)
(setq plst (list (list i k k k i) (list i i k i i)))
(setq plst (cons (cons i (cons k (cdr (reverse (cons i (cons k (cdr (car plst)))))))) (mapcar '(lambda (x) (cons i (reverse (cons i x)))) plst)))
)
)
(while (<= (length (car qlst)) m)
(setq vlst (append qlst vlst))
(if (= (length plst) 1)
(setq qlst (list (list i k k k k i) (list i i k k i i)))
(setq qlst (cons (cons i (cons k (cdr (reverse (cons i (cons k (cdr (car qlst)))))))) (mapcar '(lambda (x) (cons i (reverse (cons i x)))) qlst)))
)
)
(setq vvlst (append vlst vvlst))
(setq k (+ k 1))
)
(setq vvlst (cons (list i i) vvlst))
(if (= k i)
(progn
(setq vlst nil)
(setq plst (list i i i))
(while (<= (length plst) m)
(setq vlst (append (list plst) vlst))
(setq plst (cons i plst))
)
)
)
(setq vvlst (append vlst vvlst))
(setq i (+ i 1))
)
vvlst
)
F
_$ (f 3 2 2)
((3 3) (2 2) (1 1))
_$ (f 4 3 2)
((4 4 4) (4 4) (4 3 4) (4 2 4) (3 3 3) (3 3) (3 2 3) (3 1 3) (2 2 2) (2 2) (2 1 2) (1 1 1) (1 1))
_$ (f 4 4 2)
((4 4 4 4) (4 4 4) (4 4) (4 3 3 4) (4 3 4) (4 2 2 4) (4 2 4) (3 3 3 3) (3 3 3) (3 3) (3 2 2 3) (3 2 3) (3 1 1 3) (3 1 3) (2 2 2 2) (2 2 2) (2 2) (2 1 1 2) (2 1 2) (1 1 1 1) (1 1 1) (1 1))
_$ (f 6 4 2)
((6 6 6 6) (6 6 6) (6 6) (6 5 5 6) (6 5 6) (6 4 4 6) (6 4 6) (5 5 5 5) (5 5 5) (5 5) (5 4 4 5) (5 4 5) (5 3 3 5) (5 3 5) (4 4 4 4) (4 4 4) (4 4) (4 3 3 4) (4 3 4) (4 2 2 4) (4 2 4) (3 3 3 3) (3 3 3) (3 3) (3 2 2 3) (3 2 3) (3 1 1 3) (3 1 3) (2 2 2 2) (2 2 2) (2 2) (2 1 1 2) (2 1 2) (1 1 1 1) (1 1 1) (1 1))
_$ (f 6 5 2)
((6 6 6 6 6) (6 6 6 6) (6 6 6) (6 6) (6 5 5 6) (6 5 5 5 6) (6 6 5 6 6) (6 5 6) (6 4 4 6) (6 4 4 4 6) (6 6 4 6 6) (6 4 6) (5 5 5 5 5) (5 5 5 5) (5 5 5) (5 5) (5 4 4 5) (5 4 4 4 5) (5 5 4 5 5) (5 4 5) (5 3 3 5) (5 3 3 3 5) (5 5 3 5 5) (5 3 5) (4 4 4 4 4) (4 4 4 4) (4 4 4) (4 4) (4 3 3 4) (4 3 3 3 4) (4 4 3 4 4) (4 3 4) (4 2 2 4) (4 2 2 2 4) (4 4 2 4 4) (4 2 4) (3 3 3 3 3) (3 3 3 3) (3 3 3) (3 3) (3 2 2 3) (3 2 2 2 3) (3 3 2 3 3) (3 2 3) (3 1 1 3) (3 1 1 1 3) (3 3 1 3 3) (3 1 3) (2 2 2 2 2) (2 2 2 2) (2 2 2) (2 2) (2 1 1 2) (2 1 1 1 2) (2 2 1 2 2) (2 1 2) (1 1 1 1 1) (1 1 1 1) (1 1 1) (1 1))
_$ (f 6 6 3)
((6 6 6 6 6 6) (6 6 6 6 6) (6 6 6 6) (6 6 6) (6 6) (6 5 5 5 5 6) (6 6 5 5 6 6) (6 5 5 6) (6 5 5 5 6) (6 6 5 6 6) (6 5 6) (6 4 4 4 4 6) (6 6 4 4 6 6) (6 4 4 6) (6 4 4 4 6) (6 6 4 6 6) (6 4 6) (6 3 3 3 3 6) (6 6 3 3 6 6) (6 3 3 6) (6 3 3 3 6) (6 6 3 6 6) (6 3 6) (5 5 5 5 5 5) (5 5 5 5 5) (5 5 5 5) (5 5 5) (5 5) (5 4 4 4 4 5) (5 5 4 4 5 5) (5 4 4 5) (5 4 4 4 5) (5 5 4 5 5) (5 4 5) (5 3 3 3 3 5) (5 5 3 3 5 5) (5 3 3 5) (5 3 3 3 5) (5 5 3 5 5) (5 3 5) (5 2 2 2 2 5) (5 5 2 2 5 5) (5 2 2 5) (5 2 2 2 5) (5 5 2 5 5) (5 2 5) (4 4 4 4 4 4) (4 4 4 4 4) (4 4 4 4) (4 4 4) (4 4) (4 3 3 3 3 4) (4 4 3 3 4 4) (4 3 3 4) (4 3 3 3 4) (4 4 3 4 4) (4 3 4) (4 2 2 2 2 4) (4 4 2 2 4 4) (4 2 2 4) (4 2 2 2 4) (4 4 2 4 4) (4 2 4) (4 1 1 1 1 4) (4 4 1 1 4 4) (4 1 1 4) (4 1 1 1 4) (4 4 1 4 4) (4 1 4) (3 3 3 3 3 3) (3 3 3 3 3) (3 3 3 3) (3 3 3) (3 3) (3 2 2 2 2 3) (3 3 2 2 3 3) (3 2 2 3) (3 2 2 2 3) (3 3 2 3 3) (3 2 3) (3 1 1 1 1 3) (3 3 1 1 3 3) (3 1 1 3) (3 1 1 1 3) (3 3 1 3 3) (3 1 3) (2 2 2 2 2 2) (2 2 2 2 2) (2 2 2 2) (2 2 2) (2 2) (2 1 1 1 1 2) (2 2 1 1 2 2) (2 1 1 2) (2 1 1 1 2) (2 2 1 2 2) (2 1 2) (1 1 1 1 1 1) (1 1 1 1 1) (1 1 1 1) (1 1 1) (1 1))
_$
xyp1964
发表于 2022-3-1 22:01:59
;; (tt lst表 n1中间最大元素数量)
(defun tt (lst n1 / i lst1 j k d)
(defun abc (x n / b) (repeat n (setq b (cons x b))) b)
(setq lst1 '()
j 0
)
(foreach a lst
(setq i 0)
(repeat (1+ n1)
(setq k 0)
(foreach b lst
(if (<= k j)
(setq d (append (list a) (abc b i) (list a))
lst1 (if (not (member d lst1))
(cons d lst1)
lst1
)
)
)
(setq k (1+ k))
)
(setq i (1+ i))
)
(setq j (1+ j))
)
(reverse lst1)
)
;; (tt '("a" "b" "c" "d" "e") 3)
;; '(("a" "a") ("a" "a" "a") ("a" "a" "a" "a") ("a" "a" "a" "a" "a") ("b" "b") ("b" "a" "b") ("b" "b" "b") ("b" "a" "a" "b") ("b" "b" "b" "b") ("b" "a" "a" "a" "b") ("b" "b" "b" "b" "b") ("c" "c") ("c" "a" "c") ("c" "b" "c") ("c" "c" "c") ("c" "a" "a" "c") ("c" "b" "b" "c") ("c" "c" "c" "c") ("c" "a" "a" "a" "c") ("c" "b" "b" "b" "c") ("c" "c" "c" "c" "c") ("d" "d") ("d" "a" "d") ("d" "b" "d") ("d" "c" "d") ("d" "d" "d") ("d" "a" "a" "d") ("d" "b" "b" "d") ("d" "c" "c" "d") ("d" "d" "d" "d") ("d" "a" "a" "a" "d") ("d" "b" "b" "b" "d") ("d" "c" "c" "c" "d") ("d" "d" "d" "d" "d") ("e" "e") ("e" "a" "e") ("e" "b" "e") ("e" "c" "e") ("e" "d" "e") ("e" "e" "e") ("e" "a" "a" "e") ("e" "b" "b" "e") ("e" "c" "c" "e") ("e" "d" "d" "e") ("e" "e" "e" "e") ("e" "a" "a" "a" "e") ("e" "b" "b" "b" "e") ("e" "c" "c" "c" "e") ("e" "d" "d" "d" "e") ("e" "e" "e" "e" "e"))
mahuan1279
发表于 2022-3-1 22:54:39
xyp1964 发表于 2022-3-1 22:01
_$ (tt '("a" "b" "c" "d" "e") 4)
(("a" "a") ("a" "a" "a") ("a" "a" "a" "a") ("a" "a" "a" "a" "a") ("a" "a" "a" "a" "a" "a") ("b" "b") ("b" "a" "b") ("b" "b" "b") ("b" "a" "a" "b") ("b" "b" "b" "b") ("b" "a" "a" "a" "b") ("b" "b" "b" "b" "b") ("b" "a" "a" "a" "a" "b") ("b" "b" "b" "b" "b" "b") ("c" "c") ("c" "a" "c") ("c" "b" "c") ("c" "c" "c") ("c" "a" "a" "c") ("c" "b" "b" "c") ("c" "c" "c" "c") ("c" "a" "a" "a" "c") ("c" "b" "b" "b" "c") ("c" "c" "c" "c" "c") ("c" "a" "a" "a" "a" "c") ("c" "b" "b" "b" "b" "c") ("c" "c" "c" "c" "c" "c") ("d" "d") ("d" "a" "d") ("d" "b" "d") ("d" "c" "d") ("d" "d" "d") ("d" "a" "a" "d") ("d" "b" "b" "d") ("d" "c" "c" "d") ("d" "d" "d" "d") ("d" "a" "a" "a" "d") ("d" "b" "b" "b" "d") ("d" "c" "c" "c" "d") ("d" "d" "d" "d" "d") ("d" "a" "a" "a" "a" "d") ("d" "b" "b" "b" "b" "d") ("d" "c" "c" "c" "c" "d") ("d" "d" "d" "d" "d" "d") ("e" "e") ("e" "a" "e") ("e" "b" "e") ("e" "c" "e") ("e" "d" "e") ("e" "e" "e") ("e" "a" "a" "e") ("e" "b" "b" "e") ("e" "c" "c" "e") ("e" "d" "d" "e") ("e" "e" "e" "e") ("e" "a" "a" "a" "e") ("e" "b" "b" "b" "e") ("e" "c" "c" "c" "e") ("e" "d" "d" "d" "e") ("e" "e" "e" "e" "e") ("e" "a" "a" "a" "a" "e") ("e" "b" "b" "b" "b" "e") ("e" "c" "c" "c" "c" "e") ("e" "d" "d" "d" "d" "e") ("e" "e" "e" "e" "e" "e"))
_$
似乎少了("b" "b" "a" "b" "b")、("b" "b" "a" "a" "b" "b") ……等等情形。
xyp1964
发表于 2022-3-2 13:30:21
mahuan1279 发表于 2022-3-1 22:54
_$ (tt '("a" "b" "c" "d" "e") 4)
(("a" "a") ("a" "a" "a") ("a" "a" "a" "a") ("a" "a" "a" "a" "a") ...
实在是看不太懂楼主的要求