找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 605|回复: 16

[原创] 排数字游戏

[复制链接]

已领礼包: 1862个

财富等级: 堆金积玉

发表于 2020-2-29 19:40:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
将0,1,1,2,2,3,3……,n,n排成一排,2个1中间要有1个数,2个2中间要有2个数,2个3中间要有3个数,……2个n之间要有n个数。求所有满足条件的排列情况。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1862个

财富等级: 堆金积玉

 楼主| 发表于 2020-2-29 19:42:19 | 显示全部楼层
其实就是多叉树裁枝查找过程,符合条件的继续往下分枝。可以编程序找到所有解。核心问题是k****k如何插入到a*b**c***c**b***a中,且K不能落在有数字的位置上。如2**2插入到3**435**4**5中去的结果有2**23**435**4**5,2*32*435**4**5,3**4352*42*5,3**435*24*25,3**435**4*252,3**435**4**52**2.可以看成在3**435**4**5前后均加上4个*,即得****3**435**4**5****,然后匹配连续四个字符,如果四个字符首尾都是*,则可将2**2替换插入,得到所有的结果。
lll.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1862个

财富等级: 堆金积玉

 楼主| 发表于 2020-2-29 19:44:40 | 显示全部楼层
本帖最后由 aimisiyou 于 2020-3-1 00:29 编辑

(defun ff (n)
(defun f (k)
  (setq str "")
  (repeat k
    (setq str (strcat "*" str))
   )
)
(setq str_n (strcat (itoa n) (f n) (itoa n)) strlst (list str_n) num (+ n n 1))
(while (> n 1)
   (setq vlst nil j 0 nk (length strlst))
   (while (< j nk)
       (setq en (nth j strlst))
       (setq str_n (strcat (f (+ n 1)) en (f (+ n 1))))
           (setq i 1)
           (while (< i (+ (strlen en) n 3))
              (if (= "*" (substr str_n i 1) (substr str_n (+ i n) 1))
                      (if (= i 1)
                             (progn
                     (setq str_new (strcat (itoa  (- n 1)) (substr str_n (+ i 1) (- n 1)) (itoa (- n 1)) (substr str_n (+ n 2))))
                                         (setq str_new (vl-string-right-trim "*" (vl-string-left-trim "*" str_new)))
                                         (if (<= (strlen str_new) num)
                         (setq vlst (cons str_new vlst))
                                          )
                              )
                         (progn
                     (setq str_new  (strcat (substr str_n 1 (- i 1)) (itoa (- n 1)) (substr str_n (+ i 1) (- n 1))
                           (itoa (- n 1))  (substr str_n (+ n i 1))))
                     (setq str_new (vl-string-right-trim "*" (vl-string-left-trim "*" str_new)))
                     (if (<= (strlen str_new) num)
                         (setq vlst (cons str_new vlst))
                                          )
                              )
                       )
                        )
                    (setq i (+ i 1))
             )
           (setq j (+ 1 j))
        )
     (setq strlst vlst)
         (setq n (- n 1))
  )
  (setq vvlst  (apply 'append (mapcar '(lambda (x)
                             (if (vl-string-search "*" x)
                                  (list (vl-string-translate "*" "0" x))
                                                                  (list (strcat "0" x) (strcat x  "0"))
                                                          )
                                                        )
                                                        strlst)
                                )   
  )
)
FF
_$ (ff 1)
("101")
_$ (ff 2)
("20121" "12102")
_$ (ff 3)
("2302131" "0231213" "2312130" "0312132" "3121320" "1312032")
_$ (ff 4)
("240231413" "420324131" "041312432" "413124320" "141302432" "234203141" "023421314" "234213140" "131423024" "314132042")
_$ (ff 5)
("42352430151" "40352432151" "14135243205" "42502431513" "41512432503" "20425314135" "14153042352" "23425314105" "34253240151" "34513142502" "13145320425" "52402354131" "20524131543" "15104235243" "50141352432" "25324035141" "53141352402" "30523421514" "31513420524" "50234253141" "15123425304" "15103425324")
_$ (ff 6)
("6014153642352" "6234253640151" "2612145360435" "4260245316135" "4161345236205" "4263245316105" "6420524631513" "3642352460151" "3640352462151" "2632453064151" "3161345026425" "6121524630543" "2612153460354" "2462354036151" "3046325421615" "6425324635101" "1016425324635" "1316435024625" "1613504362542" "3062352416154" "6025324635141" "1612532463504" "2632503461514" "1416254230653" "2042635413165" "1416354032652" "2342635410165" "2462514136503" "4635243265101" "1014635243265" "1314635240265" "3046351412652" "2062514136543" "6352432654101" "1016352432654" "2362531416504" "3625324065141" "6250234653141" "1413564320526" "1415604235263" "4056141352632" "4562342536101" "1014562342536" "3456314152602" "2562141536403" "5620425364131" "5623425364101" "1015623425364" "3056314152642" "5610145362432" "2562304536141" "5613145362402" "3560324526141" "4151643052362" "4053642352161" "1415364235206" "4516142532603" "2452634053161" "5264205346131" "5364235246101" "1015364235246" "5161245236403" "1516304532642" "4530643512162" "3450364251216" "5246205431613" "1514603542362" "1512642530463" "1510642532463" "3151364250246" "5016135423624" "5026325431614" "5316135420624" "5340635412162" "1510463524326" "2532463514106")
_$
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1862个

财富等级: 堆金积玉

 楼主| 发表于 2020-2-29 19:46:54 | 显示全部楼层
本帖最后由 aimisiyou 于 2020-3-1 00:27 编辑

_$ (length (ff 1))
1
_$ (length (ff 2))
2
_$ (length (ff 3))
6
_$ (length (ff 4))
10
_$ (length (ff 5))
22
_$ (length (ff 6))
76
_$ (length (ff 7))
364
_$ (length (ff 8))
1876
_$ (length (ff 9))
8260
_$

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1862个

财富等级: 堆金积玉

 楼主| 发表于 2020-2-29 22:16:40 | 显示全部楼层
有点小错误,最后插入0时,集合里面每个元素只存在两种情况,里面含有1个“*”,或者全部是数字(即2个1之间有1个数,2个2之间有2个数,2个n之间有n个数。 ),对于全是数字的情况,0可以放在头或者尾。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1862个

财富等级: 堆金积玉

 楼主| 发表于 2020-2-29 22:20:17 | 显示全部楼层
本帖最后由 aimisiyou 于 2020-3-1 00:22 编辑

_$ (defun ff (n)
(defun f (k)
  (setq str "")
  (repeat k
    (setq str (strcat "*" str))
   )
)
(setq str_n (strcat (itoa n) (f n) (itoa n)) strlst (list str_n) num (+ n n 1))
(while (> n 1)
   (setq vlst nil j 0 nk (length strlst))
   (while (< j nk)
       (setq en (nth j strlst))
       (setq str_n (strcat (f (+ n 1)) en (f (+ n 1))))
           (setq i 1)
           (while (< i (+ (strlen en) n 3))
              (if (= "*" (substr str_n i 1) (substr str_n (+ i n) 1))
                      (if (= i 1)
                             (progn
                     (setq str_new (strcat (itoa  (- n 1)) (substr str_n (+ i 1) (- n 1)) (itoa (- n 1)) (substr str_n (+ n 2))))
                                         (setq str_new (vl-string-right-trim "*" (vl-string-left-trim "*" str_new)))
                                         (if (<= (strlen str_new) num)
                         (setq vlst (cons str_new vlst))
                                          )
                              )
                         (progn
                     (setq str_new  (strcat (substr str_n 1 (- i 1)) (itoa (- n 1)) (substr str_n (+ i 1) (- n 1))
                           (itoa (- n 1))  (substr str_n (+ n i 1))))
                     (setq str_new (vl-string-right-trim "*" (vl-string-left-trim "*" str_new)))
                     (if (<= (strlen str_new) num)
                         (setq vlst (cons str_new vlst))
                                          )
                              )
                       )
                        )
                    (setq i (+ i 1))
             )
           (setq j (+ 1 j))
        )
     (setq strlst vlst)
         (setq n (- n 1))
  )
  (setq vvlst  (apply 'append (mapcar '(lambda (x)
                             (if (vl-string-search "*" x)
                                  (list (vl-string-translate "*" "0" x))
                                                                  (list (strcat "0" x) (strcat x  "0"))
                                                          )
                                                        )
                                                        strlst)
                                )   
  )
)
FF
_$ (ff 1)
("101")
_$ (ff 2)
("20121" "12102")
_$ (ff 3)
("2302131" "0231213" "2312130" "0312132" "3121320" "1312032")
_$ (ff 4)
("240231413" "420324131" "041312432" "413124320" "141302432" "234203141" "023421314" "234213140" "131423024" "314132042")
_$ (ff 5)
("42352430151" "40352432151" "14135243205" "42502431513" "41512432503" "20425314135" "14153042352" "23425314105" "34253240151" "34513142502" "13145320425" "52402354131" "20524131543" "15104235243" "50141352432" "25324035141" "53141352402" "30523421514" "31513420524" "50234253141" "15123425304" "15103425324")
_$ (ff 6)
("6014153642352" "6234253640151" "2612145360435" "4260245316135" "4161345236205" "4263245316105" "6420524631513" "3642352460151" "3640352462151" "2632453064151" "3161345026425" "6121524630543" "2612153460354" "2462354036151" "3046325421615" "1016425324635" "1316435024625" "1613504362542" "3062352416154" "6025324635141" "1612532463504" "2632503461514" "1416254230653" "2042635413165" "1416354032652" "2342635410165" "2462514136503" "1014635243265" "1314635240265" "3046351412652" "2062514136543" "1016352432654" "2362531416504" "3625324065141" "6250234653141" "1413564320526" "1415604235263" "4056141352632" "1014562342536" "3456314152602" "2562141536403" "5620425364131" "1015623425364" "3056314152642" "5610145362432" "2562304536141" "5613145362402" "3560324526141" "4151643052362" "4053642352161" "1415364235206" "4516142532603" "2452634053161" "5264205346131" "1015364235246" "5161245236403" "1516304532642" "4530643512162" "3450364251216" "5246205431613" "1514603542362" "1512642530463" "1510642532463" "3151364250246" "5016135423624" "5026325431614" "5316135420624" "5340635412162" "1510463524326" "2532463514106")
_$
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1862个

财富等级: 堆金积玉

 楼主| 发表于 2020-2-29 22:21:54 | 显示全部楼层
n=10时数据溢出了。表存储数据容易溢出,按字符串存贮可能计算的n要大一些。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1862个

财富等级: 堆金积玉

 楼主| 发表于 2020-3-1 00:19:36 | 显示全部楼层
_$ (defun ff (n)
(defun f (k)
  (setq str "")
  (repeat k
    (setq str (strcat "0" str))
   )
)
(defun fstr (sstr)
   (setq n_n 0)
   (while (vl-string-search "?" sstr)
        (setq sstr (substr sstr (+ 2 (vl-string-search "?" sstr))))
        (setq n_n (+ n_n 1))
    )
)
(setq str_n (strcat (itoa n) (f n) (itoa n)) vstrlst (strcat str_n "?") num (+ n n 1))
(while (> n 1)
   (setq vlst "" j 0 nk (fstr vstrlst))
   (while (< j nk)
       (setq en (substr vstrlst 1 (vl-string-search "?" vstrlst)))
       (setq str_n (strcat (f (+ n 1)) en (f (+ n 1))))
           (setq i 1)
           (while (< i (+ (strlen en) n 3))
              (if (= "0" (substr str_n i 1) (substr str_n (+ i n) 1))
                      (if (= i 1)
                             (progn
                     (setq str_new (strcat (itoa  (- n 1)) (substr str_n (+ i 1) (- n 1)) (itoa (- n 1)) (substr str_n (+ n 2))))
                                         (setq str_new (vl-string-right-trim "0" (vl-string-left-trim "0" str_new)))
                                         (if (<= (strlen str_new) num)
                         (setq vlst (strcat str_new "?" vlst))
                                          )
                              )
                         (progn
                     (setq str_new  (strcat (substr str_n 1 (- i 1)) (itoa (- n 1)) (substr str_n (+ i 1) (- n 1))
                           (itoa (- n 1))  (substr str_n (+ n i 1))))
                     (setq str_new (vl-string-right-trim "0" (vl-string-left-trim "0" str_new)))
                     (if (<= (strlen str_new) num)
                         (setq vlst (strcat str_new "?" vlst))
                                          )
                              )
                       )
                        )
                    (setq i (+ i 1))
             )
           (setq j (+ 1 j))
       (setq vstrlst (substr vstrlst (+ 2 (vl-string-search "?" vstrlst))))
        )
     (setq vstrlst vlst)
         (setq n (- n 1))
  )
vstrlst
)
FF
_$ (ff 1)
"101?"
_$ (ff 2)
"20121?12102?"
_$ (ff 3)
"2302131?231213?312132?1312032?"
_$ (ff 4)
"240231413?420324131?41312432?141302432?234203141?23421314?131423024?314132042?"
_$ (ff 5)
"42352430151?40352432151?14135243205?42502431513?41512432503?20425314135?14153042352?23425314105?34253240151?34513142502?13145320425?52402354131?20524131543?15104235243?50141352432?25324035141?53141352402?30523421514?31513420524?50234253141?15123425304?15103425324?"
_$ (ff 6)
"6014153642352?6234253640151?2612145360435?4260245316135?4161345236205?4263245316105?6420524631513?3642352460151?3640352462151?2632453064151?3161345026425?6121524630543?2612153460354?2462354036151?3046325421615?6425324635101?1016425324635?1316435024625?1613504362542?3062352416154?6025324635141?1612532463504?2632503461514?1416254230653?2042635413165?1416354032652?2342635410165?2462514136503?4635243265101?1014635243265?1314635240265?3046351412652?2062514136543?6352432654101?1016352432654?2362531416504?3625324065141?6250234653141?1413564320526?1415604235263?4056141352632?4562342536101?1014562342536?3456314152602?2562141536403?5620425364131?5623425364101?1015623425364?3056314152642?5610145362432?2562304536141?5613145362402?3560324526141?4151643052362?4053642352161?1415364235206?4516142532603?2452634053161?5264205346131?5364235246101?1015364235246?5161245236403?1516304532642?4530643512162?3450364251216?5246205431613?1514603542362?1512642530463?1510642532463?3151364250246?5016135423624?5026325431614?5316135420624?5340635412162?1510463524326?2532463514106?"
_$ (ff 7)
"620425764315137?610145763425327?630453764251217?620524763541317?620427564131573?610147562432573?264205746315137?161345736425027?261215746305437?613157362452074?460354736251217?641517462532073?641517463502372?264253746351017?640537463512172?260253746351417?461514736523027?615147365432072?615107465234273?362532746501417?612172465304735?610173465324725?264207546131573?161347536402572?316134752642057?610175264235743?261217536403574?613175360425724?642572460531713?640572462531713?16135743625427?316135740625427?26325734615147?316135724625047?161257236453074?645171465302732?364537046512172?161527426534073?615174065342732?236253740651417?360537426524171?61517346532472?161507346532472?635273265401714?256204753641317?256234753641017?560347536412172?642702465317135?641713465327025?460274256131753?246207435613175?26327435614175?316137425624075?631713560427524?420624753161357?642752460357131?640752462357131?131643752462057?161375036425724?630753264257141?246257430653171?46357432652171?645703465327121?121625740365437?635743065427121?625724065347131?635713165427024?564171546302732?356437054612172?256237453604171?25623745361417?560171536423724?562372536401714?451614752362037?450634753261217?526427534603171?52642753461317?516107542632473?516137543602472?352632754161047?637243265471015?627121465374035?416174035623725?461714256237053?460714156237253?461714056237253?46171435623725?62742356437151?360734256247151?617103564372542?362732056417154?416174052632753?41617435263275?141607435263275?416174350632752?46171452632753?627425064375131?16172452634753?23627345161475?360731516427524?131463754206257?121627530463574?637513164572042?456274250631713?345637415162072?564703546327121?131563740526427?560724526347131?131563724526047?56171354632742?415164725326037?151647053462372?53647352462171?15163745326427?52462754316137?151463754326027?250263754316147?346731415627025?672402564731513?267203456374151?36713145627425?426724151637053?426724350637151?346732452607151?34673245261715?673405364725121?671215264735043?141367435206275?14167345236275?141673450362752?26721514637543?131673052462754?673151364752042?14156742352637?45671415362732?456734053627121?567101546372432?245267415136073?450674151362732?15167245236473?121526734503647?151673054362742?526721514637043?536723524607141?53672352461714?536703524627141?151467254236073?151467054236273?15146735423627?151267253406374?253267350416174?253267351416074?530673514162742?514167540236273?350436754121627?510167523426374?473624325761015?726121457634053?372632045761415?247261415376035?470614153762352?471614053762352?473604352762151?72632453764151?372632450764151?370632452764151?141726425307635?41716425327635?141706425327635?340736415127625?247263450376151?746305437625121?37463254276151?237263151476054?370631514762542?234273645101765?121726350437654?23726351417654?73625324765141?240257463151376?457264250376131?34573641512762?257263054376141?57263254376141?572602534763141?340537462512176?121527463504376?51716254237643?151706254237643?151736053427624?350736151427624?52472654131763?151473654302762?315137465204276?520726514137643?741613457362052?720623457364151?73161345726425?72462354736151?17126425374635?273264350746151?730623527461514?24723645317165?740625427365131?131743625427065?724625047365131?121723645307465?270261514736543?317136052472654?240275461315736?475364035726121?752602457364131?425724615137063?57416154372632?35743625427161?131573460524726?35723625417164?257236053471614?572362534706141?57236253471614?357236250471614?451714650237263?245273465301716?151742652437063?15173465324726?52732653417164?352732650417164?352732651417064?350732652417164?527326530471614?530473564121726?510174562342736?740161457236253?274206345731615?374236245701615?71316435724625?171306435724625?712162357436054?730263257416154?417104635273265?427324635171065?71416354732652?171406354732652?271216450734653?237203645171465?420724561317536?131743560427526?121724560347536?734563047526121?121723564307546?17125623475364?171356034752642?141752462357036?427524630573161?750264257346131?131753264257046?131753064257246?753161357426024?425724065317136?570426524731613?57141653472362?571316534702642?357131652472064?520723564317146?531713564207246?271214635743065?710146357432652?713146357402652?417104562372536?274235643705161?27423564371516?171425624735063?714156047352632?237243560471516?370435624725161?271215640735463?237203564171546?470354632752161?740526427531613?74151643752362?724526047531613?72452634753161?317135264275046?317135064275246?427524063571316?475304635712162?347532462571016?750246257431613?275204635743161?375131645702462?527423564371016?537403564271216?714105647235263?372432564701516?270234563741516?720325637415164?714153647352062?271215364735046?710153647352462?273205364715146?370235264715146?712152637453064?470254263751316?734503647512162?720524637543161?731513647502462?375234265741016?375131465724026?713145367425026?712152467354036?723524367541016?731513467524026?"
_$
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5295个

财富等级: 富甲天下

发表于 2020-3-1 07:51:33 | 显示全部楼层
八仙过海、各显神通。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1862个

财富等级: 堆金积玉

 楼主| 发表于 2020-3-1 08:17:38 | 显示全部楼层
本帖最后由 aimisiyou 于 2020-3-1 08:20 编辑

程序还可以优化,用nth函数的话,位置数受最大溢出数值限制。匹配查找过程可以简优化,采用布尔运算。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1488个

财富等级: 财源广进

发表于 2020-3-1 11:04:54 | 显示全部楼层
应用在什么场景呢?

点评

算法在前,应用在后。  详情 回复 发表于 2020-3-1 11:53
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1862个

财富等级: 堆金积玉

 楼主| 发表于 2020-3-1 11:53:20 | 显示全部楼层
flowerson 发表于 2020-3-1 11:04
应用在什么场景呢?

算法在前,应用在后。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6474个

财富等级: 富甲天下

发表于 2020-3-2 00:17:40 | 显示全部楼层
好高深啊,只能膜拜了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1862个

财富等级: 堆金积玉

 楼主| 发表于 2020-3-2 20:34:55 | 显示全部楼层
本帖最后由 aimisiyou 于 2020-3-2 20:36 编辑

;;;程序跑了近6个小时,得出(length (ff 11))=320208.不敢往12跑了,估计得好几个月。
_$ (defun ff (n)
(setq num (+ n n 1))
(defun f (k)
  (setq str "")
  (repeat k
    (setq str (strcat "0" str))
   )
)
(defun fstr (kk sstr)
   (setq nkk (max (+ kk 2) (- num (strlen sstr))) vlst nil)
   (setq sstr (strcat (f nkk) sstr (f nkk)))
   (setq slst (mapcar '(lambda (x) (- x 48)) (vl-string->list sstr)))
   (setq nlst (mapcar '(lambda (x) (if (= x 0) 1 0)) slst))
   (setq nnlst (mapcar '(lambda (x) (- x 48)) (vl-string->list  (strcat "1" (f  kk) "1"))))
   (while (<= (length nnlst) (length nlst))
         (if (= 2 (apply '+ (mapcar '(lambda (x y) (boole 1 x y)) nnlst nlst)))
                     (progn  
                             (setq ntlst (mapcar '+ slst (mapcar '(lambda (y) (* y kk)) nnlst)))
                                 (setq str1 (vl-list->string (mapcar '(lambda (x) (+ 48 x)) ntlst)))
                 (setq str_new (vl-string-subst str1 (substr sstr 1 (strlen str1)) sstr))
                             (setq str_new (vl-string-right-trim "0" (vl-string-left-trim "0" str_new)))
                                 (if (<= (strlen str_new) num)
                     (setq vlst (cons str_new  vlst))
                                  )
                          )
                   )
             (setq nnlst (cons 0 nnlst))
           )
        vlst
)
(setq str_n (strcat (vl-list->string (list (+ 48 n))) (f n) (vl-list->string (list (+ 48 n)))) vvlst (list str_n))
(while (> n 1)
        (setq vvlst (apply 'append (mapcar '(lambda (x) (fstr (- n 1) x)) vvlst)))
        (setq n (- n 1))
)
  (setq vvlst  (apply 'append (mapcar '(lambda (x)
                             (if (vl-string-search "0" x)
                                 (list x)
                                                                 (list (strcat "0" x) (strcat x "0"))
                                                          )
                                                        )
                                                        vvlst)
                                )   
  )
)
FF
_$ (ff 1)
("101")
_$ (ff 2)
("20121" "12102")
_$ (ff 3)
("0312132" "3121320" "1312032" "2302131" "0231213" "2312130")
_$ (length (ff 9))
8316
_$ (length (ff 10))
46768
_$ (length (ff 11))
320208

点评

不会编辑公式,贴张统计个数的图片吧。  详情 回复 发表于 2020-3-4 20:59

评分

参与人数 1D豆 +5 收起 理由
HLCAD + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1862个

财富等级: 堆金积玉

 楼主| 发表于 2020-3-3 18:25:15 | 显示全部楼层
本帖最后由 aimisiyou 于 2020-3-7 21:21 编辑

趁热打铁,顺带解决了N皇后问题。(随着n递增,求解时间也是爆炸式增长)
_$ (defun f(n)
(defun check(nlst k)
  (setq i 0)
  (setq num (+ 1 (length nlst)))
  (setq slst (mapcar '(lambda (x) (list (setq i (+ i 1)) x)) nlst))
  (if (or (member k nlst) (= 0 (apply '*(mapcar '(lambda (y) (if (= (- num (car y)) (abs (- k (cadr y)))) 0 1)) slst))))  (setq vt nil) (setq vt t))
  vt
)
(setq j n flst nil)
(while (> j 0)
   (setq flst (cons (list j) flst))
   (setq j (- j 1))
)
(setq ii 1)
(while (< ii n)
  (setq bestlst nil)
               (foreach en flst
               (setq jj 1 valst nil)
               (while (<= jj n)
                      (if (check en jj)
                                  (progn
                                    (setq valst (cons (reverse (cons jj (reverse en))) valst))
                                            (setq jj (+ jj 1))
                                           )
                                           (setq jj (+ jj 1))
                               )
                                )
               (setq bestlst (append valst bestlst))
                        )
(setq flst bestlst)
(setq ii (+ ii 1))
)
flst
)
F
_$ (f 4)
((3 1 4 2) (2 4 1 3))
_$ (f 5)
((1 3 5 2 4) (1 4 2 5 3) (2 4 1 3 5) (2 5 3 1 4) (3 1 4 2 5) (3 5 2 4 1) (4 1 3 5 2) (4 2 5 3 1) (5 2 4 1 3) (5 3 1 4 2))
_$ (f 6)
((5 3 1 6 4 2) (4 1 5 2 6 3) (3 6 2 5 1 4) (2 4 6 1 3 5))
_$ (f 7)
((1 3 5 7 2 4 6) (1 4 7 3 6 2 5) (1 5 2 6 3 7 4) (1 6 4 2 7 5 3) (2 4 6 1 3 5 7) (2 4 1 7 5 3 6) (2 5 7 4 1 3 6) (2 5 3 1 7 4 6) (2 5 1 4 7 3 6) (2 6 3 7 4 1 5) (2 7 5 3 1 6 4) (3 1 6 2 5 7 4) (3 1 6 4 2 7 5) (3 5 7 2 4 6 1) (3 6 2 5 1 4 7) (3 7 4 1 5 2 6) (3 7 2 4 6 1 5) (4 1 5 2 6 3 7) (4 1 3 6 2 7 5) (4 2 7 5 3 1 6) (4 6 1 3 5 7 2) (4 7 5 2 6 1 3) (4 7 3 6 2 5 1) (5 1 6 4 2 7 3) (5 1 4 7 3 6 2) (5 2 6 3 7 4 1) (5 3 1 6 4 2 7) (5 7 2 4 6 1 3) (5 7 2 6 3 1 4) (6 1 3 5 7 2 4) (6 2 5 1 4 7 3) (6 3 7 4 1 5 2) (6 3 5 7 1 4 2) (6 3 1 4 7 5 2) (6 4 7 1 3 5 2) (6 4 2 7 5 3 1) (7 2 4 6 1 3 5) (7 3 6 2 5 1 4) (7 4 1 5 2 6 3) (7 5 3 1 6 4 2))
_$ (f 8)
((8 4 1 3 6 2 7 5) (8 3 1 6 2 5 7 4) (8 2 4 1 7 5 3 6) (8 2 5 3 1 7 4 6) (7 5 3 1 6 8 2 4) (7 4 2 8 6 1 3 5) (7 4 2 5 8 1 3 6) (7 3 1 6 8 5 2 4) (7 3 8 2 5 1 6 4) (7 2 4 1 8 5 3 6) (7 2 6 3 1 4 8 5) (7 1 3 8 6 4 2 5) (6 8 2 4 1 7 5 3) (6 4 1 5 8 2 7 3) (6 4 2 8 5 7 1 3) (6 4 7 1 3 5 2 8) (6 4 7 1 8 2 5 3) (6 3 1 8 4 2 7 5) (6 3 1 8 5 2 4 7) (6 3 1 7 5 8 2 4) (6 3 5 8 1 4 2 7) (6 3 5 7 1 4 2 8) (6 3 7 4 1 8 2 5) (6 3 7 2 4 8 1 5) (6 3 7 2 8 5 1 4) (6 2 7 1 3 5 8 4) (6 2 7 1 4 8 5 3) (6 1 5 2 8 3 7 4) (5 8 4 1 3 6 2 7) (5 8 4 1 7 2 6 3) (5 7 1 4 2 8 6 3) (5 7 1 3 8 6 4 2) (5 7 2 6 3 1 4 8) (5 7 2 6 3 1 8 4) (5 7 2 4 8 1 3 6) (5 7 4 1 3 8 6 2) (5 3 1 7 2 8 6 4) (5 3 1 6 8 2 4 7) (5 3 8 4 7 1 6 2) (5 2 4 7 3 8 6 1) (5 2 4 6 8 3 1 7) (5 2 6 1 7 4 8 3) (5 2 8 1 4 7 3 6) (5 1 4 6 8 2 7 3) (5 1 8 6 3 7 2 4) (5 1 8 4 2 7 3 6) (4 8 1 5 7 2 6 3) (4 8 1 3 6 2 7 5) (4 8 5 3 1 7 2 6) (4 7 1 8 5 2 6 3) (4 7 3 8 2 5 1 6) (4 7 5 3 1 6 8 2) (4 7 5 2 6 1 3 8) (4 6 1 5 2 8 3 7) (4 6 8 3 1 7 5 2) (4 6 8 2 7 1 3 5) (4 2 5 8 6 1 3 7) (4 2 7 5 1 8 6 3) (4 2 7 3 6 8 1 5) (4 2 7 3 6 8 5 1) (4 2 8 6 1 3 5 7) (4 2 8 5 7 1 3 6) (4 1 5 8 2 7 3 6) (4 1 5 8 6 3 7 2) (3 8 4 7 1 6 2 5) (3 7 2 8 5 1 4 6) (3 7 2 8 6 4 1 5) (3 6 2 7 1 4 8 5) (3 6 2 7 5 1 8 4) (3 6 2 5 8 1 7 4) (3 6 4 2 8 5 7 1) (3 6 4 1 8 5 7 2) (3 6 8 2 4 1 7 5) (3 6 8 1 4 7 5 2) (3 6 8 1 5 7 2 4) (3 5 2 8 1 7 4 6) (3 5 2 8 6 4 7 1) (3 5 7 1 4 2 8 6) (3 5 8 4 1 7 2 6) (3 1 7 5 8 2 4 6) (2 8 6 1 3 5 7 4) (2 7 3 6 8 5 1 4) (2 7 5 8 1 4 6 3) (2 6 1 7 4 8 3 5) (2 6 8 3 1 4 7 5) (2 5 7 4 1 8 6 3) (2 5 7 1 3 8 6 4) (2 4 6 8 3 1 7 5) (1 7 4 6 8 2 5 3) (1 7 5 8 2 4 6 3) (1 6 8 3 7 4 2 5) (1 5 8 6 3 7 2 4))

_$ (length (f 1))
1
_$ (length (f 2))
0
_$ (length (f 3))
0
_$ (length (f 4))
2
_$ (length (f 5))
10
_$ (length (f 6))
4
_$ (length (f 7))
40
_$ (length (f 8))
92
_$ (length (f 9))
352
_$ (length (f 10))
724
_$ (length (f 11))2680
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-25 16:00 , Processed in 0.216991 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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