上一次写棒状码已经有一段时间了,所以我想解决Euler #1项目。
如果我们列出所有低于10的自然数,它们是3或5的倍数,我们得到3,5,6和9。这些倍数之和是23。找出低于1000的3或5倍数之和。
这是我为解决这个问题而编写的代码/脚本:
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逻辑合适吗?还是我掉进了“容易”的陷阱?有没有办法把所有的条件都分解成一个,然后写一个更短的脚本呢?或者这个算法是一个糟糕/低效的算法?
发布于 2015-02-02 00:06:58
让我从(再次)规范你的可变套管选择开始。
很难分清什么是变量,什么不是:
但自从上次你的名字变好了。Cheez和Burgr并不是最好的,但考虑到它们的内容是任意设置的,因此有些毫无意义,他们真的坚持自己的立场。
但有一件事:你的芝士汉堡是不需要的。
如果你提前返回,首先用最大的除数检查除数是浪费计算能力的。(我记得rolfl有一些很好的统计数据,我现在找不到它。)我们可以从您的代码中完全消除该O RLY? YA RLY
。
当我们在吃奶酪汉堡的时候..。有件事我真的不喜欢吃奶酪汉堡..。泡菜。
删除做同一件事的三个YA RLY
的临时变量是完全过分的。与PICKLES R WIN
不同,将当前数字添加到总数中就足够了。
到目前为止:
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
最后守则:
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
https://codereview.stackexchange.com/questions/79298
复制相似问题