-3

您应该使用循环进行多次加法迭代。GOTO 语句和标签可用于设计您的要求的循环。请给我一些想法。

4

2 回答 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 回答