找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3050|回复: 19

[他山之石] 古代《算经》中的买鸡LISP算法

[复制链接]
发表于 2013-7-26 12:33:41 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 snsj 于 2013-7-26 12:35 编辑

最近XD出一堆API,大家都在搞API了,出个算法的题目换换胃口:
古代算经中的题目:公鸡每只5元,母鸡每只3元,小鸡1元3只;求100元买100只鸡的算法有多少种
要求
1、使用LISP
2、前十个帖子高飞鸟不能发帖:)

评分

参与人数 2D豆 +9 收起 理由
炫翔 + 5 出题引导交流奖!
牢固 + 4 出题引导交流奖!

查看全部评分

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

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-7-26 14:11:17 | 显示全部楼层
买20只公鸡算一种不? 还是三种性别的都必须买啊。

点评

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

使用道具 举报

 楼主| 发表于 2013-7-26 14:34:29 | 显示全部楼层
必须三种鸡都买
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-7-26 14:42:59 | 显示全部楼层
本帖最后由 处处问题鸟 于 2013-7-26 16:18 编辑

直观的算法,遍历!
  1. (defun tt (TOTALPRICE TOTALS     COCKPRICE  HENPRICE   CHICKENPRICE           /          I          J          K          RESULT
  2.            )
  3.   (setq i 0)
  4.   (while
  5.     (< (setq i (1+ i))
  6.        (1+ (fix (/ (- TOTALPRICE HENPRICE CHICKENPRICE) COCKPRICE))
  7.            )
  8.        )
  9.      (setq j 0)
  10.      (while
  11.        (< (setq j (1+ j))
  12.           (1+ (fix (/ (- TOTALPRICE COCKPRICE CHICKENPRICE) HENPRICE))
  13.               )
  14.           )
  15.         (setq k (- Totals i j))
  16.         (if (equal TotalPrice
  17.                    (apply '+
  18.                           (mapcar '*
  19.                                   (list i j k)
  20.                                   (list cockPrice HenPrice chickenPrice)
  21.                                   )
  22.                           )
  23.                    1e-6
  24.                    )
  25.           ;;返回'(公鸡数 母鸡数 小鸡数)
  26.           (setq result (cons (list i j k) result))
  27.           )
  28.         )
  29.      )
  30.   result
  31.   )
  32.   ;;返回'(公鸡数 母鸡数 小鸡数)
  33.   (setq result (cons (list i j k) result))
  34.       )
  35.     )
  36.   )
  37.   result
  38. )

;;测试
(tt 100 100 5 3 (/ 1.0 3))
;;返回  

‘((12 4 84) (8 11 81) (4 18 78))

点评

恭喜你成为第一个鸡头:)  发表于 2013-7-26 15:38

评分

参与人数 1D豆 +3 收起 理由
snsj + 3 及时回复奖!

查看全部评分

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

使用道具 举报

 楼主| 发表于 2013-7-26 15:36:24 | 显示全部楼层
本帖最后由 snsj 于 2013-7-26 15:37 编辑

  1. (defun c:cs (/ gj mj xj kj)
  2. (setq gj 1 mj 1)
  3. (repeat 19
  4.   (repeat 33
  5.     (setq xj(- 100 gj mj))
  6.     (if(and(zerop(rem xj 3))(eq(+(* gj 5)(* mj 3)(/ xj 3))100))
  7.       (setq kj(cons(list gj mj xj)kj))
  8.       )(setq mj(1+ mj))
  9.     )(setq gj(1+ gj)mj 1)
  10.   )kj
  11. )

点评

红富士,repeat 19 33是根据什么定的啊?  详情 回复 发表于 2013-7-26 15:50
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-7-26 15:50:56 | 显示全部楼层

红富士,repeat 19 33是根据什么定的啊?

点评

如果每只鸡都买最多只能买19只公鸡、31只母鸡,才能保证每只鸡都能买到  详情 回复 发表于 2013-7-26 16:34
19 = (fix (/ (- 100 3 0.3333) 5)) 33 其实应为 31 (fix (/ (- 100 5 0.3333) 3))  详情 回复 发表于 2013-7-26 15:57
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-7-26 15:57:29 | 显示全部楼层
Lisphk 发表于 2013-7-26 15:50
红富士,repeat 19 33是根据什么定的啊?

19 = (fix (/ (- 100 3 0.3333) 5))

33 其实应为 31
(fix (/ (- 100 5 0.3333) 3))

点评

谢固版捧场,的确应该是31  详情 回复 发表于 2013-7-26 16:31
这是不是好像趣味数学里面的东西? 记得小时候学过的韩信点兵什么的。  详情 回复 发表于 2013-7-26 16:07
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-7-26 16:07:32 | 显示全部楼层
牢固 发表于 2013-7-26 15:57
19 = (fix (/ (- 100 3 0.3333) 5))

33 其实应为 31

这是不是好像趣味数学里面的东西? 记得小时候学过的韩信点兵什么的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-26 16:31:41 | 显示全部楼层
牢固 发表于 2013-7-26 15:57
19 = (fix (/ (- 100 3 0.3333) 5))

33 其实应为 31

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

使用道具 举报

 楼主| 发表于 2013-7-26 16:34:14 | 显示全部楼层
本帖最后由 snsj 于 2013-7-26 16:35 编辑
Lisphk 发表于 2013-7-26 15:50
红富士,repeat 19 33是根据什么定的啊?

如果每只鸡都买最多只能买19只公鸡、31只母鸡,才能保证每只鸡都能买到
更正一点,我那不是红富士,是红水晶苹果:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 33个

财富等级: 招财进宝

发表于 2013-7-27 01:04:43 | 显示全部楼层
我觉得用矩阵应该能简单点 尽管实质还是方程组..
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 308个

财富等级: 日进斗金

发表于 2013-7-27 10:42:34 | 显示全部楼层
:lol大中小和尚分馒头吧?类似类似
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 11306个

财富等级: 富甲天下

发表于 2013-7-28 08:06:36 | 显示全部楼层
多年前的百人百饼。
论坛怎么找不到了?
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:百人百饼.lsp 
下载次数:2  文件大小:14.13 KB 
下载权限: 不限 以上  [免费赚D豆]

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

使用道具 举报

发表于 2013-7-28 08:28:21 | 显示全部楼层

  1. (defun c:tt ()
  2.   (setq x 1)
  3.   (while (< x 19)
  4.     (setq y 1)
  5.     (while (< y 31)
  6.       (setq z (- 100 x y))
  7.       (if (= (+ (* x 5) (* y 3) (/ z 3.0)) 100)
  8.         (print (list "公鸡=" x "母鸡=" y "小鸡=" z))
  9.       )
  10.       (setq y (1+ y))
  11.     )
  12.     (setq x (1+ x))
  13.   )
  14.   (princ)
  15. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 10:04 , Processed in 0.204668 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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