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")...

谢谢提醒,您提供的思路已经很清晰了,我顺着这个思路向下走就是
页: 1 [2] 3 4
查看完整版本: 一个有趣的表变换,请各位网友不吝赐教,谢谢