【问题标题】:Write a short program in SNOBOL that calculate the sum of all even integers from 1 to 100在 SNOBOL 中编写一个小程序,计算从 1 到 100 的所有偶数之和
【发布时间】:2016-11-18 05:00:11
【问题描述】:

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

【问题讨论】:

  • 我投票结束这个问题,因为它是一个零努力的需求转储。

标签: snobol


【解决方案1】:

如果不包含模式匹配,我认为它不是真正的 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 编写”,那么 Eben 发布的解决方案会更好。
【解决方案2】:

*这适用于 Snobol 的 Spitbol 版本。

循环 m = le(n, 98) (n = n + 2) + m :s(loop);输出 = m ;结束

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多