原 一道小学数奥题引发程序猿的争论
发表于:2016-11-02 17:25:42,已有2357次阅读
起因是昨天的一则小新闻:
“150盏亮着的电灯,各有一个拉线开关控制,被顺序编号为1,2,3,4,…,150。将编号为3的倍数的灯的拉线各拉一下,再将编号为5的倍数的拉线各拉一下,拉完后亮着的灯数为几盏?”这是一道考公因数和公倍数的思维数学题,今年暑假,才上完三年级的罗弋在做四年级的数学竞赛题集《培优新帮手》时遇到此题,算出答案“90”与标准答案“80”不符,妈妈陈群只当儿子错了。
“妈妈我没有错!”罗弋没有见过拉线电灯,但他猜想应该就像餐馆里的电风扇一样,拉一下转起来,再拉一下停下来。“所以3和5倍数重叠的十盏灯因为拉了两下又亮起来,最后的答案就应该在80的基础上再加10。”
然后有一位程序猿,闲的蛋疼,使用Java语言,用最直接的方式写出如下代码:
着运行了。。。。。
结果是验证了小朋友答案的正确,可是当这段代码发给其他猿猿看了后,他们表示各种不服,他们表示很鄙视这种直接的运算结果。。。。
于是“数学盲“们开始慢慢的讨论起了小学数学,总结公式。。。。
讨论后连图片都画出来了!!!(多么认真)
讨论后。。。。
最终确定了终级公式。。。。
开灯数:150 - (3的倍数 + 5的倍数 - 15的倍数 * 2)
然后有人写出了改良后的第一版Javascript代码:
可是,最后还是免不了被批。。。。
于是接着各自又写了一版,Java与Javascript齐飞(都不服啊):
Java:
Javascript:
这样子结束了吗?不还没有!每一个程序员都是有点偏执的。。。。
最后,接着又稍微的优化了一下:
终才算消除了大部分人的抱怨。。。
现在看看程序猿的世界是多么的和谐、单纯!
暂无评论