您应该使用循环进行多次加法迭代。GOTO 语句和标签可用于设计您的要求的循环。请给我一些想法。
问问题
182 次
2 回答
2
如果它不包含模式匹配,我认为它不是真正的 Snobol ......
000 .. 100
此解决方案通过将模式与字符串匹配"01012345678902468"
并通过函数添加生成的数字来生成偶数add()
。循环是通过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 中是无操作的)
于 2017-04-19T17:24:46.873 回答
1
*这适用于 Snobol 的 Spitbol 版本。
循环 m = le(n, 98) (n = n + 2) + m :s(loop); 输出 = m ; 结束
于 2016-11-29T13:59:24.563 回答