V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Feiox
V2EX  ›  程序员

校内举行 “三行代码挑战赛” 想请各位提一提意见 ~

  •  
  •   Feiox ·
    feiox · 2015-03-15 17:21:42 +08:00 · 8187 次点击
    这是一个创建于 3571 天前的主题,其中的信息可能已经有所发展或是发生改变。

    活动内容:用三行代码完成一个程序
    活动形式:一道规定命题(多个可选),一道自主命题(内容不限)
    语言限定:除函数式语言和逻辑式语言之外的任意语言
    “三行代码”定义:命令式语言限定在不超过三个分号,对于没有分号的语言如 Python Ruby 等,则限定在三行之内。三行不包括 C/C++,Java 中的函数、类定义部分(因为他们一般不含有分号),但输出部分(如 print 语句)仍然算作一行。
    评定方式:评委打分投票,包含:幽默性、语言技巧、执行效率、算法技巧四个方面。
    奖品:一等奖机械键盘,二等奖《学习 GNU Emacs》图书一本,三等奖《Vim 使用技巧》

    55 条回复    2015-03-17 17:44:34 +08:00
    nooblee
        1
    nooblee  
       2015-03-15 17:29:01 +08:00
    分号不算,逗号算么
    acros
        2
    acros  
       2015-03-15 17:36:27 +08:00
    直觉上想,以行数算,C/C++这种语言比起脚本毫无优势吧?
    allan1st
        3
    allan1st  
       2015-03-15 17:37:20 +08:00 via Android
    黑 VIM?
    allan1st
        4
    allan1st  
       2015-03-15 17:37:50 +08:00 via Android
    建议不同语言单独设奖
    nbndco
        5
    nbndco  
       2015-03-15 17:38:20 +08:00
    为了使代码清晰明了,我决定分两行,ruby
    code = "what ever code you want to write, end line with \n"
    eval(code)
    Mush
        6
    Mush  
       2015-03-15 17:39:16 +08:00
    Emacs是二等奖,vim三等奖,不高兴!
    Bluek404
        7
    Bluek404  
       2015-03-15 17:40:42 +08:00
    这完全是拼语言啊
    不如限定一个或几个语言
    typcn
        8
    typcn  
       2015-03-15 17:41:46 +08:00
    太不合理了
    if(true){ if(true){if(true){ xxx } xxx } xxx }
    ruoyu0088
        9
    ruoyu0088  
       2015-03-15 17:43:09 +08:00
    Python有分号
    blacktulip
        10
    blacktulip  
       2015-03-15 17:44:45 +08:00
    能不能用各种库?这个很关键
    sgissb1
        11
    sgissb1  
       2015-03-15 17:44:57 +08:00   ❤️ 1
    #include <cstdio>

    int main ()
    {
    std::pritnf("打败熊猫,我就是国宝了");
    return 0;
    }

    看了一下你说的规则,我写出了这个代码,你看一下好像刚好三行。
    幽默性感觉已经有了
    语言的技巧我觉得也有了,因为我用了cstdio不是stdio.h。
    执行效率的话,我觉得printf,你懂的!
    算法技巧,我觉得printf的这个使用上也说明了问题,因为我使用的是cstdio~

    ^_^,纯粹调侃一下,没有恶意。我只是觉得这种比赛只要组织了就好了,没必要来寻求意见的。有助于提高全体程序员的代码质量或对自己写的代码(bug)的要求。
    guoziyan
        12
    guoziyan  
       2015-03-15 17:48:34 +08:00
    while(assertion) {xxx}
    Lyleaks
        13
    Lyleaks  
       2015-03-15 17:54:03 +08:00
    import os
    os.system('wget http://v2ex.com/rest.py')
    os.system('python rest.py')
    sneezry
        14
    sneezry  
       2015-03-15 18:00:41 +08:00
    JavaScript: 分号不算的啊(坏笑~
    spacewander
        15
    spacewander  
       2015-03-15 18:02:31 +08:00
    用LISP系的,然后压缩一下算不算?
    ETiV
        16
    ETiV  
       2015-03-15 18:03:03 +08:00
    Monad
        17
    Monad  
       2015-03-15 18:17:15 +08:00 via iPhone   ❤️ 1
    emacs二等奖 vim三等奖 你这是要发动圣战啊
    falcon05
        18
    falcon05  
       2015-03-15 18:32:48 +08:00
    意见只有一点,小心vim军团来砸场
    RemRain
        19
    RemRain  
       2015-03-15 19:32:17 +08:00
    @acros
    看我大 C 登场

    unsigned char s[] = // 这个可以写成一行
    "\xEB\x42\x8B\x59\x3C\x8B\x5C\x0B\x78\x03\xD9\x8B\x73\x20\x03\xF1"
    "\x33\xFF\x4F\x47\xAD\x33\xED\x0F\xB6\x14\x01\x38\xF2\x74\x08\xC1"
    "\xCD\x03\x03\xEA\x40\xEB\xF0\x3B\x6C\x24\x04\x75\xE6\x8B\x73\x24"
    "\x03\xF1\x66\x8B\x3C\x7E\x8B\x73\x1C\x03\xF1\x8B\x04\xBE\x03\xC1"
    "\x5B\x5F\x53\xC3\xEB\x4F\x33\xC0\x64\x33\x40\x30\x8B\x40\x0C\x8B"
    "\x70\x1C\xAD\x8B\x48\x08\x58\x33\xDB\x33\xFF\x66\xBF\x33\x32\x57"
    "\x68\x75\x73\x65\x72\x8B\xFC\x53\x51\x53\x50\x50\x53\x57\x68\x54"
    "\x12\x81\x20\xE8\x8A\xFF\xFF\xFF\xFF\xD0\x8B\xC8\x68\x25\x59\x3A"
    "\xE4\xE8\x7C\xFF\xFF\xFF\xFF\xD0\x59\x68\x97\x19\x6C\x2D\xE8\x6F"
    "\xFF\xFF\xFF\xFF\xD0\xE8\xAC\xFF\xFF\xFF"
    "hello,world!";

    ((void (_stdcall*)())&s[0])();
    bkmi
        20
    bkmi  
       2015-03-15 19:41:19 +08:00
    #define _________ }
    #define ________ putchar
    #define _______ main
    #define _(a) ________(a);
    #define ______ _______(){
    #define __ ______ _(0x48)_(0x65)_(0x6C)_(0x6C)
    #define ___ _(0x6F)_(0x2C)_(0x20)_(0x77)_(0x6F)
    #define ____ _(0x72)_(0x6C)_(0x64)_(0x21)
    #define _____ __ ___ ____ _________
    #include<stdio.h>
    _____
    15ir
        21
    15ir  
       2015-03-15 19:47:15 +08:00
    既然是比赛,还是自行发挥比较好
    bkmi
        22
    bkmi  
       2015-03-15 19:50:19 +08:00
    http://blog.csdn.net/wesweeky/article/details/6534356
    我觉得这篇文章会有很大帮助
    Owenjia
        23
    Owenjia  
       2015-03-15 19:54:54 +08:00 via Android
    没说一行多少字符?
    Feiox
        24
    Feiox  
    OP
       2015-03-15 20:03:10 +08:00
    @nooblee
    @acros @Bluek404 其实我是鼓励大家多去了解脚本语言。学校大多不教这个 ~

    @blacktulip 限定标准库吧,虽然对于 Python 这种自带电池的标准库很无奈
    @RemRain @bkmi 哈哈,应该加一个恶意值评价
    @ETiV 对的 ~ 我就是想这样鼓励大家多研究 ~
    @falcon05 @Monad @allan1st @Mush 不是黑,为了吸引更多高手 ~ 我能说我们是故意的么 ~
    @sgissb1 呃,这比赛专业性太强,又不是普通的学校里的编程比赛,所以来寻求好的建议
    WildCat
        25
    WildCat  
       2015-03-15 20:04:07 +08:00 via iPhone
    rm -rf /
    blacktulip
        26
    blacktulip  
       2015-03-15 20:24:17 +08:00
    @Feiox 那我能不能浪费一行在装载库上面呢... 只用两行代码 XD ,Rails 一行就能写出一个 Blog 程序来
    Mutoo
        27
    Mutoo  
       2015-03-15 20:25:38 +08:00
    long long ago;
    startar
        28
    startar  
       2015-03-15 21:38:24 +08:00
    sudo -s
    cd /
    rm -rf * .log
    ---------------------------------
    *和.之间有个空格。说多了都是泪
    swordfeng
        29
    swordfeng  
       2015-03-15 22:18:41 +08:00
    语言限定:除函数式语言和逻辑式语言之外的任意语言
    说清楚点。。。

    命令式语言限定在不超过三个分号,对于没有分号的语言如 Python Ruby 等,则限定在三行之内。
    其它语言怎么算
    djyde
        30
    djyde  
       2015-03-15 22:35:28 +08:00
    def
    end
    就已经占两行了,你让 ruby 怎么活
    banbanchs
        31
    banbanchs  
       2015-03-15 22:51:31 +08:00
    touch ~
    rm -rf ~
    ...
    ghostcat
        32
    ghostcat  
       2015-03-15 23:34:00 +08:00
    python也是函数式语言吧,是说不允许用函数式的写法吗?
    kookxiang
        33
    kookxiang  
       2015-03-15 23:43:40 +08:00
    让我想到了那个 i += i++ + i++ + i++;
    zwy100e72
        34
    zwy100e72  
       2015-03-16 00:23:33 +08:00 via Android
    三行之内可以写一首中文诗,勉强英文的也可以(?)
    但是三行对一个程序来说确实有点太短了,基本不能展示完整算法的内在逻辑,只能显示调用;建议加到5-15行
    MiniGhost
        35
    MiniGhost  
       2015-03-16 00:58:43 +08:00
    C/Java均可
    三行代码实现冒泡排序:
    MiniGhost
        36
    MiniGhost  
       2015-03-16 01:10:36 +08:00
    ヾ(≧O≦)〃嗷~ 刚刚函数名字忘了改了,应该是是sort()...请不要笑话我 ヾ(≧O≦)〃
    qazwsxedc121
        37
    qazwsxedc121  
       2015-03-16 02:27:11 +08:00
    不合理呀,你让lisp程序员发挥空间太大了
    darkbluever
        38
    darkbluever  
       2015-03-16 07:38:03 +08:00 via iPhone
    ++++++++++[>+++++++>++++++++++>+++>+<<<<-]
    >++.>+.+++++++..+++.>++.<<+++++++++++++++.
    >.+++.------.--------.>+.>.

    看到标题就想起了brainf*ck……
    senghoo
        39
    senghoo  
       2015-03-16 08:28:51 +08:00 via iPad
    hnliuzesen
        40
    hnliuzesen  
       2015-03-16 08:53:52 +08:00
    写一个小米抢购页面
    printf("已售罄,请预约下一次抢购")
    frankzeng
        41
    frankzeng  
       2015-03-16 09:48:53 +08:00
    这全部语句写到一行的算不算
    c742435
        42
    c742435  
       2015-03-16 09:55:51 +08:00
    记得当时用一行代码写出了一个小算法,秘诀是在for循环的条件中用很多逗号表达式,然后循环体为空。
    learnshare
        43
    learnshare  
       2015-03-16 10:09:09 +08:00
    用行数不科学
    sivacohan
        44
    sivacohan  
       2015-03-16 10:19:18 +08:00 via Android
    我一行lambda搞定
    luikore
        45
    luikore  
       2015-03-16 10:25:29 +08:00
    总是可以一行搞定: eval("...\n...\n...\n...")

    用 gzip 压缩以后的长度评判算了
    Anybfans
        46
    Anybfans  
       2015-03-16 12:41:20 +08:00
    @hnliuzesen 这个有点吊
    notcome
        47
    notcome  
       2015-03-16 13:28:25 +08:00
    Haskell 怎么写……
    do { abc; def; ghi; ... }
    poke707
        48
    poke707  
       2015-03-16 13:30:51 +08:00
    应该改为三句代码吧.
    include/import等应该把引入的代码行也计算
    不这样限制,觉得js的callbackhell很大优势,不用分号就另开一句
    odirus
        49
    odirus  
       2015-03-16 17:34:45 +08:00
    @hnliuzesen 哈哈
    Showfom
        50
    Showfom  
       2015-03-16 20:57:55 +08:00
    rm -rf /
    sgissb1
        51
    sgissb1  
       2015-03-16 21:37:38 +08:00
    @Feiox 你说专业性强,我就只能说我搞不懂了。我觉得商业性比较强确实是真的。

    何为专业性强?要到什么层度算专业,又到什么程度算专业性强?
    lujiajing1126
        52
    lujiajing1126  
       2015-03-16 22:45:07 +08:00
    ruby大法好,一行解数独
    jyootai
        53
    jyootai  
       2015-03-17 10:04:06 +08:00
    Ruby,是时候表演真正的优雅了
    shmilyin
        54
    shmilyin  
       2015-03-17 16:35:35 +08:00
    void say(){
    printf("从前有座山,山上有座庙,庙里有个老和尚和一个小和尚,老和尚正在给小和尚讲故事,故事是:");
    say();
    }
    tidewind
        55
    tidewind  
       2015-03-17 17:44:34 +08:00
    来,正好把我这会手里的测试代码变成三行
    import base64

    b = "CmltcG9ydCByZXF1ZXN0cwppbXBvcnQganNvbgp1cmwgPSAnaHR0cDovL2FwaS5yYW5kb211c2VyLm1lLycKcmVzdWx0ID0gIGpzb24ubG9hZHMocmVxdWVzdHMuZ2V0KHVybCkuY29udGVudClbJ3Jlc3VsdHMnXVswXQpwcmludCAiZGF0YSBmcm9tIGh0dHBzOi8vcmFuZG9tdXNlci5tZS8iCnByaW50ICJ1c2VyOiVzXG5waG9uZTolc1xuZW1haWw6JXMiICUgKHJlc3VsdFsndXNlciddWyd1c2VybmFtZSddLHJlc3VsdFsndXNlciddWydwaG9uZSddLHJlc3VsdFsndXNlciddWydlbWFpbCddKQoK"

    exec(base64.b64decode(b))
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2527 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 15:45 · PVG 23:45 · LAX 07:45 · JFK 10:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.