一个租房广告引发的代码战争 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
windirt
V2EX    程序员

一个租房广告引发的代码战争

  •  
      windirt
    windirt 2016-06-22 11:19:50 +08:00 20785 次点击
    这是一个创建于 3472 天前的主题,其中的信息可能已经有所发展或是发生改变。
    起因是有人在群里贴了这个租房广告



    然后有人贴了随手写的解决方案





    跟着又是贴各种精简版







    106 条回复    2016-06-24 13:57:54 +08:00
    1  2  
    guizer
        1
    guizer  
       2016-06-22 11:33:08 +08:00
    这是什么语言啊,第一张图片我居然看懂了
    mns
        2
    mns  
       2016-06-22 11:35:10 +08:00 via Android
    有意思
    xx314327475
        3
    xx314327475  
       2016-06-22 11:37:26 +08:00
    代码程序要是设计的再复杂一点就好了
    yhxx
        4
    yhxx  
       2016-06-22 11:41:31 +08:00
    @guizer Java
    SvenWong
        5
    SvenWong  
       2016-06-22 11:42:09 +08:00
    java 代码的缩进有点问题
    viko16
        6
    viko16  
       2016-06-22 11:42:31 +08:00
    第一眼就觉得是 HR 的新阴谋!
    lichun
        7
    lichun  
       2016-06-22 11:45:45 +08:00
    tel = '18013820100'

    arr = list(set(tel))

    index = [arr.index(number) for number in tel]
    fcicq
        8
    fcicq  
       2016-06-22 11:47:35 +08:00
    正常的语言不应该能执行的. 越界了.
    sunchen
        9
    sunchen  
       2016-06-22 11:48:54 +08:00
    坚决不和 Java 程序员合租。他们做事太繁琐。我这样说可以引起骂战吗,哈哈哈
    lichun
        10
    lichun  
       2016-06-22 11:50:33 +08:00
    @lichun tel = ''.join(arr[i] for i in index)
    kindjeff
        11
    kindjeff  
       2016-06-22 11:53:56 +08:00 via iPhone   4
    缩进没对齐,+=前面不加空格,冒号前面加了个空格。天呐,怎么能和这样的人当室友。
    ipconfiger
        12
    ipconfiger  
       2016-06-22 11:56:02 +08:00   1
    租房代码生成器
    ipconfiger
        13
    ipconfiger  
       2016-06-22 11:56:53 +08:00
    zzzreg
        14
    zzzreg  
       2016-06-22 12:01:47 +08:00
    ruby 版的还可以再精简,不用 to_s 的
    ```ruby
    index.map { |i| arr[i] }.join
    ```
    guizer
        15
    guizer  
       2016-06-22 12:41:37 +08:00
    啊。我写个 shell 吧 ,不会精简.... /惊哭
    arr=(8 2 1 0 3)
    index=(2 0 3 2 4 0 1 3 2 3 3)
    for i in ${index[*]};do
    tel+=${arr[$i]}
    done
    printf "$tel\n"
    Biwood
        16
    Biwood  
       2016-06-22 12:46:05 +08:00
    虽然不知道是什么语言,但是这个逻辑本身就很简单,目测就能写出号码了: 18013820100
    guizer
        17
    guizer  
       2016-06-22 12:46:19 +08:00
    @yhxx 感谢
    asj
        18
    asj  
       2016-06-22 12:53:31 +08:00
    Haskell
    putStrLn $ ($ (head.show) `map` [8,2,1,0,3]) `map` (flip(!!) `map` [2,0,3,2,4,0,1,3,2,3,3])
    inisun
        19
    inisun  
       2016-06-22 12:58:38 +08:00
    看见这种写法,一般都是近几年的年轻人了,工作量大的时候,看这种 foreach 很累人
    majunbo
        20
    majunbo  
       2016-06-22 13:19:00 +08:00
    var arr = [8,2,1,0,3];
    var index = [2,0,3,2,4,0,1,3,2,3,3];
    var tel = "";
    index.forEach(function(e){
    tel+=arr[e];
    })
    document.write("联系方式:"+tel);
    broadliyn
        21
    broadliyn  
       2016-06-22 13:19:19 +08:00
    还不如画张图找最短路径组成的手机号。。。
    比这个无脑的 foreach 要高级多了
    21grams
        22
    21grams  
       2016-06-22 13:22:15 +08:00
    这是在秀智商下限吗?
    RemRain
        23
    RemRain  
       2016-06-22 13:26:34 +08:00
    图片上的解法无非都是把多行写到一行,我来贴个简单的:
    RemRain
        24
    RemRain  
       2016-06-22 13:26:43 +08:00
    print "18013820100"
    ethanlu
        25
    ethanlu  
       2016-06-22 13:27:29 +08:00 via Android
    学过一点 swift 居然对了
    solaya
        26
    solaya  
       2016-06-22 13:28:55 +08:00   12
    别去,写 java 的人不会自己做垃圾回收的
    ajan
        27
    ajan  
       2016-06-22 13:30:40 +08:00   3
    [2,0,3,2,4,0,1,3,2,3,3].map(i=>[8,2,1,0,3][i]).join('')
    surfire91
        28
    surfire91  
       2016-06-22 13:32:25 +08:00
    毫无 ps 痕迹啊
    dahvlh
        29
    dahvlh  
       2016-06-22 13:38:50 +08:00
    @sunchen 抗议 抗议
    yuyang1110
        30
    yuyang1110  
       2016-06-22 13:41:58 +08:00
    屎一般的缩进。。。。果断不能去啊。。
    ifake
        31
    ifake  
       2016-06-22 13:50:21 +08:00
    难道就我关心……群租该举报?
    palmers
        32
    palmers  
       2016-06-22 13:52:16 +08:00
    哈哈哈哈哈
    doushiyinweini
        33
    doushiyinweini  
       2016-06-22 14:01:49 +08:00
    $arr = [8,2,1,0,3];
    $index = [2,0,3,2,4,0,1,3,2,3,3];
    echo implode('', array_map(function($i) use ($arr){ return $arr[$i]; }, $index));
    npc0der
        34
    npc0der  
       2016-06-22 14:06:10 +08:00
    我的号码只包含 1805 开头也是 1805
    ChaosPark
        35
    ChaosPark  
       2016-06-22 14:10:41 +08:00
    这样水平的人不适合当室友。
    hiboshi
        36
    hiboshi  
       2016-06-22 14:19:12 +08:00
    <?php

    $arr = [8,2,1,0,3];
    $index = [2,0,3,2,4,0,1,3,2,3,3];

    foreach ($index as $k=>$v) {
    echo $arr[$v];
    }

    我是来引杖的。。。。。。。。。。。。。。。
    chuhemiao
        37
    chuhemiao  
       2016-06-22 14:23:26 +08:00
    还是 rust 看着帅!!!
    tangzhehao
        38
    tangzhehao  
       2016-06-22 14:23:58 +08:00
    卧槽,这个还要这么复杂么?直接推理就能猜出来。
    即使不懂代码,也知道 $arr 和 $index 一个是数集,一个是序列,按照手机号是 11 位,即可以推测出 $index 是序列, $arr 作为数集只有 5 个数字,序列之中有 0 没有 5 ,自然是 0 开始计数。如此对应下来:

    序号 0 1 2 3 4
    数集 8 2 1 0 3

    20324013233
    18013820100

    对否?
    sunchen
        39
    sunchen  
       2016-06-22 14:24:03 +08:00
    @solaya 但是他们有保洁呀
    woshiyigexiaohao
        40
    woshiyigexiaohao  
       2016-06-22 14:24:42 +08:00
    @hiboshi

    不应该写成
    $arr[]和 $index[]吗
    chuhemiao
        41
    chuhemiao  
       2016-06-22 14:28:04 +08:00
    @tangzhehao 赞,原来这才是作者的初始目地
    lingo233
        42
    lingo233  
       2016-06-22 14:29:12 +08:00
    ''.join(map(lambda i:str([8,2,1,0,3][i]), [2,0,3,2,4,0,1,3,2,3,3]))
    4641585
        43
    4641585  
       2016-06-22 14:29:48 +08:00
    一般来说

    print var //是 python2

    console.log() //是 js

    system.out.println(); //是 java

    这几个比较有特点。。
    slfmessi
        44
    slfmessi  
       2016-06-22 14:31:24 +08:00
    550 ,好便宜
    chuhemiao
        45
    chuhemiao  
       2016-06-22 14:31:32 +08:00
    @4641585 let 是 rust
    jixiangqd
        46
    jixiangqd  
       2016-06-22 14:31:57 +08:00
    @ajan 你这是强行写到一行,与楼主发的 python 版实现并没大区别
    tangzhehao
        47
    tangzhehao  
       2016-06-22 14:32:46 +08:00
    @chuhemiao 其实可以了,愿意这样去推理的,肯定也是有心想要去租房的、且有点头脑的。
    ys0290
        48
    ys0290  
       2016-06-22 14:33:55 +08:00 via iPhone
    没人在意这个号码被打爆吗?
    yiios
        49
    yiios  
       2016-06-22 14:45:19 +08:00
    func tel () -> String {
    let count = [1,2,3,5,7,0]
    let index = [0,3,4,3,2,5,2,5,5,1,5]
    var tel = ""
    for i in index {
    tel = tel + String(count[i])
    }
    return tel
    }
    tatsuteng
        50
    tatsuteng  
       2016-06-22 14:57:23 +08:00
    脸酸
    virusdefender
        51
    virusdefender  
       2016-06-22 15:05:16 +08:00   2
    不能和写 Java 的做室友,因为他们很多不会自己进行垃圾回收
    cashew
        52
    cashew  
       2016-06-22 15:10:23 +08:00
    慎重选择用三个字符缩进的室友。。。。。
    florije
        53
    florije  
       2016-06-22 15:13:20 +08:00
    妈蛋,都上当了,这是中介看不懂,然后发帖引诱小伙伴们帮忙解答……
    karnaugh
        54
    karnaugh  
       2016-06-22 15:36:17 +08:00
    @florije 是真的。。然后那哥们电话被打爆了。。。。
    KKKKKK
        55
    KKKKKK  
       2016-06-22 15:41:44 +08:00 via Android
    @chuhemiao rust 你给不打 分号, 我发死你。:doge:

    而且讲道理 rust 输出要用 println! 宏
    kkurs
        56
    kkurs  
       2016-06-22 15:47:03 +08:00
    @chuhemiao 别闹了,这里面哪有 Rust...
    warcraft1236
        57
    warcraft1236  
       2016-06-22 15:50:52 +08:00
    把 Java 改成其他语言而已
    zcqshine
        58
    zcqshine  
       2016-06-22 15:51:07 +08:00
    你们难道没发现这段代码实际上的输出应该是: 联系方式: 25
    吗?????
    zcqshine
        59
    zcqshine  
       2016-06-22 15:52:33 +08:00
    @zcqshine 啊啊啊, 我错了, 没仔细看, 原来已经定义了 tel 变量为 String 类型
    zcqshine
        60
    zcqshine  
       2016-06-22 15:58:25 +08:00
    @kindjeff java 语法冒号前面要加空格的, 哈哈哈
    ccloli
        61
    ccloli  
       2016-06-22 16:05:00 +08:00
    建议下次用位运算提升难度
    kkurs
        62
    kkurs  
       2016-06-22 16:05:06 +08:00
    fn main() {
    let arr = [8, 2, 1, 0, 3];
    let index = [2, 0, 3, 2, 4, 0, 1, 3, 2, 3, 3];
    println!("{}", index.iter().fold(String::new(), |phone, &i| phone+&arr[i].to_string()));
    }

    我贴个 Rust 的好了
    cocacold
        63
    cocacold  
       2016-06-22 16:08:56 +08:00
    var num = [8,2,1,0,3];
    var index = [2,0,3,2,4,0,1,3,2,3,3];
    var tel = "";
    for(var i in index){tel += num[index[i]];}
    console.log(tel);
    fanTasy
        64
    fanTasy  
       2016-06-22 16:15:46 +08:00
    ([2,0,3,2,4,0,1,3,2,3,3].map(n => { return [8,2,1,0,3][n] })).join('')
    welsonla
        65
    welsonla  
       2016-06-22 16:25:01 +08:00
    @guizer Ruby
    homfen
        66
    homfen  
       2016-06-22 16:26:52 +08:00
    console.log([2,0,3,2,4,0,1,3,2,3,3].reduce((a, b) => a + [8,2,1,0,3][b], ''))
    Ouyangan
        67
    Ouyangan  
       2016-06-22 16:29:03 +08:00
    为何又把我 java 黑了一圈
    easing
        68
    easing  
       2016-06-22 16:44:37 +08:00
    秀优越的无非是用高阶函数替换 foreach 而已,也并不一定比原来 java 的简洁易懂。作为中立方,这里支持 java 一把。
    KDr2
        69
    KDr2  
       2016-06-22 17:34:31 +08:00
    Rscript -e 'c(8,2,1,0,3)[c(2,0,3,2,4,0,1,3,2,3,3)+1]'
    aitaii
        70
    aitaii  
       2016-06-22 17:38:37 +08:00
    lBoleBzoloo
    momo1999
        71
    momo1999  
       2016-06-22 17:46:30 +08:00   1
    print("18013820100")
    人工智能语言,不服不辨
    ihuzhou
        72
    ihuzhou  
       2016-06-22 17:46:57 +08:00
    真是给南京程序员丢人
    zencoding
        73
    zencoding  
       2016-06-22 18:00:53 +08:00   1
    我也恶搞一下
    <?php
    foreach ([2,0,3,2,4,0,1,3,2,3,3] as $i) echo [8,2,1,0,3][$i];
    Dreawer
        74
    Dreawer  
       2016-06-22 18:03:47 +08:00
    ruby 版

    arr = [8, 2, 1, 0 ,3]
    index = [2, 0, 3, 2, 4, 0, 1, 3, 2 ,3 ,3]
    tel = ""
    for i in 0..index.size
    tel += arr[index[i]].to_s
    end
    puts "联系方式:" + tel
    irockytan
        75
    irockytan  
       2016-06-22 18:15:19 +08:00 via iPhone
    贴代码的都是 Mac
    uztyzrxd
        76
    uztyzrxd  
       2016-06-22 18:48:30 +08:00
    不过是展示下各种语言的特性, 谈不上秀优越吧

    @guizer bash?

    arr=(8 2 1 0 3)
    tel=$(eval echo '${arr['{2,0,3,2,4,0,1,3,2,3,3}']}')
    echo "联系方式:" ${tel// }

    这样如何?
    guizer
        77
    guizer  
       2016-06-22 19:16:28 +08:00 via iPhone
    @uztyzrxd 初入行,这种写法有点转不过来
    guizer
        78
    guizer  
       2016-06-22 19:17:57 +08:00 via iPhone
    @welsonla 确定吗,这语言和 java 差不多吗?前面有朋友说是 java ,公司同事也说是 JAVA …
    magicdawn
        79
    magicdawn  
       2016-06-22 19:35:42 +08:00
    Node.js / Javascript 报道

    ![untitled1.png](//dn-cnode.qbox.me/Fgy7ko9yDxbSTdBupixA7hEBvMna)
    magicdawn
        80
    magicdawn  
       2016-06-22 19:36:05 +08:00
    KomeijiSatori
        81
    KomeijiSatori  
       2016-06-22 19:44:42 +08:00
    <?php
    $arr = [8,2,1,0,3];
    $index = [2,0,3,2,4,0,1,3,2,3,3];
    foreach ($index as $i)
    echo $arr[$i];
    nameldk
        82
    nameldk  
       2016-06-22 20:04:26 +08:00
    来个 PHP 版的:
    echo join('', array_map(function($i){return [8,2,1,0,3][$i];}, [2,0,3,2,4,0,1,3,2,3,3]));
    welsonla
        83
    welsonla  
       2016-06-22 20:28:36 +08:00
    @guizer 我是说出租广告下面的第一个代码
    msg7086
        84
    msg7086  
       2016-06-22 20:33:30 +08:00   1
    @Dreawer 这根本不能叫 ruby 。
    Dowding
        85
    Dowding  
       2016-06-22 20:49:04 +08:00
    <?php
    echo implode('', array_map(function ($i) {return [8, 2, 1, 0 ,3][$i];}, [2, 0, 3, 2, 4, 0, 1, 3, 2 ,3 ,3]));
    lululau
        86
    lululau  
       2016-06-22 21:02:16 +08:00
    ```
    (let ((arr '(8 2 1 0 3))
    (idx '(2 0 3 2 4 0 1 3 2 3 3)))
    (--reduce-from (+ (* acc 10) (nth it arr)) 0 idx))
    ```
    chuhemiao
        87
    chuhemiao  
       2016-06-22 21:07:14 +08:00
    @KKKKKK 我错了,刚学 rust 。。。
    guizer
        88
    guizer  
       2016-06-22 21:56:14 +08:00 via iPhone
    @welsonla 我也在说这个…
    zhuangzhuang1988
        89
    zhuangzhuang1988  
       2016-06-22 21:58:31 +08:00
    都闲得蛋疼..
    eoo
        90
    eoo  
       2016-06-22 22:06:52 +08:00 via Android
    echo "18013820100";
    lujiajing1126
        91
    lujiajing1126  
       2016-06-22 22:29:27 +08:00 via iPhone
    第一眼觉得为什么不用 StringBuilder
    Henrybsbhp
        92
    Henrybsbhp  
       2016-06-22 22:34:49 +08:00
    这个可以自己心算然后写出来吧...
    bullettrain1433
        93
    bullettrain1433  
       2016-06-22 22:57:46 +08:00
    都没缩进,好着急
    SonicY
        94
    SonicY  
       2016-06-22 23:19:42 +08:00
    我去楼上诸位的看起来都好复杂
    foreach (@arr[@index]) {
    print $_;
    }
    twl007
        95
    twl007  
       2016-06-22 23:52:36 +08:00 via iPhone
    @SonicY 终于看见 perl 了……
    SonicY
        96
    SonicY  
       2016-06-22 23:58:09 +08:00   1
    @twl007 哈哈其实干脆这样写 print @arr = (8, 2, 1, 0, 3)[2, 0, 3, 2, 4, 0, 1, 3, 2, 3, 3];
    twl007
        97
    twl007  
       2016-06-23 01:11:31 +08:00
    噗 - - 好吧…… perl 果然是自由哎~~
    webjin1
        98
    webjin1  
       2016-06-23 03:14:19 +08:00 via Android
    @SonicY 这是 python?
    araraloren
        99
    araraloren  
       2016-06-23 09:17:14 +08:00
    @webjin1 那是 Perl
    如果改用 Perl6 来写就是这样
    ```perl6

    say ([8, 2, 1, 3, 0][2, 0, 3, 2, 4, 0, 1, 3, 2, 3, 3]).join('');

    ```
    qian0206
        100
    qian0206  
       2016-06-23 10:01:02 +08:00
    @inisun 不觉得 foreach 很累人, JAVA 的开发者都建议使用 foreach ,毕竟不会出现空指针异常
    1  2  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1257 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 17:26 PVG 01:26 LAX 09:26 JFK 12:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86