2006-09-04
LLRingのじゃんけん大会で書かれたPythonワンライナー
python |
![]()
発表資料が公開されたのでみてみた。
参考西尾泰和のブログ: Pythonでワンライナーを作成する際のノウハウ集
(ちなみに、Pythonでワンライナーを書くノウハウは「ネタ」なので、先にこれを習得してはいけない)
from sys import argv as a;import socket as o,re,select,os;from random import *;from time import sleep as l;from itertools import count as u,ifilterfalse as f;import HTMLParser;P=r"c:¥Python24¥python.exe";z=bool;len(a)==4 and(a[3]=="S"and[f(z,(re.search("abort",os.popen3(P+" %s G"%" ".join(a[:3]))[2].read())for x in u())).next()]or a[3]=="G"and[(lambda h:f(z,((lambda v:f(z,([v.u(rule)[0]and v.x.has_key(v.v)and v.x[v.v]()for rule in v.rx]and[l(0.01)]and(v.v!="C")for x in u(1))).next()or l(0.1)or True)((lambda x:x.__dict__.__setitem__("__call__",lambda k,v:x.__dict__.__setitem__(k,v))or x("d",x.__dict__)or x("u",lambda(s,c,a):(x.v!=s)and[False]or[c(*a)])or x("recv",lambda:select.select([x.o],[],[],0)[0]and(x("e",x.o.recv(1024))or(len(x.e)==0 and x.t("C"))or x("b",x.b+x.e)))or x("a",lambda m,n:[x.o.send(m%x.d+x.D)]and[x.t(n)]) or x("c", lambda p,n:x.recv()or x("m",re.match(p%x.d+x.D,x.b))or(x.m and(x("b",x.b[x.m.end():])or x.d.update(x.m.groupdict())or x.t(n))))or x("t",lambda n:x("v",n)or True)or x("D","¥r¥n")or x("v","IS")or(lambda C,R,L,M:x("rx",[("E",x.a,("HELLO","A")),("A",x.c,("INITIATE (?P<s>.+)","CI")),("CI",x.a,("INITIATE %(s)s Python 1","I")),("I",x.c,(C,"C")),("CR",x.a,("READY %(s)s %(r)s","R")),("I",x.c,(R,"CR")),("R",x.c,(L,"L")),("R",x.c,(M,"M")),("L",x.a,("MOVE %(s)s %(r)s %(z)s","V")),("V",x.c,("RESULT %(s)s %(r)s (?P<pm>.+)","U")),("U",x.c,(L,"L")),("U",x.c,(M,"M")),("M",x.c,(R,"CR")),("M",x.c,(C,"C")),("IS",x.t,("E",))]))("CLOSE %(s)s","READY %(s)s (?P<r>.+) (?P<it>.+) (?P<ri>.+)","CALL %(s)s %(r)s","MATCH %(s)s %(r)s")or x("y",[1,2,3]*100)or shuffle(x.y)or x("x",{"C":lambda:x.o.close(),"L":lambda:x("z",choice(x.y)),"E":lambda:x("b","")or x("o",o.socket(2,1))or x.o.connect(h)})or x)(HTMLParser.HTMLParser()))for x in u())).next())((a[1],int(a[2])))])or(lambda h:[os.spawnl(1,P,P,a[0],h[0],h[1],"S")for i in range(5)])(len(a)>2 and(a[1],a[2])or("localhost","12346"))
トラックバック - http://subtech.g.hatena.ne.jp/otsune/20060904

険しく長い道になりそうですが、生暖かく見守ってくだされ。