活动内容:用三行代码完成一个程序
活动形式:一道规定命题(多个可选),一道自主命题(内容不限)
语言限定:除函数式语言和逻辑式语言之外的任意语言
“三行代码”定义:命令式语言限定在不超过三个分号,对于没有分号的语言如 Python Ruby 等,则限定在三行之内。三行不包括 C/C++,Java 中的函数、类定义部分(因为他们一般不含有分号),但输出部分(如 print 语句)仍然算作一行。
评定方式:评委打分投票,包含:幽默性、语言技巧、执行效率、算法技巧四个方面。
奖品:一等奖机械键盘,二等奖《学习 GNU Emacs》图书一本,三等奖《Vim 使用技巧》
1
nooblee 2015-03-15 17:29:01 +08:00
分号不算,逗号算么
|
2
acros 2015-03-15 17:36:27 +08:00
直觉上想,以行数算,C/C++这种语言比起脚本毫无优势吧?
|
3
allan1st 2015-03-15 17:37:20 +08:00 via Android
黑 VIM?
|
4
allan1st 2015-03-15 17:37:50 +08:00 via Android
建议不同语言单独设奖
|
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) |
6
Mush 2015-03-15 17:39:16 +08:00
Emacs是二等奖,vim三等奖,不高兴!
|
7
Bluek404 2015-03-15 17:40:42 +08:00
这完全是拼语言啊
不如限定一个或几个语言 |
8
typcn 2015-03-15 17:41:46 +08:00
太不合理了
if(true){ if(true){if(true){ xxx } xxx } xxx } |
9
ruoyu0088 2015-03-15 17:43:09 +08:00
Python有分号
|
10
blacktulip 2015-03-15 17:44:45 +08:00
能不能用各种库?这个很关键
|
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)的要求。 |
12
guoziyan 2015-03-15 17:48:34 +08:00
while(assertion) {xxx}
|
13
Lyleaks 2015-03-15 17:54:03 +08:00
|
14
sneezry 2015-03-15 18:00:41 +08:00
JavaScript: 分号不算的啊(坏笑~
|
15
spacewander 2015-03-15 18:02:31 +08:00
用LISP系的,然后压缩一下算不算?
|
16
ETiV 2015-03-15 18:03:03 +08:00
http://code.activestate.com/recipes/66473-just-for-fun-quicksort-in-3-lines/
python: Just For Fun: Quicksort in 3 Lines |
17
Monad 2015-03-15 18:17:15 +08:00 via iPhone 1
emacs二等奖 vim三等奖 你这是要发动圣战啊
|
18
falcon05 2015-03-15 18:32:48 +08:00
意见只有一点,小心vim军团来砸场
|
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])(); |
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> _____ |
21
15ir 2015-03-15 19:47:15 +08:00
既然是比赛,还是自行发挥比较好
|
22
bkmi 2015-03-15 19:50:19 +08:00
|
23
Owenjia 2015-03-15 19:54:54 +08:00 via Android
没说一行多少字符?
|
24
Feiox OP |
25
WildCat 2015-03-15 20:04:07 +08:00 via iPhone
rm -rf /
|
26
blacktulip 2015-03-15 20:24:17 +08:00
@Feiox 那我能不能浪费一行在装载库上面呢... 只用两行代码 XD ,Rails 一行就能写出一个 Blog 程序来
|
27
Mutoo 2015-03-15 20:25:38 +08:00
long long ago;
|
28
startar 2015-03-15 21:38:24 +08:00
sudo -s
cd / rm -rf * .log --------------------------------- *和.之间有个空格。说多了都是泪 |
29
swordfeng 2015-03-15 22:18:41 +08:00
语言限定:除函数式语言和逻辑式语言之外的任意语言
说清楚点。。。 命令式语言限定在不超过三个分号,对于没有分号的语言如 Python Ruby 等,则限定在三行之内。 其它语言怎么算 |
30
djyde 2015-03-15 22:35:28 +08:00
def
end 就已经占两行了,你让 ruby 怎么活 |
31
banbanchs 2015-03-15 22:51:31 +08:00
touch ~
rm -rf ~ ... |
32
ghostcat 2015-03-15 23:34:00 +08:00
python也是函数式语言吧,是说不允许用函数式的写法吗?
|
33
kookxiang 2015-03-15 23:43:40 +08:00
让我想到了那个 i += i++ + i++ + i++;
|
34
zwy100e72 2015-03-16 00:23:33 +08:00 via Android
三行之内可以写一首中文诗,勉强英文的也可以(?)
但是三行对一个程序来说确实有点太短了,基本不能展示完整算法的内在逻辑,只能显示调用;建议加到5-15行 |
35
MiniGhost 2015-03-16 00:58:43 +08:00
C/Java均可
三行代码实现冒泡排序: |
36
MiniGhost 2015-03-16 01:10:36 +08:00
ヾ(≧O≦)〃嗷~ 刚刚函数名字忘了改了,应该是是sort()...请不要笑话我 ヾ(≧O≦)〃
|
37
qazwsxedc121 2015-03-16 02:27:11 +08:00
不合理呀,你让lisp程序员发挥空间太大了
|
38
darkbluever 2015-03-16 07:38:03 +08:00 via iPhone
++++++++++[>+++++++>++++++++++>+++>+<<<<-]
>++.>+.+++++++..+++.>++.<<+++++++++++++++. >.+++.------.--------.>+.>. 看到标题就想起了brainf*ck…… |
39
senghoo 2015-03-16 08:28:51 +08:00 via iPad
@qazwsxedc121 +1
|
40
hnliuzesen 2015-03-16 08:53:52 +08:00
写一个小米抢购页面
printf("已售罄,请预约下一次抢购") |
41
frankzeng 2015-03-16 09:48:53 +08:00
这全部语句写到一行的算不算
|
42
c742435 2015-03-16 09:55:51 +08:00
记得当时用一行代码写出了一个小算法,秘诀是在for循环的条件中用很多逗号表达式,然后循环体为空。
|
43
learnshare 2015-03-16 10:09:09 +08:00
用行数不科学
|
44
sivacohan 2015-03-16 10:19:18 +08:00 via Android
我一行lambda搞定
|
45
luikore 2015-03-16 10:25:29 +08:00
总是可以一行搞定: eval("...\n...\n...\n...")
用 gzip 压缩以后的长度评判算了 |
46
Anybfans 2015-03-16 12:41:20 +08:00
@hnliuzesen 这个有点吊
|
47
notcome 2015-03-16 13:28:25 +08:00
Haskell 怎么写……
do { abc; def; ghi; ... } |
48
poke707 2015-03-16 13:30:51 +08:00
应该改为三句代码吧.
include/import等应该把引入的代码行也计算 不这样限制,觉得js的callbackhell很大优势,不用分号就另开一句 |
49
odirus 2015-03-16 17:34:45 +08:00
@hnliuzesen 哈哈
|
50
Showfom 2015-03-16 20:57:55 +08:00
rm -rf /
|
51
sgissb1 2015-03-16 21:37:38 +08:00
|
52
lujiajing1126 2015-03-16 22:45:07 +08:00
ruby大法好,一行解数独
|
53
jyootai 2015-03-17 10:04:06 +08:00
Ruby,是时候表演真正的优雅了
|
54
shmilyin 2015-03-17 16:35:35 +08:00
void say(){
printf("从前有座山,山上有座庙,庙里有个老和尚和一个小和尚,老和尚正在给小和尚讲故事,故事是:"); say(); } |
55
tidewind 2015-03-17 17:44:34 +08:00
来,正好把我这会手里的测试代码变成三行
import base64 b = "CmltcG9ydCByZXF1ZXN0cwppbXBvcnQganNvbgp1cmwgPSAnaHR0cDovL2FwaS5yYW5kb211c2VyLm1lLycKcmVzdWx0ID0gIGpzb24ubG9hZHMocmVxdWVzdHMuZ2V0KHVybCkuY29udGVudClbJ3Jlc3VsdHMnXVswXQpwcmludCAiZGF0YSBmcm9tIGh0dHBzOi8vcmFuZG9tdXNlci5tZS8iCnByaW50ICJ1c2VyOiVzXG5waG9uZTolc1xuZW1haWw6JXMiICUgKHJlc3VsdFsndXNlciddWyd1c2VybmFtZSddLHJlc3VsdFsndXNlciddWydwaG9uZSddLHJlc3VsdFsndXNlciddWydlbWFpbCddKQoK" exec(base64.b64decode(b)) |