好的,我去学习高尔夫球语言。
CJam,140个字节,3314个冲突词
00000000: 7b5f 3162 225e d466 4a55 a05e 9f47 fc51 {_1b"^.fJU.^.G.Q
00000010: c45b 4965 3073 72dd e1b4 d887 a4ac bcbd .[Ie0sr.........
00000020: 9c8f 70ca 2981 b2df 745a 10d0 dfca 6cff ..p.)...tZ....l.
00000030: 7a3b 64df e730 54b4 b068 8584 5f6c 9f6b z;d..0T..h.._l.k
00000040: b7f8 7a1f a2d3 b2b8 bcf5 cfa6 1ef7 a55c ..z............\
00000050: dca8 795c 2492 dc32 1fb6 f449 f9ca f6b7 ..y\$..2...I....
00000060: a2cf 4772 266e ad4f d90c d236 b51d c5d5 ..Gr&n.O...6....
00000070: 5c46 3f9b 7cb4 f195 4efc fe4a ce8d 9aee \F?.|...N..J....
00000080: 9dbc 223d 6962 3443 2329 257d .."=ib4C#)%}
定义一个块(匿名函数)。为了进行测试,您可以添加qN%%N*N
在stdin上获取以换行符分隔的单词列表,并在stdout上编写以换行符分隔的哈希值列表。等效的Python代码:
b=lambda s,a:reduce(lambda n,c:n*a+ord(c),s,0)
f=lambda s:b(s,ord('^\xd4fJU\xa0^\x9fG\xfcQ\xc4[Ie0sr\xdd\xe1\xb4\xd8\x87\xa4\xac\xbc\xbd\x9c\x8fp\xca)\x81\xb2\xdftZ\x10\xd0\xdf\xcal\xffz;d\xdf\xe70T\xb4\xb0h\x85\x84_l\x9fk\xb7\xf8z\x1f\xa2\xd3\xb2\xb8\xbc\xf5\xcf\xa6\x1e\xf7\xa5\\\xdc\xa8y\\$\x92\xdc2\x1f\xb6\xf4I\xf9\xca\xf6\xb7\xa2\xcfGr&n\xadO\xd9\x0c\xd26\xb5\x1d\xc5\xd5\\F?\x9b|\xb4\xf1\x95N\xfc\xfeJ\xce\x8d\x9a\xee\x9d\xbc'[b(s,1)%125]))%(8**8+1)
Pyth,140个字节,3535 3396个冲突单词
00000000: 4c25 4362 2d68 5e38 2038 2a36 3643 4022 L%Cb-h^8 8*66C@"
00000010: aa07 f29a 27a7 133a 3901 484d 3f9b 1982 ....'..:9.HM?...
00000020: d261 79ab adab 9d92 888c 3012 a280 76cf .ay.......0...v.
00000030: a2e5 8f81 7039 acee c42e bc18 28d8 efbf ....p9......(...
00000040: 0ebe 2910 9c90 158e 3742 71b4 bdf5 59c2 ..).....7Bq...Y.
00000050: f90b e291 8673 ea59 6975 10be e750 84c8 .....s.Yiu...P..
00000060: 0b0f e7e8 f591 f628 cefa 1ab3 2e3c 72a3 .......(.....<r.
00000070: 7f09 6190 dbd2 d54e d6d0 d391 a780 ebb6 ..a....N........
00000080: ae86 2d1e 49b0 552e 7522 4362 ..-.I.U.u"Cb
定义名为的函数y
。为了进行测试,您可以添加jmyd.z
在stdin上获取以换行符分隔的单词列表,并在stdout上编写以换行符分隔的哈希值列表。等效的Python代码:
b=lambda s,a:reduce(lambda n,c:n*a+ord(c),s,0)
f=lambda s:b(s,256)%(8**8+1-66*ord("\xaa\x07\xf2\x9a'\xa7\x13:9\x01HM?\x9b\x19\x82\xd2ay\xab\xad\xab\x9d\x92\x88\x8c0\x12\xa2\x80v\xcf\xa2\xe5\x8f\x81p9\xac\xee\xc4.\xbc\x18(\xd8\xef\xbf\x0e\xbe)\x10\x9c\x90\x15\x8e7Bq\xb4\xbd\xf5Y\xc2\xf9\x0b\xe2\x91\x86s\xeaYiu\x10\xbe\xe7P\x84\xc8\x0b\x0f\xe7\xe8\xf5\x91\xf6(\xce\xfa\x1a\xb3.<r\xa3\x7f\ta\x90\xdb\xd2\xd5N\xd6\xd0\xd3\x91\xa7\x80\xeb\xb6\xae\x86-\x1eI\xb0U.u"[b(s,256)%121]))
理论极限
我们期望做得如何?这是x(冲突单词的数量)与y(获得最多x个冲突单词所需的熵,以字节为单位)的关系图。例如,点(2835,140)告诉我们,随机函数最多可以以1/256 ** 140的概率获得2835个碰撞词,因此我们不可能比140更好地做得更好代码字节。
Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch's
?什么...