lisp应该和forth差不多一样古老,用lisp现代方言Clojure的话:
user=> (doseq [a (range 51 135)
#_=> :let [a2 (* 2 a) a4 (* 4 a)]
#_=> :when (and (<= 102 a2 543)
#_=> (<= 100 a4 543)
#_=> (apply distinct? (str a a2 a4)))]
#_=> (println a a2 a4))
76 152 304
【 在 MetalSlugX (冰天雪地敲冰块,春光灿烂挖臭虫) 的大作中提到: 】
: 标 题: 上古语言之Forth:求鸡和兔的数量
: 发信站: 水木社区 (Wed Apr 22 17:18:17 2020), 站内
:
: 【 以下文字转载自 IQDoor 讨论区 】
: 发信人: MetalSlugX (冰天雪地敲冰块,春光灿烂挖臭虫), 信区: IQDoor
: 标 题: Re: 求鸡和兔的数量 === 请用编程的方法
: 发信站: 水木社区 (Wed Apr 22 17:15:06 2020), 站内
:
: (
: 求鸡和兔的数量
: 有一群鸡和一群兔,它们的只数相同,它们的脚数都是三位数,且这两个三位数的数字分别
: 是0,1,2,3,4,5,每个数字只能用一次。
:
: 运行环境:
https://thebeez.home.xs4all.nl/4tH/: 运行方式:4th cx 兔鸡.4th
: 运行结果:兔、鸡各76 只,鸡脚数目:152 ,兔脚数目:304
: )
:
: 10 array foo \ 初始化数组,记录0~9每一位数字出现的次数
:
: : #数组元素+1
: dUp
: foo cELLS + @
: 1 +
: swap
: foo cells + !
: ;
:
: : 数组所有元素=0
: 6 0 do
: 0 foo I cells + !
: loop
: ;
:
: : 显示数组
:
: ." ["
: 6 0 do
: foo I cells + @ .
: loop
: ." ]"
: ;
:
: : 拆分百、十、个位 ( n -- 百 十 个 )
: dup dup >r >r
: 100 /
:
: r> 10 / 10 mod
:
: r> 10 mod
: ;
:
: variable 是否只用1次 \ 0~5是否只出现一次
:
: variable M \ 对数组循环,查看各位时的下标变量
:
: 999 4 / 1 + 100 2 / DO
: 数组所有元素=0
: 1 是否只用1次 ! \ 初始化为1
:
: \ ." 兔、鸡各" I . ." 只,"
:
: I 2*
: \ dup ." 鸡脚数目:" . ." ,"
: 拆分百、十、个位
: #数组元素+1
: #数组元素+1
: #数组元素+1
:
: I 4 *
: \ dup ." 兔脚数目:" .
: 拆分百、十、个位
: #数组元素+1
: #数组元素+1
: #数组元素+1
: \ 显示数组
: \ cr
:
: 0 M !
: begin
: foo M @ cells + @ 1 <> if
: 0 是否只用1次 !
: then
:
: 1 M +!
: M @ 6 = until
:
: 是否只用1次 @ 1 = if
: ." 兔、鸡各" I . ." 只,"
: I 2*
: dup ." 鸡脚数目:" . ." ,"
:
: I 4 *
: dup ." 兔脚数目:" .
: then
:
: LOOP
:
: 【 在 javame (javame) 的大作中提到: 】
: : 有一群鸡和一群兔,它们的只数相同,它们的脚数都是三位数,且这两个三位数的数字分别是0,1,2,3,4,5,每个数字只能用一次。
:
:
: --
:
: ※ 修改:·MetalSlugX 于 Apr 22 17:18:45 2020 修改本文·[FROM: 117.140.171.*]
: ※ 来源:·水木社区 newsmth.net·[FROM: 117.140.171.*]
--
修改:MetalSlugX FROM 117.140.171.*
FROM 14.205.174.*