mahuan1279
发表于 2022-2-27 12:56:36
夏生生 发表于 2022-2-25 08:49
谢谢您的关注,我在一楼修改并尽力明确了需求,能否麻烦您再看下,谢谢
是这么分解么?
mahuan1279
发表于 2022-2-27 13:17:22
本帖最后由 mahuan1279 于 2022-2-27 13:22 编辑
好像这样分解才对。如此分解之后,算法也就跟着出来了。
guosheyang
发表于 2022-2-27 14:27:44
研究的好深奥,很训练思维逻辑 赞一个!
mahuan1279
发表于 2022-2-27 15:16:40
_$ (defun f1(a m)
(setq flst (list a a) i 0 j 1vlst 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)))
)
F1
_$ (f1 1 5)
((1 1) (1 1 1) (1 1 1 1) (1 1 1 1 1))
_$ (f1 2 5)
((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))
_$ (f1 3 5)
((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))
_$ (f1 4 5)
((4 4) (4 1 4) (4 1 1 4) (4 1 1 1 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))
_$
夏生生
发表于 2022-2-27 15:17:48
mahuan1279 发表于 2022-2-27 12:56
是这么分解么?
应该向下面截图的这种逻辑
夏生生
发表于 2022-2-27 15:22:58
本帖最后由 夏生生 于 2022-2-27 15:30 编辑
mahuan1279 发表于 2022-2-27 15:16
_$ (defun f1(a m)
(setq flst (list a a) i 0 j 1vlst nil)
(while (
非常感谢,您的逻辑能力太强了!!我试着用nth将它转成针对表看看
mahuan1279
发表于 2022-2-27 15:37:43
再补上(aa*****aa)(aaa***aaa)(aaaa*aaaa)……形式答案就齐全了。(*与a不相同)
夏生生
发表于 2022-2-27 15:54:00
本帖最后由 夏生生 于 2022-2-27 16:02 编辑
mahuan1279 发表于 2022-2-27 15:37
再补上(aa*****aa)(aaa***aaa)(aaaa*aaaa)……形式答案就齐全了。(*与a不相同)
谢谢您,完美解决
(defun f2 (lst m n / i lsta)
(defun f1 (a m n / fflst flst i j vlst)
(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)))
)
(setq i (1+ (length lst))
lsta nil
)
(repeat (1- i)
(setq lsta (cons (f1 (setq i (1- i)) m n) lsta))
)
(setq
lst
(mapcar '(lambda (x) (mapcar '(lambda (y) (nth (1- y) lst)) x))
(apply 'append lsta)
)
)
)
(f2 '("a" "b" "c" "d" "e") 4 2)(("a" "a") ("a" "a" "a") ("a" "a" "a" "a") ("b" "b") ("b" "a" "b") ("b" "a" "a" "b") ("b" "b" "b") ("b" "b" "b" "b") ("c" "c") ("c" "a" "c") ("c" "a" "a" "c") ("c" "b" "c") ("c" "b" "b" "c") ("c" "c" "c") ("c" "c" "c" "c") ("d" "d") ("d" "b" "d") ("d" "b" "b" "d") ("d" "c" "d") ("d" "c" "c" "d") ("d" "d" "d") ("d" "d" "d" "d") ("e" "e") ("e" "c" "e") ("e" "c" "c" "e") ("e" "d" "e") ("e" "d" "d" "e") ("e" "e" "e") ("e" "e" "e" "e"))
mahuan1279
发表于 2022-2-27 16:08:01
夏生生 发表于 2022-2-27 15:54
谢谢您,完美解决
_$ (f2 '("a" "b" "c" "d" ) 5 2)
(("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" "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" "b" "c") ("c" "b" "b" "c") ("c" "b" "b" "b" "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" "c" "d") ("d" "c" "c" "d") ("d" "c" "c" "c" "d") ("d" "d" "d") ("d" "d" "d" "d") ("d" "d" "d" "d" "d"))
_$
有遗漏,如("c" "c" "a" "c" "c")("c" "c" "b" "c" "c")等等。
夏生生
发表于 2022-2-27 16:17:57
mahuan1279 发表于 2022-2-27 16:08
_$ (f2 '("a" "b" "c" "d" ) 5 2)
(("a" "a") ("a" "a" "a") ("a" "a" "a" "a") ("a" "a" "a" "a" "a")...
谢谢提醒,您提供的思路已经很清晰了,我顺着这个思路向下走就是