V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Patrick95
V2EX  ›  问与答

这道题用程序来计算 求比较精简的代码(PHP 或 Python)

  •  1
     
  •   Patrick95 · 2016-04-19 23:57:16 +08:00 · 2091 次点击
    这是一个创建于 3131 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一匹马车 车上坐着 5 个人,每人背 5 个袋子,每个袋子里有 5 条大猫,每条大猫带着 5 只小猫,每只小猫带着 5 只老鼠当零食。 求一共多少条腿

    不算马腿。

    18 条回复    2016-04-20 23:28:57 +08:00
    icybee
        1
    icybee  
       2016-04-20 00:39:26 +08:00
    感觉智商被碾压了。。。
    JohnR
        2
    JohnR  
       2016-04-20 04:22:31 +08:00
    310
    JohnR
        3
    JohnR  
       2016-04-20 04:23:35 +08:00
    我用的思维导图软件辅助计算的。不知道有错没有
    msg7086
        4
    msg7086  
       2016-04-20 06:37:43 +08:00
    pry(main)> [4,4,4,0,2,0].inject{|s,d| (s<<2)+s+d}
    => 15510

    不知道对不对。不过这 5 个人背着三千多只老鼠是想要干什么?
    fractal314
        5
    fractal314  
       2016-04-20 07:16:09 +08:00 via Android
    5*2+(5^3+5^4+5^5)*4=10+500*155=77510
    bigtom
        6
    bigtom  
       2016-04-20 09:04:38 +08:00
    sum([pow(5,5-i)*x for (i,x) in enumerate([4,4,4,0,2,0])])

    15510
    SpicyCat
        7
    SpicyCat  
       2016-04-20 09:46:56 +08:00
    「每只小猫带着 5 只老鼠当零食」,被萌到了,哈哈哈😹
    xuwenmang
        8
    xuwenmang  
       2016-04-20 09:58:09 +08:00
    变量
    人类=5 人
    大猫=5 人*5 袋*5 大猫
    小猫=5 人*5 袋*5 大猫*5 小猫
    老鼠=5 人*5 袋*5 大猫*5 小猫*5 老鼠

    算法
    人类*2+(大猫+小猫+老鼠)*4

    声明:不是程序员,
    Patrick95
        9
    Patrick95  
    OP
       2016-04-20 11:59:36 +08:00
    @msg7086 结果是对的 但是我看不懂这代码 是 ruby 吗
    Patrick95
        10
    Patrick95  
    OP
       2016-04-20 12:00:29 +08:00
    @bigtom 结果是对的 但是用一行来写的话好难理解啊。
    Patrick95
        11
    Patrick95  
    OP
       2016-04-20 12:01:25 +08:00
    @fractal314 差太多啦
    -----

    @JohnR 310 肯定不会啦
    msg7086
        12
    msg7086  
       2016-04-20 20:55:02 +08:00
    @Patrick95 是你说要精简的啊 w
    精简当然就 one-liner 了。
    Patrick95
        13
    Patrick95  
    OP
       2016-04-20 21:06:39 +08:00
    @msg7086 精简到都看不懂了=w=
    msg7086
        14
    msg7086  
       2016-04-20 21:09:12 +08:00   ❤️ 1
    @Patrick95 Inject 是个 Reducer ,相当于循环。
    s = 0; for d in [4,4,4,0,2,0]: s = s * 5 + d;
    这样应该能理解了吧?
    yhylord
        15
    yhylord  
       2016-04-20 22:05:19 +08:00 via Android
    @msg7086 为什么要拆成位运算呢?瞬间感觉回到某些国产大学 C 语言教材
    msg7086
        16
    msg7086  
       2016-04-20 22:07:28 +08:00
    @yhylord (混淆
    Patrick95
        17
    Patrick95  
    OP
       2016-04-20 22:32:48 +08:00
    @msg7086 我这样也理解不能=w= 我不是计算机科班出身 对这个实在苦手 大神能否帮助我理解下这个算法的过程。
    Patrick95
        18
    Patrick95  
    OP
       2016-04-20 23:28:57 +08:00
    @msg7086 我自己搞懂了,多谢菊苣。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5351 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:27 · PVG 16:27 · LAX 00:27 · JFK 03:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.