Qlobe.py
こちらに種も仕掛けもないPythonのコードがありまして:
$ cat qlobe.py C="The Qlobe (c)Yusuke Endoh, 2010. Ported to Python by NISHIO Hirokazu, 2012." v=0000;s="""import zlib,struct ,math,sys,re;d=re.sub('\s+|".*' '"',"", '''^Lcf<LK8,_@7gj* "%.#% :::##" LJ=c5nM)Tp1g0%Xv.,S[<>YoP4 ZojjV)O>qIH1/n[|2yE[>:i "##% ::##########" eC97N-A&Kj_K_><wS5rtWk@ *a+Y5yH?b[F^e7C/56j|p "##: ###############" mRe+:)BO98(Zh)'Iof*nm .,$C5Nyt=PPu01Avw^< "# #. .####:#######" IiQ=5$'D-y?g6`YT+qL w9k^ch|K'),tc6ygIL " ##### # :############" 8xI#LNz3v}T=4WlL27 FZ0ij)7TQCI)P7u}R " #######################" T5-iJbbG5P-DHB<.R ,YvZ_rnv6ky-G+4U " ############:#### %#####" '$*are@b4U351Q-u g500x8RR%`Om7VD " .#############:##% .## ." p4M5PFixrPvl&<p []1IJEGgDt8Lm#; " %% .################. #. " bc4zS^y]0`_Pstf UxOC(q/,}.YOIFj ":####: :##############% : " (k&q_VzcaAi?]^l CVYp''');v=([v, "%######. ######### " ][0]-int(((sys) .argv[1:]+[45,[ "##########. #######% " ]])[0]))%360;s; s=('v=%04o;'%v+ "########### :######. " *0+'s=""'+'"'+s +'""'+'";exe'+[ ":#########: .######: . " ][0]*0+'c(s)'); d=[([ord(c)] or " :#######% :###### #: " )[0]for c in d] f=lambda x,y:x*[ " ######% .####% :: " ,90][1]+(y-2)%91 t="%x"%reduce(f,[ " ####% %### " ,d][1],0);e=(zlib .decompress);e=e([ " .###: .#% " ,t.decode('hex')][ 1]);j="".join;e=j(( " %## " *0+"{0:08b}".format (ord(b)))for b in e); " #. " ;s=list(s);z=360;p=(s .__setitem__);q,_,r=[90, " . " ,range];[(lambda w=int( (math.sqrt(1-((y*2.0-21)/( "# :#######" and 22))**2)*23)):[(lambda t=q*x/w+v+q:(lambda u=(e[y*z:( y+1)*z]*2)[t:t+q/w]:p(y*80+120- w+x," .:%#"[4*u.count("0")/len(u)]))()) ()for x in r(w*2-1)])() for y in r(22)] print(("%sC=%r%s"%(chr(10),C,chr(10))))+j(s)+chr(10) #Happy Hacking!""";exec(s)
これを実行しますと真ん中の地球儀が45度回りまして
$ python qlobe.py C='The Qlobe (c)Yusuke Endoh, 2010. Ported to Python by NISHIO Hirokazu, 2012.' v=0473;s="""import zlib,struct ,math,sys,re;d=re.sub('\s+|".*' '"',"", '''^Lcf<LK8,_@7gj* "###:.#: :%" LJ=c5nM)Tp1g0%Xv.,S[<>YoP4 ZojjV)O>qIH1/n[|2yE[>:i "######%#. ..#####" eC97N-A&Kj_K_><wS5rtWk@ *a+Y5yH?b[F^e7C/56j|p ":#####%##. :%#######" mRe+:)BO98(Zh)'Iof*nm .,$C5Nyt=PPu01Avw^< ".######%# .% .: #.###" IiQ=5$'D-y?g6`YT+qL w9k^ch|K'),tc6ygIL "..%#####:. ##### .%%%##" 8xI#LNz3v}T=4WlL27 FZ0ij)7TQCI)P7u}R " :### : . .#:############" T5-iJbbG5P-DHB<.R ,YvZ_rnv6ky-G+4U " %#.. : #%########%####" '$*are@b4U351Q-u g500x8RR%`Om7VD " :.:#.#. #%############.#" p4M5PFixrPvl&<p []1IJEGgDt8Lm#; " %. %: %%%#############." bc4zS^y]0`_Pstf UxOC(q/,}.YOIFj " .::###: % %############# " (k&q_VzcaAi?]^l CVYp''');v=([v, " .%:###%#: %.######## " ][0]-int(((sys) .argv[1:]+[45,[ " .#%#######:.. %.###### % " ]])[0]))%360;s; s=('v=%04o;'%v+ " .#%#######%#. : ###### . " *0+'s=""'+'"'+s +'""'+'";exe'+[ " .::#######::. . ###### : " ][0]*0+'c(s)'); d=[([ord(c)] or " #######:.. ..:#####%: " )[0]for c in d] f=lambda x,y:x*[ " ::%####: . . ###:%# " ,90][1]+(y-2)%91 t="%x"%reduce(f,[ " #.### . :#%# : " ,d][1],0);e=(zlib .decompress);e=e([ " %:#:# :.# " ,t.decode('hex')][ 1]);j="".join;e=j(( " %## " *0+"{0:08b}".format (ord(b)))for b in e); " #. " ;s=list(s);z=360;p=(s .__setitem__);q,_,r=[90, " . " ,range];[(lambda w=int( (math.sqrt(1-((y*2.0-21)/( "###%. :####" and 22))**2)*23)):[(lambda t=q*x/w+v+q:(lambda u=(e[y*z:( y+1)*z]*2)[t:t+q/w]:p(y*80+120- w+x," .:%#"[4*u.count("0")/len(u)]))()) ()for x in r(w*2-1)])() for y in r(22)] print(("%sC=%r%s"%(chr(10),C,chr(10))))+j(s)+chr(10) #Happy Hacking!""";exec(s)
8回実行すると元に戻るわけです。
$ python qlobe.py | python | python | python | python | python | python | python C='The Qlobe (c)Yusuke Endoh, 2010. Ported to Python by NISHIO Hirokazu, 2012.' v=0000;s="""import zlib,struct ,math,sys,re;d=re.sub('\s+|".*' '"',"", '''^Lcf<LK8,_@7gj* ":.#: :%:##" LJ=c5nM)Tp1g0%Xv.,S[<>YoP4 ZojjV)O>qIH1/n[|2yE[>:i "%#% ..:##########" eC97N-A&Kj_K_><wS5rtWk@ *a+Y5yH?b[F^e7C/56j|p "##. :%##############" mRe+:)BO98(Zh)'Iof*nm .,$C5Nyt=PPu01Avw^< "# .% .: #.###%#######" IiQ=5$'D-y?g6`YT+qL w9k^ch|K'),tc6ygIL ". ##### .%%%###########" 8xI#LNz3v}T=4WlL27 FZ0ij)7TQCI)P7u}R " . %.######################" T5-iJbbG5P-DHB<.R ,YvZ_rnv6ky-G+4U " #%########%#####:# :###%#" '$*are@b4U351Q-u g500x8RR%`Om7VD " :#%###########:%#: . #. # ." p4M5PFixrPvl&<p []1IJEGgDt8Lm#; " %: %%%#############.# .: : " bc4zS^y]0`_Pstf UxOC(q/,}.YOIFj "::###: % %############# % : ." (k&q_VzcaAi?]^l CVYp''');v=([v, "%:###%#: %.######## ." ][0]-int(((sys) .argv[1:]+[45,[ "#%#######:.. %.###### % ." ]])[0]))%360;s; s=('v=%04o;'%v+ "#%#######%#. : ###### . " *0+'s=""'+'"'+s +'""'+'";exe'+[ "::#######::. . ###### : . " ][0]*0+'c(s)'); d=[([ord(c)] or " :####### % : ###### ::: " )[0]for c in d] f=lambda x,y:x*[ " ::%####: . . ###:%# : " ,90][1]+(y-2)%91 t="%x"%reduce(f,[ " ::###: . #%#:: " ,d][1],0);e=(zlib .decompress);e=e([ " %:#:# :.# " ,t.decode('hex')][ 1]);j="".join;e=j(( " %## " *0+"{0:08b}".format (ord(b)))for b in e); " #. " ;s=list(s);z=360;p=(s .__setitem__);q,_,r=[90, " : " ,range];[(lambda w=int( (math.sqrt(1-((y*2.0-21)/( "%. :#######" and 22))**2)*23)):[(lambda t=q*x/w+v+q:(lambda u=(e[y*z:( y+1)*z]*2)[t:t+q/w]:p(y*80+120- w+x," .:%#"[4*u.count("0")/len(u)]))()) ()for x in r(w*2-1)])() for y in r(22)] print(("%sC=%r%s"%(chr(10),C,chr(10))))+j(s)+chr(10) #Happy Hacking!""";exec(s)
というわけで、The Qlobe - まめめもをPythonに移植したのでご報告しました。
まとめ