乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 6|回复: 2

[编程交流] Collatz连接

[复制链接]

37

主题

125

帖子

87

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
190
发表于 2022-7-6 11:03:26 | 显示全部楼层 |阅读模式
大家好,
 
任何对collatz连接感兴趣的人(一半或三加一)都可以享受这一点
 
  1. (vl-load-com)
  2. (defun c:colCountMap( / col ulmit ms)
  3. (setq ms (vla-get-modelspace(vla-get-activedocument(vlax-get-acad-object))))
  4. (setq lbound (getreal "\nEnter lower limit"))
  5. (setq ubound (getreal"\nEnter higher limit"))
  6. (while(<= lbound ubound)
  7.    (vla-addcircle ms (vlax-3d-point (list (float lbound )(setq col(collatz lbound nil)) 0.0)) 0.25)
  8.    (setq lbound (1+ lbound))
  9.    (if(> col ulimit)
  10.      (setq ulimit col)
  11.    )
  12. )
  13. (vla-addline ms(vlax-3d-point (list 0.0 0.0 0.0))(vlax-3d-point(list 0.0 (float ulimit))))
  14. (vla-addline ms(vlax-3d-point (list 0.0 0.0 0.0))(vlax-3d-point(list (float ubound) 0.0 0.0)))      
  15. )
  16. (defun collatz(lbound flag / stop return)
  17. (setq stop nil)
  18. (setq return (list lbound))
  19. (while (= nil stop)
  20.    (if(> lbound 1 )
  21.      (progn
  22.    (if(= 0 (rem lbound 2))
  23.          (setq return (append return (list (/ lbound 2))))
  24.      (setq return (append return (list (1+(* 3 lbound)))))
  25.    )
  26.    (setq lbound (nth (1- (length return)) return))
  27.      )
  28.      (setq stop t)
  29.    )
  30. )
  31. (if(/= t flag)
  32.    (setq return (length return))
  33. )
  34. return
  35. )

 
基本上,它计算出用户定义范围内的迭代次数,直到起始数达到其停止点(1)
 
将每个值绘制成各种散点图
 
干杯
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:39:00 | 显示全部楼层
有趣的奥利-我喜欢数学线程
 
我倾向于这样编码:
 
  1. (defun c:colCountMap ( / ms lbound ubound col ulimit )  
  2. (vl-load-com)
  3. (setq ms (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
  4. (if (and (setq lbound (getint "\nEnter Lower limit: "))
  5.           (setq ubound (getint "\nEnter Upper limit: ")))
  6.    (progn
  7.      (while (<= lbound ubound)
  8.        (vla-put-color
  9.          (vla-addcircle ms
  10.            (vlax-3d-point (list lbound (setq col (Collatz lbound)) 0.0)) 0.25
  11.          )
  12.          acyellow
  13.        )
  14.        (setq lbound (1+ lbound))
  15.        (if (> col ulimit) (setq ulimit col))
  16.      )
  17.      (mapcar
  18.        (function
  19.          (lambda ( p )
  20.            (vla-put-color
  21.              (vla-AddLine ms (vlax-3D-point '(0. 0. 0.)) (vlax-3D-point p))
  22.              acGreen
  23.            )
  24.          )
  25.        )
  26.        (list (list 0. ulimit 0.) (list ulimit 0. 0.))
  27.      )
  28.    )
  29. )
  30. (princ)
  31. )
  32. (defun Collatz ( num )
  33. (
  34.    (lambda ( i )
  35.      (while (< 1 num) (setq i (1+ i))
  36.        (setq num
  37.          (if (zerop (logand 1 num)) (/ num 2) (1+ (* 3 num)))
  38.        )
  39.      )
  40.      i
  41.    )
  42.    0
  43. )
  44. )

 
我希望你不介意
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:24:21 | 显示全部楼层
在同一条大街上还有一些。。。
 
http://www.cadtutor.net/forum/showthread.php?t=40416
 
http://www.cadtutor.net/forum/showthread.php?t=45082
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-6 11:38 , Processed in 0.439252 second(s), 58 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表