你应该使用循环进行多次迭代。 GOTO语句和标签可用于设计您需求的循环。 请给我一些想法。
答案 0 :(得分: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中是无操作的)
答案 1 :(得分:1)
*这适用于Spobbol版本的Snobol。
循环m = le(n,98)(n = n + 2)+ m:s(循环); output = m;结束