明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 夏生生

[讨论] 一个有趣的表变换,请各位网友不吝赐教,谢谢

[复制链接]
发表于 2022-2-27 12:56:36 | 显示全部楼层
夏生生 发表于 2022-2-25 08:49
谢谢您的关注,我在一楼修改并尽力明确了需求,能否麻烦您再看下,谢谢

是这么分解么?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2022-2-27 13:17:22 | 显示全部楼层
本帖最后由 mahuan1279 于 2022-2-27 13:22 编辑

好像这样分解才对。如此分解之后,算法也就跟着出来了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2022-2-27 14:27:44 | 显示全部楼层
研究的好深奥,很训练思维逻辑 赞一个!
回复

使用道具 举报

发表于 2022-2-27 15:16:40 | 显示全部楼层
_$ (defun f1(a m)  
(setq flst (list a a) i 0 j 1  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)))
)
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))
_$

点评

少了个参数n,n控制向前取表项的步长  发表于 2022-2-27 15:20

评分

参与人数 1明经币 +1 收起 理由
夏生生 + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2022-2-27 15:17:48 | 显示全部楼层

应该向下面截图的这种逻辑



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

 楼主| 发表于 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 1  vlst nil)
(while (

非常感谢,您的逻辑能力太强了!!我试着用nth将它转成针对表看看
回复

使用道具 举报

发表于 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不相同)

谢谢您,完美解决
  1. (defun f2 (lst m n / i lsta)
  2.   (defun f1 (a m n / fflst flst i j vlst)
  3.     (setq flst (list a a)
  4.           i    0
  5.           j    (max 1 (- a n))
  6.           vlst nil
  7.           )
  8.     (while (<= j a)
  9.       (while (< i (- m 2))
  10.         (setq fflst (list j))
  11.         (repeat        i
  12.           (setq fflst (cons j fflst))
  13.           )
  14.         (setq vlst (cons fflst vlst))
  15.         (setq i (+ i 1))
  16.         )
  17.       (setq j (+ j 1)
  18.             i 0
  19.             )
  20.       )
  21.     (setq
  22.       vlst (mapcar '(lambda (x) (cons a (reverse (cons a x)))) vlst)
  23.       )
  24.     (setq vlst (cons flst (reverse vlst)))
  25.     )
  26.   (setq        i    (1+ (length lst))
  27.         lsta nil
  28.         )
  29.   (repeat (1- i)
  30.     (setq lsta (cons (f1 (setq i (1- i)) m n) lsta))
  31.     )
  32.   (setq
  33.     lst
  34.      (mapcar '(lambda (x) (mapcar '(lambda (y) (nth (1- y) lst)) x))
  35.              (apply 'append lsta)
  36.              )
  37.     )
  38.   )
  39. (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"))

点评

感觉遗漏偏多  发表于 2022-3-1 21:23
回复

使用道具 举报

发表于 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:21
回复

使用道具 举报

 楼主| 发表于 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")  ...

谢谢提醒,您提供的思路已经很清晰了,我顺着这个思路向下走就是
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-14 14:29 , Processed in 0.792692 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表