首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >LOL‘Up Project Euler One

LOL‘Up Project Euler One
EN

Code Review用户
提问于 2015-02-01 22:18:42
回答 1查看 1K关注 0票数 35

上一次写棒状码已经有一段时间了,所以我想解决Euler #1项目。

如果我们列出所有低于10的自然数,它们是3或5的倍数,我们得到3,5,6和9。这些倍数之和是23。找出低于1000的3或5倍数之和。

这是我为解决这个问题而编写的代码/脚本:

代码语言:javascript
运行
复制
HAI 1.2
    VISIBLE "HAI, PROJEK LOLLER ONE!!"

    I HAS A LIMIT ITZ 1000
    I HAS A TOTAL ITZ 0
    I HAS A CHEEZ ITZ 3
    I HAS A BURGER ITZ 5
    I HAS A CHEEZBURGER ITZ PRODUKT OF CHEEZ AN BURGER

    HOW IZ I ADDTOTAL YR VALUE
        I HAS A RESULT ITZ SUM OF VALUE AN TOTAL
        FOUND YR RESULT
    IF U SAY SO


    IM IN YR MIND UPPIN YR NUMBER TIL BOTH SAEM NUMBER AN LIMIT

        I HAS A PICKLE ITZ FAIL

        BOTH SAEM 0 AN MOD OF NUMBER AN CHEEZBURGER
        O RLY?, YA RLY
            PICKLE R WIN
        NO WAI
            BOTH SAEM 0 AN MOD OF NUMBER AN CHEEZ
            O RLY?, YA RLY
                PICKLE R WIN
            NO WAI
                BOTH SAEM 0 AN MOD OF NUMBER AN BURGER
                O RLY?, YA RLY
                    PICKLE R WIN
                OIC
            OIC
        OIC

        BOTH SAEM PICKLE AN WIN
        O RLY?, YA RLY
            TOTAL R I IZ ADDTOTAL YR NUMBER MKAY
        OIC

    IM OUTTA YR MIND

    VISIBLE SMOOSH "TEH ANSWER IZ " AN TOTAL MKAY
    VISIBLE "DOWN WITH PROJEK LOLLER ONE!"

KTHXBYE

此代码可以在CodingGround上执行,并生成以下输出:

海,普罗耶克,罗列一号!

(扰流板)

TEH ANSWER IZ 233168 和PROJEK LOLLER一起倒下!

菲兹巴斯-like逻辑合适吗?还是我掉进了“容易”的陷阱?有没有办法把所有的条件都分解成一个,然后写一个更短的脚本呢?或者这个算法是一个糟糕/低效的算法?

EN

回答 1

Code Review用户

回答已采纳

发布于 2015-02-02 00:06:58

同样的人,同样的语言,同样的批评?

让我从(再次)规范你的可变套管选择开始。

很难分清什么是变量,什么不是:

但自从上次你的名字变好了。Cheez和Burgr并不是最好的,但考虑到它们的内容是任意设置的,因此有些毫无意义,他们真的坚持自己的立场。

但有一件事:你的芝士汉堡是不需要的。

如果你提前返回,首先用最大的除数检查除数是浪费计算能力的。(我记得rolfl有一些很好的统计数据,我现在找不到它。)我们可以从您的代码中完全消除该O RLY? YA RLY

当我们在吃奶酪汉堡的时候..。有件事我真的不喜欢吃奶酪汉堡..。泡菜。

删除做同一件事的三个YA RLY的临时变量是完全过分的。与PICKLES R WIN不同,将当前数字添加到总数中就足够了。

到目前为止:

代码语言:javascript
运行
复制
IM IN YR Mind UPPIN YR Number TIL BOTH SAEM Number AN Limit   
    BOTH SAEM 0 AN MOD OF Number AN Cheez
    O RLY?, YA RLY
          Total R I IZ AddToTotal YR Number MKAY
    NO WAI
          BOTH SAEM 0 AN MOD OF Number AN Burger
          O RLY?, YA RLY
                Total R I IZ AddToTotal YR Number MKAY
          OIC
    OIC
IM OUTTA YR Mind

现在我们得到了什么?这看起来应该是一个ElseIf,或者只是将条件简单地组合成一个或。

后者比较容易,但值得参考:还有一个“如果”。是MEBBE

最后守则:

代码语言:javascript
运行
复制
HAI 1.2
    VISIBLE "HAI, PROJEK LOLLER ONE!!"

    I HAS A Limit ITZ 1000
    I HAS A Total ITZ 0
    I HAS A Cheez ITZ 3
    I HAS A Burger ITZ 5

    HOW IZ I AddToTotal YR Value
        I HAS A Result ITZ SUM OF Value AN Total
        FOUND YR Result
    IF U SAY SO


    BTW Iterates from 0 to 999
    IM IN YR Mind UPPIN YR Number TIL BOTH SAEM Number AN Limit
        EITHER OF BOTH SAEM 0 MOD OF Number AN Cheez AN BOTH SAEM 0 MOD OF Number AN Burger
        O RLY?, YA RLY
             Total R I IZ AddToTotal YR Number MKAY
        OIC
    IM OUTTA YR Mind

    VISIBLE SMOOSH "TEH ANSWER IZ " AN Total MKAY
    VISIBLE "DOWN WITH PROJEK LOLLER ONE!"

KTHXBYE
票数 24
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/79298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档