【发布时间】:2016-11-18 05:00:11
【问题描述】:
您应该使用循环进行多次加法迭代。 GOTO 语句和标签可用于设计您的要求的循环。 请给我一些想法。
【问题讨论】:
-
我投票结束这个问题,因为它是一个零努力的需求转储。
标签: snobol
您应该使用循环进行多次加法迭代。 GOTO 语句和标签可用于设计您的要求的循环。 请给我一些想法。
【问题讨论】:
标签: snobol
如果不包含模式匹配,我认为它不是真正的 Snobol...
此解决方案通过将模式与字符串"01012345678902468" 匹配并通过函数add() 添加生成的数字来生成偶数000 .. 100。循环是通过模式末尾的 FAIL 关键字完成的,这会强制模式扫描继续寻找替代方案,直到表达式 (*EQ(h t o,100) ABORT) 导致扫描中止。
&FULLSCAN = 1
DEFINE('add(x)') :(add.End);add sum = sum + x :(RETURN);add.End
"01012345678902468" (LEN(1) $ h *LEN(1 - h)) ARB (LEN(1) $ t
. *LEN(9 - t)) ARB LEN(1) $ o *add(h t o)
. (*EQ(h t o,100) ABORT) FAIL
OUTPUT = sum
END
在 Snobol 和 Spitbol 中都有效(Snobol 需要&FULLSCAN = 1,它在 Spitbol 中是无操作的)
【讨论】:
*这适用于 Snobol 的 Spitbol 版本。
循环 m = le(n, 98) (n = n + 2) + m :s(loop);输出 = m ;结束
【讨论】: