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

实在是看不太懂楼主的要求
页: 1 2 [3] 4
查看完整版本: 一个有趣的表变换,请各位网友不吝赐教,谢谢