Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TRICK 2022 Results

Yusuke Endoh
September 08, 2022

TRICK 2022 Results

Yusuke Endoh

September 08, 2022
Tweet

More Decks by Yusuke Endoh

Other Decks in Programming

Transcript

  1. TRICK 2022 "Returns" ― contest results TRICK judges: eto, shinh,

    yhara, matz, leonid, flagitious, mame Transcendental Ruby Imbroglio Contest for RubyKaigi
  2. TRICK-2022-opening.rb eval(s=%w{extend(Math);t="-7AA2I:>4E;D0+C>D?7EE8I 56D=@ADI?:D;9C,FI@<ECFB>I%@GDCCBEBDFHFFEEIIHHG3@?HE<4 ABG3@-@3./1151=B/?H.&'9?D@&'9@88=B/@881513./=A4ABGG>E(((' 3,,,>===A).A2<DI)E@<2&)6%E*E6E%*0=*-3EI$>7D4$G";s="eval(s=%w{ #{s}}*'')"+"#"*999;h="¥s"*108+(-5..17).map{s.slice!(0,69-_1.abs*4 ).center(108)}*o="";(?$..?F).map{t=t[2..].gsub(_1,t[0,2])};g=(1..8).m ap{[cos(a=Math::PI*k=_1/4.0)*k/6,k*sin(a)/3,k/2]};581.times{|i|f= [x=y=0]*2592;t.bytes{|c|x+=c<72?(y+=1;-x):1.upto(c<73?17:0){q =x+w=_1%6-2;f[(y+v=_1/7-1)*54+q]+=1/(hypot(w*2,v)*(i-400)

    +1)}};2592.times{|j|u=8;g.map{u+=sin(j%108*_1-j/108*_ 2+i*_3)/(_3+0.1)};v,w,x,y=[u/15,(j%108+i*6)/4e2-1 ,f[j/2],i/2e2-1].map{_1.clamp(0,1)};c=((v*w*( 1-y)+x*y**3)*15).round;z=->c{c<6?16+c*36: c<11?166+c*6:216+c};o<<"¥e[48;5;#{z[c ]}m¥e[38;5;#{z[i<250?15-(15-c)*i/ 250:i<400?c:(c*(580-i)+(5+j/1 08*5/12)*(i-400))/180]}m" +h[j];j%108>106&&o<<" ¥e[0m¥n"};$><<o;o ="¥e[A"*24;sl eep(0.02) }}*'' )
  3. Transcendental Ruby Imbroglio Contest for RubyKaigi What’s “TRICK” • A

    contest for esoteric Ruby programming – The "most esoteric" Ruby program wins Transcendental /ˌtransɛnˈdɛnt(ə)l/ “relating to a spiritual realm” * 「霊的領域に関する」 「世俗を超越した」「超絶技巧」 Imbroglio /ɪmˈbrəʊlɪəʊ/ “an extremely confused, complicated, or embarrassing situation” * 「極めて混乱した、恥ずかしい事態」 * Oxford Dictionaries
  4. This talk • TRICK 2022 (2021/09/09 – 2022/07/31) – 1st:

    TRICK 2013 – 2nd: TRICK 2015 – 3rd: TRICK 2018 FINAL – 4th: TRICK 2022 Returns • This talk announces the winners of TRICK 2022
  5. TRICK 2022 Judges Yusuke Endoh (@mametter) Koichiro Eto (@eto) Shinichiro

    Hamaji (@shinh) Yutaka Hara (@yhara) Yukihiro Matsumoto (@yukihiro_matz) Sun Park (@sunleonid) Darren Smith
  6. TRICK 2022 Judges eto – Media Artist. – Senior Researcher

    at AIST. shinh – The admin of anarchy golf. – IOCCC winner. yhara – The author of Japanese esolang book. matz – The creator of Ruby. leonid – The 1st super Ruby golfer. flagitious – The author of GolfScript. – Yet another super Ruby golfer. – Full-time Ruby committer at Cookpad. – The world’s No.1 IOCCC player. mame
  7. Submission statistics / Judging process • Submission statistics – Thank

    you for all the submitters! • Judging process – Each judge gives each entry a score of 1..10 – Any information about the authors is not read • Awards – Three medals – Seven judges' awards JP US DE UK
  8. CAUTION • This talk has a lot of spoilers! –

    Get out here if you want to enjoy analyzing the winners • The winning entries will be published at: No k! http://github.com/tric /trick2022/
  9. Winner » eto shinh yhara matz leonid flagitious mame score

    “Most calculating” 『最も計算高いで賞』 SAITOH Jinroq mame award 6 3 2 6 3 4 7 4.43
  10. jimlock.rb mame award “Most calculating” puts( { 2*0-2-2 => 2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2,

    2/2+0*2 => 2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2+2+2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0, 2+2/2+0 => 2*2*2+0+2-2/2+0+2*2*2+0+2*2*2+0-2+2+2+0+2*2*2+0+2+2+2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2, 0*2+2*2 => 0+2*2*2+0+2+2+2+0+2+2+2+0+2+2+2+0+2+2+2+0+2+2+2+0+2+2+2+0+2+2+2+0+2*2*2+0+2*2*2+0+2/2, 2*0*2*2 => 2+0+2*2*2+0+2*2*2+0+2*2+2+0+2-2/2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2, 2/2+0-2 => 2*2+0+2*2*2+0+2*2*2+0+2*2*2+0-2-2-2+0-2-2-2+0+2+2+2+0+2+2+2+0+2*2*2+0+2*2*2+0+2+2+2+0, 2*2*2+0 => 2*2*2+0-2*2*2+0+2-2*2+0+2*2*2+0-2-2-2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2, 0<2|2-2 => 0+2+2+2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0-2*2*2+0-2*2*2+0+2*2, 2<0|2-2 => 2+0-2*2*2+0-2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2*2*2+0+2+2+2+0+2, }.map { _2.chr }.join) 2*0-2-2 => 2+0+2*2 * 2+0+2*2 * 2+0+2*2*… map { _ 2.chr } +2+0+2,
  11. jimlock.rb • Judges' comments – mame: I like this kind

    of piece that would never have been written except for TRICK. – eto: Simple and nice. mame award “Most calculating”
  12. Winner » eto shinh yhara matz leonid flagitious mame score

    “Most playable” 『最も遊べるで賞』 Don Yang yhara award 7 4 7 6 4 7.5 5 5.79
  13. omoikane.rb yhara award “Most playable” require'zlib';eval(Zlib::Inflate.inflate((%w$eF6VVdtym0gQfZ+vwKOSFoFAIPkiO245sp 2K8+B1lZ2KU4XZLIaRhCUBAiQ0F uTbtwd0201elgeY6enu6cvpQ 8zmC z9m1A/bbhgk4ZRRcguWZb

    Q00 27 hR7zNloFvrfwcmTaJ4R Es+ s IsY0ZtldZaf4x/yEy u Tdik5g3bTY+1/5aH z a Fee6N64jqB3Nb1d lO fO dE6X+XCsrZe6WHs aSfFB 1xapi12xYwW6K4 mSZYtNz9 +fHio179/V9VD J+QJqDOfzzn3Yv zyYSLeXowbXOOGsxg3fJTgRshxPSzXbsT5K9qxGMUoQxXOUj5a8 Lcln0R8vOQ+vjP ur/g05bMFd2PO3YRzBwOIpn4qt/k+ixUApdKVFEsXUgwr/ZWn LKkOef5oce38zC4 USgsStebw5UHf1FfP/CDx3xnxh1J0aXbyfH7ZPSdR7AepR DdKUhqGUjJzptOXg BK28lPCAm+rJGEBrzonU6pEypw8g/RTm7c75A4irUNc MEkIY7Bs8goj6BAHe mQIDI5MEsHg8fM3y7D1NPwxJPcQ9cHQTczCbEeY h6F3iO+DlcAMApiC68 IbTMCwlR6501N/xpJ1nuWhigg5sVUr6xuNR nZ5pwkXp+jgxFbkZ63TV PHYLkhozeEG7tod24rguX1sw7mQ2daz FtkY1jscEzYErS+vWry5xj Df66ftrnpGLEUzdR1hEcWht3BTeS to6liUq3WORc19CC2uoruVGtk ffIBhjjI4LUiBDlAdQzn0gJI7 lDT1ZLwYDrEVVStbPBfNkLk2R++v Sd9sNGIn8C6xNI0GG+ouXl lGiMFzvM2GIXlXsc6iJwWJRQZrkgGVau ukoGSJK4qFUDraqZbpot tNcUPQN8ozqa7V1uK0tzktElqntXVQSO7Y8b Hj2INledIKFExh5gd o+GgF/R4WWl7qi8h1Enb0wTxuYtXNrq0ucVZ9HMZ qKnHrtyoP9iFyys m7U81i8BJT9cm aKR3V0c7QvLQ0Z7V1Vp QuXgKhEe7QvkX2 k8XRxq2gr dADXSqgWhA/ha/jmDm eHrAMqzL2Ec6 xyBt1q e4HHlvJGTx9vf3ypz 5iqTtuYk5HJ uYh00 F2ndx4t85Or5nnvSZ iG6u3RGhaG Wg/ 3+o9G5bkDbIytaoJl T/mjkMB9Lh qG kkxGETtxUUQZrtQ0N es3/ldSWr r J8vRTNXF/Hbya0pc 9y8cJHER2 k 6O4 I14cIuxYEATDGiCA dko8jARh L fqIZ8h4v Fr2LbIC83NEgFe /6TR8C7P c TSzbXC6k8pGs /S+DVusDyNHy1 RL08t7kk w Zi3BODQxnmjDh IyVjFVKcSBwJ DKOcL5w u 0yApzqkPY2tcAg GnUJz6ZXC+CA 1M8786x 7 /qdMpkX0WCIjnY ZgdlemVWR3Ba fgFcnN1 EF ZeLKte7/XLhAHh kJiZGSAG6JB CbKVjTV oDw dlbCqKMoVoB/m V4JeMU0jKq/I k9HOECT AH4j FIIR2u9yPycLFHf 3jPX/2cBatLbD DqcteaV FFTd0 83xPFN3WITsgqzoTJh9rWUVShO U5lBQphx ZypKA9E 7lDPTskkgVsuUZwCkMIG WKkK1gXe0 iIhHe97e7 khyi+qVBc rp+1XnFTTq eEz+fB/Sfp 4dunR7GhLVp OrHKDf/Ijc1/P ffkEKjZ4wlpU2 OiPCGYJuBn7w3SX wWmljEeVctneGbb pEMy/UFAxoGq6r3gl5 cX1JvqV0iluxDRubqk oZ6M0EMRD1a0nnM/tFeWE pvpbiHy5vd4B7DJxFMD2kx HQ2zCVmJOymIpopwKg4CDDHO /Rsk/ZUeRMMfSuhu1BKkr6PsJS 9dtdgU4FAYvHXfzfCcc314MnamX2h pD+nTKSZPnPHr8EAyTHC2nDttU9wlvbKeo bNn1yw5jtVJItId87q51wuvlVbI4+x463txhtLeghLabxgpF/ABGuDRE=$*'').unpack('m')[0]))
  14. omoikane.rb • Snake game – Game over if you hit

    an obstacle or your own body – The snake grows longer if it eats food • Originality – The snake can toggle between black and white – The snake can eat an item of his color – Inspired by Ikaruga(斑鳩) • A famous shooter video game with this scoring rule • It does not use curses but io/console yhara award “Most playable”
  15. omoikane.rb • Judges' comments – yhara: At first it looked

    just like a simple snake game but actually it has some tweaks and many features to make the game enjoyable. – shinh: It was a snake, not Python. yhara award “Most playable”
  16. Winner » eto shinh yhara matz leonid flagitious mame score

    “Most likely to be required” 『最も必要となりそうで賞』 Yutaka HARA flagitious award 7 3 N/A 6 5 8 6 5.83
  17. yhara.rb flagitious award “Most likely to be required” ︙ using

    Kumimoji a = 1.㌢㍍ b = 10.㍉㍍ p a == b #=> true puts a + b #=> 0.02㍍ ㌢㍍ ㍉㍍ Japanese "kumimoji" (composite characters) centi meter milli meter
  18. yhara.rb • A DSL using "kumimoji" (composite characters) – like

    100.days of ActiveSupport flagitious award “Most likely to be required” ︙ a = 1.㌋ b = 1.㍄ printf "1㌋ ≒ %f㍄¥n", a/b #=> 1㌋ ≒ 1.150779㍄ nautical mile mile
  19. yhara.rb • Dare not obfuscate, but cleanly implement with meta-programming

    • Attention to detail flagitious award “Most likely to be required” %w( 1 ㌅ = 2.54 ㌢㍍ 1 ㌳ = 30.48 ㌢㍍ ... ).each_slice(5) do |_, name, _, amount, unit| define_method name do amount.to_r.send(unit) end end alias ㌖ ㌔㍍ meter kilo kilometer (in a character)
  20. yhara.rb • Judges' comments – flagitious: I'd like to encourage

    non-obfuscated entries in the future that none the less become confusing for high complexity or other oddities. And I thought it was well done. – eto: Practical, even! Attempting to use Unicode characters in a practical way is fun, just like APL. – shinh: Is this just normal code? – yhara (camouflage comment): It's interesting that 1 Kairi is so close to 1 Mile flagitious award “Most likely to be required”
  21. Winner » eto shinh yhara matz leonid flagitious mame score

    “Most reactive and diffusive” 『最も反応的かつ拡散的で賞』 Sergey Kruk (lonelyelk) matz award 9 6 5 8 7 7 6 6.86
  22. lonelyelk.rb matz award “Most reactive and diffusive” $q=%w[$w&&!$s&&exit;W=130;H=80;HS=40;puts(q="$q=%w[#$q].join;at_exit{eval($q)}".chars.each_slice(W).map(&:join).join("¥n"));$s&&$w &&(puts('$w="'+$w+?"+";at_exit{$s=#$s}¥n#{q}")||exit);srand($s||=Random.new_seed);f=0.03+0.03*rand;k=0.057+0.006*rand;g=32.chr+".: -=+*#%@";mc=800+400*rand;spt=(1..(3+5*rand)).map{{x:(W*rand).floor,y:(H*rand).floor,r2:(10+10*rand)**2}};z=(0...H).map{|y|(0...W).

    map{|x|{a:1.0,b:spt.any?{|s|s[:r2]>=(x-s[:x])**2+(y-s[:y])**2}&&1.0||0.0}}};n=(1..H).map{(1..W).to_a};$l=->(v,x,y,s){(l=x-1)<0&&l= W-1;(r=x+1)>=W&&r=0;(t=y-1)<0&&t=H-1;(b=y+1)>=H&&b=0;0.2*(v[y][r][s]+v[y][l][s]+v[t][x][s]+v[b][x][s])+0.05*(v[t][r][s]+v[t][l][s] +v[b][r][s]+v[b][l][s])-v[y][x][s]};print('$w="');pc=4;mc.to_i.times{|c|(0...W).map{|x|(0...H).map{|y|la=$l.call(z,x,y,:a);lb=$l.c all(z,x,y,:b);a=z[y][x][:a];b=z[y][x][:b];n[y][x]={a:(a+1.0*la-a*b*b+f*(1-a)).clamp(0,1),b:(b+0.5*lb+a*b*b-(k+f)*b).clamp(0,1)}}}; z,n=[n,z];((c+=1)/mc*W).floor>pc&&(pc+=1)&&print(?.)};puts(?.*(W-pc));dmi,dma=z.map{|l|l.map{|v|v[:a]-v[:b]}.minmax}.flatten.minma x;z.each_slice(H/HS){|l|W.times{|x|sum=l.inject(0.0){|a,l|l[x,1].inject(a){|s,v|s+((v[:a]-v[:b]-dmi)/dma)}};print(g.chars[(sum*W*H S*g.size/(W*H)).clamp(0,g.size-1).floor])};puts};ft=?"+";at_exit{$s=#$s}";puts(?.*(W-ft.size)+ft+10.chr+q)].join;at_exit{eval($q)}
  23. lonelyelk.rb matz award “Most reactive and diffusive” $q=%w[$w&&!$s&&exit;W=130;H=80;HS=40;puts(q="$q=%w[#$q].join;at_exit{eval($q)}".chars.each_slice(W).map(&:join).join("¥n"));$s&&$w &&(puts('$w="'+$w+?"+";at_exit{$s=#$s}¥n#{q}")||exit);srand($s||=Random.new_seed);f=0.03+0.03*rand;k=0.057+0.006*rand;g=32.chr+".: -=+*#%@";mc=800+400*rand;spt=(1..(3+5*rand)).map{{x:(W*rand).floor,y:(H*rand).floor,r2:(10+10*rand)**2}};z=(0...H).map{|y|(0...W).

    map{|x|{a:1.0,b:spt.any?{|s|s[:r2]>=(x-s[:x])**2+(y-s[:y])**2}&&1.0||0.0}}};n=(1..H).map{(1..W).to_a};$l=->(v,x,y,s){(l=x-1)<0&&l= W-1;(r=x+1)>=W&&r=0;(t=y-1)<0&&t=H-1;(b=y+1)>=H&&b=0;0.2*(v[y][r][s]+v[y][l][s]+v[t][x][s]+v[b][x][s])+0.05*(v[t][r][s]+v[t][l][s] +v[b][r][s]+v[b][l][s])-v[y][x][s]};print('$w="');pc=4;mc.to_i.times{|c|(0...W).map{|x|(0...H).map{|y|la=$l.call(z,x,y,:a);lb=$l.c all(z,x,y,:b);a=z[y][x][:a];b=z[y][x][:b];n[y][x]={a:(a+1.0*la-a*b*b+f*(1-a)).clamp(0,1),b:(b+0.5*lb+a*b*b-(k+f)*b).clamp(0,1)}}}; z,n=[n,z];((c+=1)/mc*W).floor>pc&&(pc+=1)&&print(?.)};puts(?.*(W-pc));dmi,dma=z.map{|l|l.map{|v|v[:a]-v[:b]}.minmax}.flatten.minma x;z.each_slice(H/HS){|l|W.times{|x|sum=l.inject(0.0){|a,l|l[x,1].inject(a){|s,v|s+((v[:a]-v[:b]-dmi)/dma)}};print(g.chars[(sum*W*H S*g.size/(W*H)).clamp(0,g.size-1).floor])};puts};ft=?"+";at_exit{$s=#$s}";puts(?.*(W-ft.size)+ft+10.chr+q)].join;at_exit{eval($q)} $w=".............................................................................................................................. %@@@%#*+-:. .:-+*#%%%#*+=:.. .-+*%@@@@@@@@@%%%%%%%%###*+=====+****+=:.. ..:-=+*#%@@@@@@@%#*+=::.... ..-=*##%%%#*+-:.....:-+*# #%%@@%#*+-:. ..:-=++*++=-:... ..:=*#%@@@@@@%##********++=--:....:-=+++=-:. ..:-=+*##%%%%##*=-:...........:-=+***+=--:......:-=+ =*#%%%%#*=-:. ...::---:::......:=+#%@@@@%#*+=-::::-----:::.. .:=+**+=-:. ...:--=+++++=-:......::::....::-----::::........:- :-+*#%%%#*=:. .............:-+*#%%%%#+=:.. .............:-+*###*+-:.. ...::---::......:--===-::.........:::::::... .. .:=+#%%%#*=:. ..........::-=+*##**=-:. ............:-=*#%%%%#*+=-:.........:::......:-=+****+=-:.......::-=====-:.. .:=+#%%%#*+-:....::---=---::::--=+++==-:. ....::------::...::-+*#%@@@@%%#*+=--::::::::::....:-+*#%%%%#*=-:.....:-=+**##*+=:.. .:=*#%@@%#**+===++******+=--::::----::....::-==++****+=-::...::=+*#%@@@@@@%%#*+=--:::::::::::=+*%@@@@@%#+-:.....:-+*#%%%%#*=-.. .-+#%@@@@@%%####%%%%%%#*+=-::..::::::.:::-=+*#%%%%%%#*=-......:-=*#%%@@@@@@%%#+=-:::::::::-=+*%@@@@@@%#+=:. .:=*#%@@@@%#+=:. .-+#%@@@@@%%%##%%%%%%%#*+=-:.....:::::::-=+##%@@@@@@%#+-. ...:-=+*#%%@@@@%#+=::..::::::-=+#%@@@@@@@#*=:. .:=*#@@@@@%#*=:. .:-+#%@@%%#*+++++**###**+=-::..::::::::::-=+*#%@@@@@@@%*=:. ...::-=+*#%%%#*=:.. ....:::--=*#%@@@@@%#*=:. .:=*%@@@@@%#+=:. .:=*#%%%#+=::...::-====--::::::-----::...::-=+*#%@@@@@@%*=:.. .....:-=**#*+=:. ....::::-=+*#%%%%%#+=:.. .:=*%@@@@@%*=-.. .:=+##%#*+-. ...::::...::-=+++++=-:......:-=+*#%@@@@%#*=-:::.........:-++*++-:....:::::::::-=++****+=-:....:-+*%@@@@%#+-:. .:-+*#%##+-:. ............:-=+*####*=-:. ..:-+*%@@@@@%%#*+=--:... .:-+*##*++=====---:::.:::-------::....:-+*#%%%%#+-:. .:-+*#%%#*=-.. ...::---:::....:-=*#%%%%#*+-:.. .:=*%@@@@@@@%%#*=-:... .:-+#%%%%%###**+=--::........::.......:-=*####*+-:. :-+#%%%%#+-:....:--=+++=--:....:-+*%%@@@%#+=:... ..-+#%@@@@@@@%%*+-:.. .:=*#%@@@@%%##*+=-::...................:-=++++=-:. . =+#%%%%#*=:.. ..:=+*###*+=:.....:-+#%@@@@%#*=-:.. ..:=*#%@@@@@@%#*=-:. .:-+#%@@@%%##*+=--::......::-----::......::----:.. ..: *#%%%%#*=-.. ..-+*%%%%%*+-:. .:-+#%@@@@@%*=-:.. ...:-+*#%%@@%%#*=-:. .:-+*%%%%#*+==-::.......:--=+*****+==-::....:::......:-+ %%@@%#*=-.. .:=*#%@@@%#*=:. .:-+#%@@@@@%*=-.. ...:-=+*****++=::.. ..-=*#%%%#*+-:... ...:-=+*##%%%%%%##*+=--::.......:-=+# @@%%#*=-.. .-+#%@@@@@%#+-.. .:=*%@@@@@@%*=:. ...::------::.....:-+*#%%%#*=-. ..:-=+*##%%%%%%%%%%%%##*+=-:.....:-=*#% @%%#+=:.. ..-+*%@@@@@@@#*=:.. .:=*#@@@@@@@%*=-.. .............:=+#%%@@%#+-. .:-=+*##%%%%#*****##%%@%%#*+=:.....-=*#%@ %#*+-:. ..:-+*%@@@@@@@@%*+-:.....:-+#%@@@@@@@%#+=:... ..........:-=*#%@@%%*+-. .:-=+*#%%@@%#*+-:..:-+*#%%%%#+=:.. .:-+#%%% #*=-.. ..:-=+*#%%@@@@@@%#*+-::....:-=+*#%%@@@@@%##*+=--:::::::::.....:-=*#%%%%#*=-:...:-=*#%%@@@%#*=:. .:=*####*+-:. ..:=*#%%% *=-.. ..:-=++******####**+=-::....:::-==+**##%%%%%%###******+++=--:..::-=+*##**+-::..:-=+*#%%%%%#*=-.. .:-=+**++-:.. .:-+##%%# =-.. .:-==+++=--::---===--:::..........:::-==+*##%%%%%%%%%%%%%##*+-::.::--=====-::..::-=+**###**+=-:.......::--==--:.. ..-=*####* -.. .:-=+**+=-.. ................... ...:-=++*##%%%@@@@@@%%#*=-::...::::::.......::--=====-::.........:::::::... .:=+*###*= :. .:-=*###*=:. ........:::::::.... ...::-==+**##%%%%%##*=-:............................ ...:::::::.... .:-+*###*=- . ..-=*#%%%#+-:......::::--===++++==--::... ....::--=+*****+=-:.........:::::::..... ..:-==+++=-::. .:-+*###*+-: .:=+#%@@%%*+-:...::--=++*###%%%%###*++=-::.. ..:------::.....::--=++++++==--::........:-=+*######*+=-::::-=+*#%%%#+=:. .-=*%%@@@%#*=-:.::--=+*#%%@@@@@@@@@@%%#**+=-::.... ....:::......:-=+*##%%%%%%##**++=======+**#%%%@@@%%%##*+++**#%%@@@%#+-. ..-+*%@@@@%#*=::..::-=+##%@@@@@@@@@@@@@@%%%#**+==---::::::.........:-=+##%@@@@@@@@%%%%%########%%%%@@@@%%%%%######%%@@@@@@%*=:. .:=*#%@@@%*+-:....::-=+*#%%%%%%%%%%%%%@@@@@@%%%###**++==--::....:-=+*#%@@@@@%%%#######%%%%%%%%%%%%%###****+++++**#%%@@@@@%#+-. .:-+#%%%%#*=:. ....::-==++*+++=====+**#%%@@@@@@@@%%%#*+=-::....:=+#%%@@%%#**+=======++***#####**++=---::::::::--=+*#%%@@%#+=:. . .:=+##%##+-:. ....:::::::......:-=+*##%%%@@@%%%#*+=-:....:-+*#%%%%#*=-:........:::--=====--::... ..:-=+#%%%#*+-: :. .:-+*##*+=:. ........... ..:--=+***###**++=-:.. .:=+#%%##*=-.. ............. ...... .:-=*#%%#*+- -:. .:-=+***+=--::::-----::............. ....::---==---::.. .:-+*###*+-:. ....... .........:::-----::... .:=*##%#*+ +=:. ..:-=+*************+=-::...::::::.... ......... ..:=+##%#*+-:. ..::------:::........::--=++****++=-:. .:=*#%%#* #*=:.. .::=+*#%%%@@@@@%%#*=-:...::------::.. ....:-=+*#%%%#+=:. ..:-=+**###**++==--:::::--=+*#%%%%%#*+=:.. ..-+*#%%% %#*+-:. .:-+*%%@@@@@@@%#*=:....::-=+***+=--:.......:::--==+*#%%@@%%#+-.. .:-=*#%%@@@@@%%##*+=-::::-=+*#%@@@@@%#*=-.. .:-+#%%% @%%#+=:.. .:-+*%@@@@@@@%*+-:. ..-=*#%%%%##**++====++++***##%%%@@@%%*=-.. ..:=+#%@@@@@@@@@@%#*+-::..::-=*#%@@@@@%#*=:.. .:=*#%@ @@@%#*=-.. .:-+#%@@@@@%#+-:. .:-+#%@@@@@@@%%%################%%%%#*=:.. ..:=+#%@@@@@@@@@@%#*+-:......:-+*#%@@@%#*+-:....:-+*#% .............................................................................";at_exit{$s=242772018625937582781958127315352038949} $q=%w[$w&&!$s&&exit;W=130;H=80;HS=40;puts(q="$q=%w[#$q].join;at_exit{eval($q)}".chars.each_slice(W).map(&:join).join("¥n"));$s&&$w &&(puts('$w="'+$w+?"+";at_exit{$s=#$s}¥n#{q}")||exit);srand($s||=Random.new_seed);f=0.03+0.03*rand;k=0.057+0.006*rand;g=32.chr+".: -=+*#%@";mc=800+400*rand;spt=(1..(3+5*rand)).map{{x:(W*rand).floor,y:(H*rand).floor,r2:(10+10*rand)**2}};z=(0...H).map{|y|(0...W). map{|x|{a:1.0,b:spt.any?{|s|s[:r2]>=(x-s[:x])**2+(y-s[:y])**2}&&1.0||0.0}}};n=(1..H).map{(1..W).to_a};$l=->(v,x,y,s){(l=x-1)<0&&l= W-1;(r=x+1)>=W&&r=0;(t=y-1)<0&&t=H-1;(b=y+1)>=H&&b=0;0.2*(v[y][r][s]+v[y][l][s]+v[t][x][s]+v[b][x][s])+0.05*(v[t][r][s]+v[t][l][s] +v[b][r][s]+v[b][l][s])-v[y][x][s]};print('$w="');pc=4;mc.to_i.times{|c|(0...W).map{|x|(0...H).map{|y|la=$l.call(z,x,y,:a);lb=$l.c all(z,x,y,:b);a=z[y][x][:a];b=z[y][x][:b];n[y][x]={a:(a+1.0*la-a*b*b+f*(1-a)).clamp(0,1),b:(b+0.5*lb+a*b*b-(k+f)*b).clamp(0,1)}}}; z,n=[n,z];((c+=1)/mc*W).floor>pc&&(pc+=1)&&print(?.)};puts(?.*(W-pc));dmi,dma=z.map{|l|l.map{|v|v[:a]-v[:b]}.minmax}.flatten.minma x;z.each_slice(H/HS){|l|W.times{|x|sum=l.inject(0.0){|a,l|l[x,1].inject(a){|s,v|s+((v[:a]-v[:b]-dmi)/dma)}};print(g.chars[(sum*W*H S*g.size/(W*H)).clamp(0,g.size-1).floor])};puts};ft=?"+";at_exit{$s=#$s}";puts(?.*(W-ft.size)+ft+10.chr+q)].join;at_exit{eval($q)}
  24. lonelyelk.rb matz award “Most reactive and diffusive” $q=%w[$w&&!$s&&exit;W=130;H=80;HS=40;puts(q="$q=%w[#$q].join;at_exit{eval($q)}".chars.each_slice(W).map(&:join).join("¥n"));$s&&$w &&(puts('$w="'+$w+?"+";at_exit{$s=#$s}¥n#{q}")||exit);srand($s||=Random.new_seed);f=0.03+0.03*rand;k=0.057+0.006*rand;g=32.chr+".: -=+*#%@";mc=800+400*rand;spt=(1..(3+5*rand)).map{{x:(W*rand).floor,y:(H*rand).floor,r2:(10+10*rand)**2}};z=(0...H).map{|y|(0...W).

    map{|x|{a:1.0,b:spt.any?{|s|s[:r2]>=(x-s[:x])**2+(y-s[:y])**2}&&1.0||0.0}}};n=(1..H).map{(1..W).to_a};$l=->(v,x,y,s){(l=x-1)<0&&l= W-1;(r=x+1)>=W&&r=0;(t=y-1)<0&&t=H-1;(b=y+1)>=H&&b=0;0.2*(v[y][r][s]+v[y][l][s]+v[t][x][s]+v[b][x][s])+0.05*(v[t][r][s]+v[t][l][s] +v[b][r][s]+v[b][l][s])-v[y][x][s]};print('$w="');pc=4;mc.to_i.times{|c|(0...W).map{|x|(0...H).map{|y|la=$l.call(z,x,y,:a);lb=$l.c all(z,x,y,:b);a=z[y][x][:a];b=z[y][x][:b];n[y][x]={a:(a+1.0*la-a*b*b+f*(1-a)).clamp(0,1),b:(b+0.5*lb+a*b*b-(k+f)*b).clamp(0,1)}}}; z,n=[n,z];((c+=1)/mc*W).floor>pc&&(pc+=1)&&print(?.)};puts(?.*(W-pc));dmi,dma=z.map{|l|l.map{|v|v[:a]-v[:b]}.minmax}.flatten.minma x;z.each_slice(H/HS){|l|W.times{|x|sum=l.inject(0.0){|a,l|l[x,1].inject(a){|s,v|s+((v[:a]-v[:b]-dmi)/dma)}};print(g.chars[(sum*W*H S*g.size/(W*H)).clamp(0,g.size-1).floor])};puts};ft=?"+";at_exit{$s=#$s}";puts(?.*(W-ft.size)+ft+10.chr+q)].join;at_exit{eval($q)} $w=".............................................................................................................................. .::--=+*#%@@@@@@@%*=:....:=*%@@@@%*=-.. ......... ...::-----::..:-=+#%%%%%#*+-:...:=*#%%%%#+=::::-=++*++=-::......::::::........ =++*##%@@@@@@@@@@#+-:. ..:=*#%@@@@%#+=::...........::--=++**++=-::.::-=+****+=-:...:-+#%%%%#+=:...:-+*#%%%#*+=-:..............::-- #%%%%@@@@@@@@@@@@#+-:. ..:-+#%@@@@@@%#*+==========++**##%%%%%#*+-:...::--==--::....:=*#%%%#*=:....:=*#%@@@@%%#*+=-:.......::--=+*# @@@%%%%%%%%@@@@@@%*=:.....:=+#%@@@@@@@@%%%#######%%%%%@@@@@@@%#*+-:......::.... .:=+#%%%%#+-:. ..-+#%@@@@@@@@%#*+==-----==+*##%%% %%##*+====+*#%@@@%#+=:.....:=+*#%@@@@@@@@@@@@@@@@@@@@@%%%%%%@%%#*+=:.............:=*#%@@%#*=:....:=*%@@@@@@@@@%%###****###%%%@@@@@ #*+=-:.....-=*#%@@%#*=-:....:-=+*##%%%%%%%@@@@@@@@%%##**+++*#%%%%#*+==--::::::--=*#%@@@@%#+-:...:-+#%@@@@@@%%#****#%%%@@@@@@@@@%%# =-::... ..:=*#%@@%#*+-:......:--=+++++*****#####*++=-:...:=+#%@@%%%##*******##%%@@@@@@#*=-:..:-=+#%@@@@%#*=-::-=+#%@@@@@@@@%#*+= ............:-=*#%@@@%#*+-:........::::::::---====--:.. :=*%@@@@@@@%%%%%%@@@@@@@@@@%*+-:...::=+*#%%%#*=-.. .-+#%@@@@@%#+=-:: ..::----::...:-=*#%@@@@%#*+-::................::::::... .:=*%@@@@@@%%%%%%%@@@@@@@@@%#+-:.....:-=+****+=-.. .:+#%@@@%#*=:.... :-=++**+=-:....:=+#%@@@@@%%#*=--::.........:::::::::::::::--+*#%%%%##***+*****###%%%%%#*=:. ..:-=++++=-:......:=*#%@@%#+-:. .. =+*#%%%#*+=:....:=+#%@@@@@@@%##*++===========---:::--==++**##%%%#*+=-:::::::----==+****+=-:.....:-=++++=--:...::-+*#%@@%#*=:.....: +#%@@@@@%#+=:....:=+*#%@@@@@@@@%%%%%%%%%%###*+=--:--=+*#%%@@@@%#*=:...............:--=++++======+**##**=-:::::-=*#%@@@@%*=-.....:= #%@@@@@@@%#+-:...::-=+**###%%%%@@@@@@@@@@@@%#*=-:::-=*#%@@@@@@%*=:.. ...::::::......:-+*###%%%%%%@@%%#*=-:..:-=*#%@@@@%#+-:....:-+ %@@@@@@@@@#*=-::..:::---====++*##%@@@@@@@@@%#+-:...:=+#%@@@@@%#+-:....:-==++==-:....:-+*%%@@@@@@@@@@%#*=:....-=*%@@@@@%*=:.. ..:=* @@@@@@@@@%#+=-::::::::.......::-=+*#%@@@@@@%#+-. ..:=+#%%@@%#*+-:..:-=+*####*+=::..:-+*%@@@@@@@@@@@%#+-.. ..-+#%@@@@%#+-:. .:-+# @@@@@@@%#*+=-:::::---:::... ...:-=*#%@@@@%#+-. ..:-+*####*+=::.:-=*#%%@@%#*+-:..:-=*%@@@@@@@@@@@%*=:. ..-+#%@@@@%*=:. ..-=*% @@@@@@%*=-:...::-==+++==--:.... ..:-+*%@@@@%#+-:. ..::-=+++==-:::-=+#%@@@@@%#+-::.:-=+#%%@@@@@@@@%#*=:....:=*%@@@@%#+-:. ..:=*%@ @@@@@%*=:. ..:-=+*##%###*+=-::... ..:=*#%@@@%#+=-:......::---:::::-+*%@@@@@@%*=-:...:-=++*###%%%%%#*+-:...:=+#%@@@@%#+-:...:=+#%@ @@@@@%*-. ..:-+*#%@@@@@@%#*+=-:.....-=*#%@@@%%#*+=-::....::::::::-=*#%@@@@@#*=:.....:::----===++++==-::::-+*%%@@@%#*=-:..:-=*#@@ @@@@@%*=-.....:-=*#%@@@@@@@@@%#+=-:...:-+*#%@@@@@%##*++==----:::::::-=*#%@@@@#*-:. ............:::---::::-=+*#%@@%#*+-::.::-=*#%@ %%@@@%%*+-:....:-+#%@@@@@@@@@@%#+=-:::::-=+*#%%%@@@%%%%###*++=-::...::=+#%@@@%#+-:....:::..........::::::::-=+*#%%#*=-:...::--=+*# +*#%%%%%#+=-:...:=+#%@@@@@@@@@%#+=-:::::::-==+**#%%%@@@@@@%%#*=-:.. ..-+#%@@@%%*++========---:::::::::.....:-=****=-:. ....:::--= :-=+#%%%%#*=-:...:-+#%@@@@@@%%*+=-::::::::..:::-=++*#%@@@@@@%#*=:. :=*%@@@@@@%%%%%######****+++==-:.. :-+***+-:. .......... ..:-+*#%%%#*=:....:-+*#%%%%##+=-::.:::--:::......::-=+#%%@@@@%#*=:. .:=*%%@@@@@@@@@@@@@@@@@@@%%%%#*+=-:. ..-=*#%##*=--::--:::... ...:-+*%%%%#+=:....:-=+****+=-:....:-=+++=--:.. ..::=+*#%@@@%%#*==--=+**###########%%%%@@@@@@@@@@@%%#*+===+*#%@@@@%%##****++=-:. :...:-+#%%%%#+-:.....:-----::.....-=+*####**+=-:.......:-+*#%%@@@%%###****++==========++**##%%%@@@@@@@%%%%#%%%@@@@@@@@@@@@@%%#*+=- -:...:=*#%@@%#+=:...............:-+*#%@@@@@%%#*+=--::...::-+*#%@@@@@@%##+=-::.........:::--=++**##%%%%%%%%%%@@@@@@@@@@@@@@@@@@%#+= -:....-+#%@@@%#*=-:...........:-=+#%@@@@@@@@@@%%#*+==-::..::-+*%@@@@@%#*=::.................:::-==+++*****#####%%%@@@@@@@@@@@@%#+= :.. ..-+#%@@@@@%#*+=--:::::--=+*#%%@@@@@@@@@@@@%%##*+=-::....-=*%@@@%#*=-:...::------::... .....::::-------====++*##%%%%%%%##*=- .....:=*%@@@@@@@@%%##*******##%%%%%%%#############**+=-::.. ..-+#%@%%*+-:..::-=+*****++=-::......................::--==++***++=-:: ...:-=*%@@@@@@@@@@@%%%%%%@@@@@@@%%#+==-----=========--::... .:-+#%%%#*=:...:-=+*#%%%%%%##*+==--:::::..................::::-::::... :-=+*#%@@@@@%%#######%%@@@@@@@@@#*=:.............:::........:-+#%@@%#+-:...:-=+##%@@@@@@@@%%##**++++====----::::.................. +*##%%@%%%#*+==----==+*#%@@@@@@%*=:. ...............::::-=+*#%@@@%#+-:. ..:-=+*#%%@@@@@@@@@@@@%%%%######***++==--::.... ....:-= %%@@@%%#*+=-:........:-+*#@@@@@%*=:.....:------------==++**#%%@@@@@@%#+-......:-==+*#%@@@@@@@@@@@@%%%%@@@@@@@%%%##*++=--:::--==+*# @@@%%#*+=::............:=+#%@@@%*=:...::-=+**##########%%%%%@@@@@@@@@%#+=::......::--+*%@@@@@@@%#***##%%@@@@@@@@@@@%%%###**###%%@@ @%%#*+-::....:::::::....:=*#%@%%*+-:..:-=*#%%@@@@@@@@@@@@%%%#####%%@@@%%#*+=-::......:=*#@@@@%*+-:::-=+*##%%@@@@@@@@@@@@@@@@@@@@@@ #*+=-:.....:-==++==-:...:-+#%%%%#+-:..:-=*#%@@@@@@@@@@@%%#*+=----=*#%@@@@%##+=-:.. .-+#%%%%*=:. ..:-==+**#%%@@@@@@@@@@@@@@@@%% =--:.....:-=+*###*+=-:...-=*%%@%#*=:...:-+*#%%%@%%%%##**+=-:.. ..-+#%@@@@@%%*+=:.....-+*%%%#*=:. .....::::--=+*#%@@@@@@@@@%%##*+ :... ..:-+*#%%%%#*+-:...:=*#%@%%*=:....:-=++****+++=---::.... .:=*#@@@@@@%#*=-:...:=*#%%%#*=-:...::::.......:-=+*#%%%%%##*+=--: ......:-+*#%@@@@@%*=-....:=*#%@@%#+-.. ...::----:::...............:-+#%@@@@@%#*=-:..:-+*%%%%#*=-::::-----::... ..::-=+++++=-::.... .............................................................................";at_exit{$s=317871915447465570974410760196813665823} $q=%w[$w&&!$s&&exit;W=130;H=80;HS=40;puts(q="$q=%w[#$q].join;at_exit{eval($q)}".chars.each_slice(W).map(&:join).join("¥n"));$s&&$w &&(puts('$w="'+$w+?"+";at_exit{$s=#$s}¥n#{q}")||exit);srand($s||=Random.new_seed);f=0.03+0.03*rand;k=0.057+0.006*rand;g=32.chr+".: -=+*#%@";mc=800+400*rand;spt=(1..(3+5*rand)).map{{x:(W*rand).floor,y:(H*rand).floor,r2:(10+10*rand)**2}};z=(0...H).map{|y|(0...W). map{|x|{a:1.0,b:spt.any?{|s|s[:r2]>=(x-s[:x])**2+(y-s[:y])**2}&&1.0||0.0}}};n=(1..H).map{(1..W).to_a};$l=->(v,x,y,s){(l=x-1)<0&&l= W-1;(r=x+1)>=W&&r=0;(t=y-1)<0&&t=H-1;(b=y+1)>=H&&b=0;0.2*(v[y][r][s]+v[y][l][s]+v[t][x][s]+v[b][x][s])+0.05*(v[t][r][s]+v[t][l][s] +v[b][r][s]+v[b][l][s])-v[y][x][s]};print('$w="');pc=4;mc.to_i.times{|c|(0...W).map{|x|(0...H).map{|y|la=$l.call(z,x,y,:a);lb=$l.c all(z,x,y,:b);a=z[y][x][:a];b=z[y][x][:b];n[y][x]={a:(a+1.0*la-a*b*b+f*(1-a)).clamp(0,1),b:(b+0.5*lb+a*b*b-(k+f)*b).clamp(0,1)}}}; z,n=[n,z];((c+=1)/mc*W).floor>pc&&(pc+=1)&&print(?.)};puts(?.*(W-pc));dmi,dma=z.map{|l|l.map{|v|v[:a]-v[:b]}.minmax}.flatten.minma x;z.each_slice(H/HS){|l|W.times{|x|sum=l.inject(0.0){|a,l|l[x,1].inject(a){|s,v|s+((v[:a]-v[:b]-dmi)/dma)}};print(g.chars[(sum*W*H S*g.size/(W*H)).clamp(0,g.size-1).floor])};puts};ft=?"+";at_exit{$s=#$s}";puts(?.*(W-ft.size)+ft+10.chr+q)].join;at_exit{eval($q)}
  25. lonelyelk.rb matz award “Most reactive and diffusive” $q=%w[$w&&!$s&&exit;W=130;H=80;HS=40;puts(q="$q=%w[#$q].join;at_exit{eval($q)}".chars.each_slice(W).map(&:join).join("¥n"));$s&&$w &&(puts('$w="'+$w+?"+";at_exit{$s=#$s}¥n#{q}")||exit);srand($s||=Random.new_seed);f=0.03+0.03*rand;k=0.057+0.006*rand;g=32.chr+".: -=+*#%@";mc=800+400*rand;spt=(1..(3+5*rand)).map{{x:(W*rand).floor,y:(H*rand).floor,r2:(10+10*rand)**2}};z=(0...H).map{|y|(0...W).

    map{|x|{a:1.0,b:spt.any?{|s|s[:r2]>=(x-s[:x])**2+(y-s[:y])**2}&&1.0||0.0}}};n=(1..H).map{(1..W).to_a};$l=->(v,x,y,s){(l=x-1)<0&&l= W-1;(r=x+1)>=W&&r=0;(t=y-1)<0&&t=H-1;(b=y+1)>=H&&b=0;0.2*(v[y][r][s]+v[y][l][s]+v[t][x][s]+v[b][x][s])+0.05*(v[t][r][s]+v[t][l][s] +v[b][r][s]+v[b][l][s])-v[y][x][s]};print('$w="');pc=4;mc.to_i.times{|c|(0...W).map{|x|(0...H).map{|y|la=$l.call(z,x,y,:a);lb=$l.c all(z,x,y,:b);a=z[y][x][:a];b=z[y][x][:b];n[y][x]={a:(a+1.0*la-a*b*b+f*(1-a)).clamp(0,1),b:(b+0.5*lb+a*b*b-(k+f)*b).clamp(0,1)}}}; z,n=[n,z];((c+=1)/mc*W).floor>pc&&(pc+=1)&&print(?.)};puts(?.*(W-pc));dmi,dma=z.map{|l|l.map{|v|v[:a]-v[:b]}.minmax}.flatten.minma x;z.each_slice(H/HS){|l|W.times{|x|sum=l.inject(0.0){|a,l|l[x,1].inject(a){|s,v|s+((v[:a]-v[:b]-dmi)/dma)}};print(g.chars[(sum*W*H S*g.size/(W*H)).clamp(0,g.size-1).floor])};puts};ft=?"+";at_exit{$s=#$s}";puts(?.*(W-ft.size)+ft+10.chr+q)].join;at_exit{eval($q)} $w=".............................................................................................................................. ::..... ................:-+*#%@@@@@@@%#*+=-:.. ..:-=+**######**++++==++++***##%%%@@@@@@@@@@@@@@@@%%#+=-:....:-=*##%#*+=:......: .......::::::::::........:=+*%%@@@@@%%#*+=-:.. ..:-+*#%%%@@@@@%%%%%############%%%%@@@@@@%%%####%%%%##*=-:....:-=*####*=-....... ::---=============------=+*#%@@@@@%%#*+-::.. ..:-=+##%%@@@@@@@@@@@@@%%%%###********#####*++=---=+*#####*=-:....:-=*###*+=:...... =++***############*****##%%@@@@%%#*+=-:... ...:-=+*#%%%%%#####%%%%%%%%##**++=--::---=====-::. .:-+*####*=-:....:-+*#%##*+=----- *##%%%%%%%%@@@@@@@@@@@@@@@@@@%%#*+=-:.. ...:-=+*#%%%%#*+==-==++*****++==--::.......::::::.. .:-+*###*+=:.. ..-=*#%%%%##***** ##%%%%%%%%%%%%%%@@@@@@@@@@%%#*+=-:... ..::-+*##%%%%%#+-:.....::-----:::............:::::..... .-=*###*+=-.. ..:=*#%@@@%%%#### ***************###%%%%%%%##*+=-:.. ...:-=+*#%%@@@%%#+=:. ..............:::::::::::::::::... ..-=*###*+=:.. ..-=*#%@@%%%##*** ----------:::---==++*****+=-:... ...:-=+*#%%@@@@%%#*=-:........... ..:--=====-----------::....:=+*###*=-:....:-+*%%%%#*+==--- .......... ....::-----::... ...:-=+*##%%@@@%%%#*+=-:....::::::::::::-==+***++==-----==+++======+*####*+=::....:=*#%%#*+=:..... .......... .....:::......::-==+*#%%%%%%%##*++=-::...::--======+++**######*+=-::::-=+*#######%%%%%%#*=-:....:-+*#%#*+-:. .. ::------:::::..............:::-=+**#%%%%%%##*++=-::......::-=+**#####%%%%@@@%%*+=:....:-=*#%@@@@@@@@@@%#*+-:.....-=*#%%#*=:. ..: -==++****++++====---:::::::--=+*#%%%%%%##*+=-::... ..:-=+*##%%%%%@@@@@@@@%#*=:. ..-=*#%@@@@@@@@@@%#+=:.. ..:-+#%%%%*+-:....:: -=+*##%%%%%%%%###*++=--:::-=+*#%%%@%%##*=-:... ...:-=+**########%%@@@@@@%#*=:. .:=*#@@@@@@@@@@@%*=-.. ..:=*#%@@%#*=-:..::- --=*#%%@@@@@@@@%%%#*+=-:::-=+*#%%%%%#*=-:........:::-=++*####*++====+*#%@@@@@%*=-.. ..:=+#%@@@@@@@@@%#+-:. .:-+#%@@@@%#*+-::::: ::-=*#%@@@@@@@@@%%#*+=-:..:-=*#%%%#*+=:......::-==+**##%%%##*+-:. .:-+*%%@@@%#*=-:....:-+*#%@@@@@@@%#*=:.. .:=*#%@@@@@%#*=-:::. ...-=*#%@@@@@@%%#**+=-:....:-+*###*+-:.....:-=++*##%%%@@%%#*+-:. ..-+*#%%%%#*+=-::.:::-+*#%%@@@%%#*=-:. .:-+#%@@@@@@%#*+-::.. ...:=+#%%%%%##*++=--:... ..-=*##*+=:.....:-=+*#%%@@@@@@%#*+=:........:-+**###**+=--::::::--=+*####*+=-:.. ..:=*#@@@@@@%#*+=-:... ..:-=+*###*+==-:::.... .:-+*##*+=:.....:-=+*##%%@@@%%#*+-::........::-===+++==--::::....::--======-:.. ..:=*#%@@@@@%#*+--:.... :--=++**+=-::........ ..:-+*#%%#*+-:.....:-==+*######*+=-:....:::::....:::::::::::::........::::-:::.....:-=*#%@@@@%#*+=-:.....: =++**++=-::.. .....::::-=+*#%%@%%#*+-:......::-==++++=--:....::----::............::::::::::...::::::....:-=+#%%@@@%%*+=-:.....:-- *****+=-:......::--==++*##%%@@@@@%%#*+=-::......::::::::....::-=++++=-::.. ...::--===++====---:::::..::-=+*#%@@@@%#*=-:......:-=+ ###*+=-:...::--=+*###%%%@@@@@@%%%##**++==---::............::-=+*#####*+=------==++**#######**++=-:::.::-=+#%%@@@@%#*=-:.. ...:=+*# %#*+=::...:-=+*##%%@@@@@@@@@%#**+======++++++=--::.......:-=+*#%@@@@@%%##******###%%%%%@@@%%%#*+=-:..::-+*%%@@@@%#*=-... ...-=+##% %#*=:....:-=+*#%%@@@@@@@@%%#*+-::...::-+**####*++=-::...:-=+#%%@@@@@@@@@%%%%%######%%%%%@@@@%%#+=-:...:=+#%@@@@%#*=-... ..:-=+#%%% %*+-.. ..:-=*#%%@@@@@@%%#*+=-:.. ..-=*#%%%%%##*+-::.::-=*#%@@@@@@@@@%%%###****+++++**#%%%%#*+-:....:-+#%@@@%#*=-:.....:-=*#%%@% %*=:. ..:-=+*#%%%%%##*+=--:..........:-+#%%@@@%%#*=-::::-=+*#%%%%%%%##**+++==---::::::-=+*##*+=-:. .:-+#%%@%%*+-:.....:-=+#%@@@@ %*=:. ..:-==+******+=-::.............:-+*#%@@@%%#*+=-::::-=++*****++==--::::..... .:-++*+=-:.. .:-+#%%%%#*=:......:-+*%@@@@@ %#+:. ..::-======-::.......::::::::::-=+*#%%%%#*+=-::..:::-------::............ ..-=+++=-:. .:=*#%@%%#+-:.....:-=+#%@@@@@ @%*=: ..:::::::.......::-==++==--::--=+*****+==-::.............. .....:::.....::-=+**+=-:.. .:-+#%@@@%#+-:.....::-=*#%@@@@ @%#*=:. ..........::-=+**####*++=------==---::......::...... ...::--========+++*####*+-:...:-=*#%@@@%#*=-......::-=+*#%@@ @@@%*+-. ...:-=+*##%%%%%%##*+=-::::::.......::------:::....:::-==+**##########%%%%##*+=::.::=+#%@@@@@%#*=::.......:-=+#%% %@@@%#*+-:.. ..::-=+*##%%%@@@%%%#**+--:.........::-=++*****++++==+++**##%%%@@@@@%%%%%%%%##*+=-::::-=+*#%@@@@@%#*=-::........:=*# %@@@@@@%#*++====++**##%%%%%%%%###**+=-::......::--=+**##%%%%%%%####%%%%@@@@@@@@@@%%%###***++==-::::::-=+*#%@@@@@%#*+=-::... :=* #%@@@@@@@@@@%%%%%%%%%%%##**+++++==--::.....::-=++*##%%%%%%%%%%%%%%%@@@@@@@@@@%%##**++===---::::::....::-=+*#%@@@@%%#*=-::.. .:+ #%@@@@@@@@@@@@@@@@@@%#*+=--:::::::.......:-=+**##%%%%%####*****###%%%%%%%%%##*++=--:::..........:.......:-=+*%%@@@@%#*+-::.. .:= #%@@@@@@@@@@@@@@@@%%#+=-:..............:-=+*#%%%%%##**+==------===++******++=--:..... ...:::::::......:-=*#%@@@@%#*=-:... ..-+ #%@@@@@@%%%%%%%%###*+-:.............::-=*##%%%%%##*+=-::.........:::------:::.... ....:--==++==-::.. ..-=*#%@@@%%#+=::....:=+ *#####**++====++++==-::......::::--=++*#%%%%%%#*+=-:........... ...................::--=+**#####*+=-:.. ..-=*#%@@@%#*=-:...:-=+ ++++==-::.....::::::::.....::--=+**##%%@@@%%#*+=-:........::::..... .......:::--==++*##%%@@@@@@%#*+-:.. ..-=*#%%%%#*+-::..::-= ---::.. .............::-=+*#%%@@@@@%%#*+=-:.. ..::-=======--:::..:::::--==+**##%%%@@@@@@@@@@@%%*+=:.. .:-=*#%%%#*+=::..:::- .............................................................................";at_exit{$s=154129094866360313063042721822912717326} $q=%w[$w&&!$s&&exit;W=130;H=80;HS=40;puts(q="$q=%w[#$q].join;at_exit{eval($q)}".chars.each_slice(W).map(&:join).join("¥n"));$s&&$w &&(puts('$w="'+$w+?"+";at_exit{$s=#$s}¥n#{q}")||exit);srand($s||=Random.new_seed);f=0.03+0.03*rand;k=0.057+0.006*rand;g=32.chr+".: -=+*#%@";mc=800+400*rand;spt=(1..(3+5*rand)).map{{x:(W*rand).floor,y:(H*rand).floor,r2:(10+10*rand)**2}};z=(0...H).map{|y|(0...W). map{|x|{a:1.0,b:spt.any?{|s|s[:r2]>=(x-s[:x])**2+(y-s[:y])**2}&&1.0||0.0}}};n=(1..H).map{(1..W).to_a};$l=->(v,x,y,s){(l=x-1)<0&&l= W-1;(r=x+1)>=W&&r=0;(t=y-1)<0&&t=H-1;(b=y+1)>=H&&b=0;0.2*(v[y][r][s]+v[y][l][s]+v[t][x][s]+v[b][x][s])+0.05*(v[t][r][s]+v[t][l][s] +v[b][r][s]+v[b][l][s])-v[y][x][s]};print('$w="');pc=4;mc.to_i.times{|c|(0...W).map{|x|(0...H).map{|y|la=$l.call(z,x,y,:a);lb=$l.c all(z,x,y,:b);a=z[y][x][:a];b=z[y][x][:b];n[y][x]={a:(a+1.0*la-a*b*b+f*(1-a)).clamp(0,1),b:(b+0.5*lb+a*b*b-(k+f)*b).clamp(0,1)}}}; z,n=[n,z];((c+=1)/mc*W).floor>pc&&(pc+=1)&&print(?.)};puts(?.*(W-pc));dmi,dma=z.map{|l|l.map{|v|v[:a]-v[:b]}.minmax}.flatten.minma x;z.each_slice(H/HS){|l|W.times{|x|sum=l.inject(0.0){|a,l|l[x,1].inject(a){|s,v|s+((v[:a]-v[:b]-dmi)/dma)}};print(g.chars[(sum*W*H S*g.size/(W*H)).clamp(0,g.size-1).floor])};puts};ft=?"+";at_exit{$s=#$s}";puts(?.*(W-ft.size)+ft+10.chr+q)].join;at_exit{eval($q)}
  26. lonelyelk.rb matz award “Most reactive and diffusive” $q=%w[$w&&!$s&&exit;W=130;H=80;HS=40;puts(q="$q=%w[#$q].join;at_exit{eval($q)}".chars.each_slice(W).map(&:join).join("¥n"));$s&&$w &&(puts('$w="'+$w+?"+";at_exit{$s=#$s}¥n#{q}")||exit);srand($s||=Random.new_seed);f=0.03+0.03*rand;k=0.057+0.006*rand;g=32.chr+".: -=+*#%@";mc=800+400*rand;spt=(1..(3+5*rand)).map{{x:(W*rand).floor,y:(H*rand).floor,r2:(10+10*rand)**2}};z=(0...H).map{|y|(0...W).

    map{|x|{a:1.0,b:spt.any?{|s|s[:r2]>=(x-s[:x])**2+(y-s[:y])**2}&&1.0||0.0}}};n=(1..H).map{(1..W).to_a};$l=->(v,x,y,s){(l=x-1)<0&&l= W-1;(r=x+1)>=W&&r=0;(t=y-1)<0&&t=H-1;(b=y+1)>=H&&b=0;0.2*(v[y][r][s]+v[y][l][s]+v[t][x][s]+v[b][x][s])+0.05*(v[t][r][s]+v[t][l][s] +v[b][r][s]+v[b][l][s])-v[y][x][s]};print('$w="');pc=4;mc.to_i.times{|c|(0...W).map{|x|(0...H).map{|y|la=$l.call(z,x,y,:a);lb=$l.c all(z,x,y,:b);a=z[y][x][:a];b=z[y][x][:b];n[y][x]={a:(a+1.0*la-a*b*b+f*(1-a)).clamp(0,1),b:(b+0.5*lb+a*b*b-(k+f)*b).clamp(0,1)}}}; z,n=[n,z];((c+=1)/mc*W).floor>pc&&(pc+=1)&&print(?.)};puts(?.*(W-pc));dmi,dma=z.map{|l|l.map{|v|v[:a]-v[:b]}.minmax}.flatten.minma x;z.each_slice(H/HS){|l|W.times{|x|sum=l.inject(0.0){|a,l|l[x,1].inject(a){|s,v|s+((v[:a]-v[:b]-dmi)/dma)}};print(g.chars[(sum*W*H S*g.size/(W*H)).clamp(0,g.size-1).floor])};puts};ft=?"+";at_exit{$s=#$s}";puts(?.*(W-ft.size)+ft+10.chr+q)].join;at_exit{eval($q)} $w=".............................................................................................................................. .................................................................................................................................. .................................................................................................................................. .................................................................................................................................. .................................................................................................................................. ......... ............................................................. .................................................... ...... ...... ......::---::...................::---::............ .................................................. .... ...::::::.. ..::-===--:.................:-=++==-:....... ...................................................... .... ..:-=+++=-:.. ..::-===--:................:-=++++=-:.. .:--===-:... ............................................ ... ..:-+*###*+-:. ...:::-:::..................:-====-::. ..:-=+*###*=-:. ........................................... ... ..:-=**#*+=-:. ..............................:::::.. .:-=+*#%@@@%#*=-.. .......................::::................ .... ..:--===-::.. ...................................... ..:=+#%@@@@@%#+=:. .......................::::::............... ..... ......... ......................................... .:-=*#%%%%#*+-:. ........................:::::............... ....... ............................................ ..:-=++++=-:. .............................................. ............................................................... ....::... ................................................ ................................................................ .................................................. ................................................................... ....................................................... .................................................................................................................................. .................................................................................................................................. ................................ ............................................................................................ ............................ . ......................................................................................... .....::::.................. ...::::.. ....................................................................... ............. ...:::--:::............... .:-=+++=-:.. .................................................................... ................ ...:::---::.............. ..-=*#%##+=:. ................................................................... ...:--==--:... .. ....::::::............... .:-+*#%%#*=:. ................................................................. ..:-=+**+=-:.. .. .......................... ..:=+***+=-:. ............................................ ................. ..:-+***+=-:... .. .......................... ..::----:.. ......................................... ..... .............. ...:-====-:....... ........................... ...... ......................................... ...:::::... .............. ....::::......... ............................ ........................................... ..:-=+++=-:.. ............... ...... ...... .............................. ............................................. ..:-+*##*+=-:. ............................... .................................................................................. ..:-=+***+=:.. ............................... ..........................::----:................................................. ..::-===-:... ............................... .........................:-==+==-:................................................. ......... ................................ .........................:-==++=-:.................................:................. ................................... ..........................:-----::................................................................................................ .............................:.................................................................................................... .................................................................................................................................. .................................................................................................................:::.............. ...............................................................................................................:::::::............ ...............................................................................................................:::::::............ .................................................................................................................:::.............. .............................................................................";at_exit{$s=207048293170487523485800825757960625670} $q=%w[$w&&!$s&&exit;W=130;H=80;HS=40;puts(q="$q=%w[#$q].join;at_exit{eval($q)}".chars.each_slice(W).map(&:join).join("¥n"));$s&&$w &&(puts('$w="'+$w+?"+";at_exit{$s=#$s}¥n#{q}")||exit);srand($s||=Random.new_seed);f=0.03+0.03*rand;k=0.057+0.006*rand;g=32.chr+".: -=+*#%@";mc=800+400*rand;spt=(1..(3+5*rand)).map{{x:(W*rand).floor,y:(H*rand).floor,r2:(10+10*rand)**2}};z=(0...H).map{|y|(0...W). map{|x|{a:1.0,b:spt.any?{|s|s[:r2]>=(x-s[:x])**2+(y-s[:y])**2}&&1.0||0.0}}};n=(1..H).map{(1..W).to_a};$l=->(v,x,y,s){(l=x-1)<0&&l= W-1;(r=x+1)>=W&&r=0;(t=y-1)<0&&t=H-1;(b=y+1)>=H&&b=0;0.2*(v[y][r][s]+v[y][l][s]+v[t][x][s]+v[b][x][s])+0.05*(v[t][r][s]+v[t][l][s] +v[b][r][s]+v[b][l][s])-v[y][x][s]};print('$w="');pc=4;mc.to_i.times{|c|(0...W).map{|x|(0...H).map{|y|la=$l.call(z,x,y,:a);lb=$l.c all(z,x,y,:b);a=z[y][x][:a];b=z[y][x][:b];n[y][x]={a:(a+1.0*la-a*b*b+f*(1-a)).clamp(0,1),b:(b+0.5*lb+a*b*b-(k+f)*b).clamp(0,1)}}}; z,n=[n,z];((c+=1)/mc*W).floor>pc&&(pc+=1)&&print(?.)};puts(?.*(W-pc));dmi,dma=z.map{|l|l.map{|v|v[:a]-v[:b]}.minmax}.flatten.minma x;z.each_slice(H/HS){|l|W.times{|x|sum=l.inject(0.0){|a,l|l[x,1].inject(a){|s,v|s+((v[:a]-v[:b]-dmi)/dma)}};print(g.chars[(sum*W*H S*g.size/(W*H)).clamp(0,g.size-1).floor])};puts};ft=?"+";at_exit{$s=#$s}";puts(?.*(W-ft.size)+ft+10.chr+q)].join;at_exit{eval($q)}
  27. lonelyelk.rb • Reaction-Diffusion System – A mathematical model of patterns

    like giraffes, cheetahs, fishes, etc. – Simulates reaction and diffusion of chemical substances • … and Quine – It shows itself twice, at the top and at the bottom – All the following commands work well matz award “Most reactive and diffusive” $ ruby entry.rb $ ruby entry.rb | ruby $ ruby entry.rb | head | ruby $ ruby entry.rb | tail | ruby
  28. lonelyelk.rb • Judges' comments – matz: I love this kind

    of thing. – eto: Very beautiful. – flagitious: Impressive evolving rendering quine. matz award “Most reactive and diffusive”
  29. Winner » eto shinh yhara matz leonid flagitious mame score

    “Most global” 『最もグローバルで賞』 Yusuke Endoh eto award 9 8 8 5 8 9 N/A 7.83
  30. mame.rb eto award “Most global” a=0132;eval$s=%q!eval(%q~d,h,Y ___---------___ ,X=*$*.map(&:to_i),45;b=(a+d)% R=360;s=[v=[include(Math)]] _---

    ---_ ;T=PI*2;n=x=0;f=->{(n/=2)%2 >0?1:f[]*2+(n/=2)%2};g=- _- v@v ,,,,,, -_ >{z=f[];z/2*(3-z%2*6)};" 8'8f'y;I;asr1mY?Sr$6r _- ,vv@@@@@@@^''@v,-_ {+Gi{03G3=ZbpUo3l'}Yw C<Sl;J'x4aQbMAAD}c_@ / ^^^^^^@@@@@@vvv@@@@¥ hG],qDu/[eKyo/rD919e TPva4BX7FC%#AuzChg / ,v@@vvv,, ^@ ^@@@@@@@@@¥ uS)EmfeV+.m:*k@q)Z =VxSFP>qxJfHIWd'R /v ,@@@@@@@@@@@v ^^^'''^@@@@¥ MUS4&$r3D>GqL((/C ea&e'|PS@3aQ@-hL /@@ ,v@@@@@@@@@@@@@@v, '*v, '^@¥ ja+/Lru>]96]d_4W 9o][*A;J&..;a?@ /@@@ @@@@@@@@@@@@@@@@@@@v,,,@@@@@ @@¥ O'x.RmTPRK+Pol# U;o_wP`}6.g#?y |@@@@v, '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@| 0`.lHNxLXjI^#S 5F-XcldGh_BZDc |@@@@@^ '^^@@@@@@@@@@@@@@@@@'@@@@ '@@@@| JTLKD)#e*CUo$. {c&a46;+AaGW*M |@@@@' '^@@@@@@@@@@@@@ @@@@@v '@@| R5".bytes{n=n* 90+-_1%91};190 |@@^ @@@@@@@@@@@@@ ^^^''' '@| .times{x+=e=(g []+g[].i)*T/R; |^' @@@@@@@@@@@@@vv, @| e==0?s<<v=[]:v <<v[0]=x.rect} | @@@@@@@@@@@@@^' @ | ;$><<(1..(d==0 ?h*w=h*4:25*w= | ,@@@@@@@@@@@^' | 80)).map{|i|q= i/w*6+3;r=i%w;" ¥ v@@@@@@@@@@@ / ¥s'*^,:v@¥nXa=# {"%04o"%b};eval$ ¥ @@@@@@@@@@@@ / s=%q¥x21#$s¥x21" [r>0?X&&r==(X+168 ¥ @@@@@@@@^' ,v* / )%R*w/R&&q/6==(90 -Y)*h/180?9:(0..2) ¥ ^^^^^^' ,^ / .all?{e=d==0?cos(q* T/w/3):(r*3i-120i-q+ ¥ / 73)/Complex.polar(72 ,2/4.9);q-=2;y,x=e.re -_, _- ct;e.abs<1&&n+=n-s.ma p{|s|z=sqrt(1-y*y);c=d== -_v,, _- 0?r*T/(1-w):b*T/R+acos(x );g=0;s.sum{(g-g=atan2(sin( --__v, __-- o=_1+c),z/tan(_2)+y*cos(o)) /T).round}}.min/9}?n%8:i+9:8]} ```---------``` *""~.gsub(/¥x20.*¥x20|¥n/){})!
  31. mame.rb • It prints itself with a globe rotated 45

    degrees – Eight execution will return the original code • The rotation angle can be specified freely eto award “Most global” a=0132;eval$s=%q!eval(%q~d,h,Y ___---------___ ,X=*$*.map(&:to_i),45;b=(a+d)% R=360;s=[v=[include(Math)]] _--- ---_ ;T=PI*2;n=x=0;f=->{(n/=2)%2 >0?1:f[]*2+(n/=2)%2};g=- _- v@v ,,,,,, -_ >{z=f[];z/2*(3-z%2*6)};" 8'8f'y;I;asr1mY?Sr$6r _- ,vv@@@@@@@^''@v,-_ {+Gi{03G3=ZbpUo3l'}Yw C<Sl;J'x4aQbMAAD}c_@ / ^^^^^^@@@@@@vvv@@@@¥ hG],qDu/[eKyo/rD919e TPva4BX7FC%#AuzChg / ,v@@vvv,, ^@ ^@@@@@@@@@¥ uS)EmfeV+.m:*k@q)Z =VxSFP>qxJfHIWd'R /v ,@@@@@@@@@@@v ^^^'''^@@@@¥ MUS4&$r3D>GqL((/C ea&e'|PS@3aQ@-hL /@@ ,v@@@@@@@@@@@@@@v, '*v, '^@¥ ja+/Lru>]96]d_4W 9o][*A;J&..;a?@ /@@@ @@@@@@@@@@@@@@@@@@@v,,,@@@@@ @@¥ O'x.RmTPRK+Pol# U;o_wP`}6.g#?y |@@@@v, '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@| 0`.lHNxLXjI^#S 5F-XcldGh_BZDc |@@@@@^ '^^@@@@@@@@@@@@@@@@@'@@@@ '@@@@| JTLKD)#e*CUo$. {c&a46;+AaGW*M |@@@@' '^@@@@@@@@@@@@@ @@@@@v '@@| R5".bytes{n=n* 90+-_1%91};190 |@@^ @@@@@@@@@@@@@ ^^^''' '@| .times{x+=e=(g []+g[].i)*T/R; |^' @@@@@@@@@@@@@vv, @| e==0?s<<v=[]:v <<v[0]=x.rect} | @@@@@@@@@@@@@^' @ | ;$><<(1..(d==0 ?h*w=h*4:25*w= | ,@@@@@@@@@@@^' | 80)).map{|i|q= i/w*6+3;r=i%w;" ¥ v@@@@@@@@@@@ / ¥s'*^,:v@¥nXa=# {"%04o"%b};eval$ ¥ @@@@@@@@@@@@ / s=%q¥x21#$s¥x21" [r>0?X&&r==(X+168 ¥ @@@@@@@@^' ,v* / )%R*w/R&&q/6==(90 -Y)*h/180?9:(0..2) ¥ ^^^^^^' ,^ / .all?{e=d==0?cos(q* T/w/3):(r*3i-120i-q+ ¥ / 73)/Complex.polar(72 ,2/4.9);q-=2;y,x=e.re -_, _- ct;e.abs<1&&n+=n-s.ma p{|s|z=sqrt(1-y*y);c=d== -_v,, _- 0?r*T/(1-w):b*T/R+acos(x );g=0;s.sum{(g-g=atan2(sin( --__v, __-- o=_1+c),z/tan(_2)+y*cos(o)) /T).round}}.min/9}?n%8:i+9:8]} ```---------``` *""~.gsub(/¥x20.*¥x20|¥n/){})! a=0207;eval$s=%q!eval(%q~d,h,Y ___---------___ ,X=*$*.map(&:to_i),45;b=(a+d)% R=360;s=[v=[include(Math)]] _---@^^@@, ^@@@@---_ ;T=PI*2;n=x=0;f=->{(n/=2)%2 >0?1:f[]*2+(n/=2)%2};g=- _-@@@''''' *^ ''^^^v-_ >{z=f[];z/2*(3-z%2*6)};" 8'8f'y;I;asr1mY?Sr$6r _-^''@^ -_ {+Gi{03G3=ZbpUo3l'}Yw C<Sl;J'x4aQbMAAD}c_@ /@^, ¥ hG],qDu/[eKyo/rD919e TPva4BX7FC%#AuzChg / '@ ¥ uS)EmfeV+.m:*k@q)Z =VxSFP>qxJfHIWd'R / ^@ ^@v¥ MUS4&$r3D>GqL((/C ea&e'|PS@3aQ@-hL / ,,v@@@@¥ ja+/Lru>]96]d_4W 9o][*A;J&..;a?@ / v@@@vv, ,:'''''@¥ O'x.RmTPRK+Pol# U;o_wP`}6.g#?y | @@@@@@@@v ,v@@@@@@vv^ | 0`.lHNxLXjI^#S 5F-XcldGh_BZDc | @@@@@@@@@@, v@@@@@@@@@@@, | JTLKD)#e*CUo$. {c&a46;+AaGW*M | @@@@@@@@@@@ v@@@@@@@@@@@@@@@| R5".bytes{n=n* 90+-_1%91};190 | ^@@@@@@@@@@@v, @@@@@@@@@@@@@@@| .times{x+=e=(g []+g[].i)*T/R; | @@@@@@@@@@@@@@ '@@@@@@@@@@@@@@| e==0?s<<v=[]:v <<v[0]=x.rect} | @@@@@@@@@@@@@' ''^@@@@@@@@@@| ;$><<(1..(d==0 ?h*w=h*4:25*w= | ,@@@@@@@@@@@@^ @@@@@@@v| 80)).map{|i|q= i/w*6+3;r=i%w;" ¥ v@@@@@@@@^^'' @@@@@@^/ ¥s'*^,:v@¥nXa=# {"%04o"%b};eval$ ¥@@@@@^' @@@@@@'/ s=%q¥x21#$s¥x21" [r>0?X&&r==(X+168 ¥^' v@@@@@ / )%R*w/R&&q/6==(90 -Y)*h/180?9:(0..2) ¥ v@@@@@/ .all?{e=d==0?cos(q* T/w/3):(r*3i-120i-q+ ¥ @@@@@/ 73)/Complex.polar(72 ,2/4.9);q-=2;y,x=e.re -_ @@@_- ct;e.abs<1&&n+=n-s.ma p{|s|z=sqrt(1-y*y);c=d== -_ _- 0?r*T/(1-w):b*T/R+acos(x );g=0;s.sum{(g-g=atan2(sin( --__ __-- o=_1+c),z/tan(_2)+y*cos(o)) /T).round}}.min/9}?n%8:i+9:8]} ```---------``` *""~.gsub(/¥x20.*¥x20|¥n/){})! 45-degree rotation
  32. mame.rb • Q. "Didn't you create the same thing?" •

    A. Yeah, @mame have created "Qlobe" eto award “Most global” v=0000;eval$s=%q~d=%!^Lcf<LK8, _@7gj*LJ=c5nM)Tp1g0%Xv.,S[<>YoP 4ZojjV)O>qIH1/n[|2yE[>:ieC "%.#% :::##" 97N-A&Kj_K_><wS5rtWk@*a+Y5 yH?b[F^e7C/56j|pmRe+:)B "##% ::##########" O98(Zh)'Iof*nm.,$C5Nyt= PPu01Avw^<IiQ=5$'D-y? "##: ###############" g6`YT+qLw9k^ch|K'),tc 6ygIL8xI#LNz3v}T=4W "# #. .####:#######" lL27FZ0ij)7TQCI)P7u }RT5-iJbbG5P-DHB<. " ##### # :############" R,YvZ_rnv6ky-G+4U' $*are@b4U351Q-ug5 " #######################" 00x8RR%`Om7VDp4M5 PFixrPvl&<p[]1IJ " ############:#### %#####" EGgDt8Lm#;bc4zS^ y]0`_PstfUxOC(q " .#############:##% .## ." /,}.YOIFj(k&q_V zcaAi?]^lCVYp!; " %% .################. #. " ;s="v=%04o;ev"% (;v=(v-($*+[45, ":####: :##############% : " ])[n=0].to_i;)% 360)+"al$s=%q#{ "%######. ######### " ;;"%c"%126+$s<< 126}";d.gsub!(/ "##########. #######% " |¥s|".*"/,"");; require"zlib"|| "########### :######. " ;d=d.unpack"C*" d.map{|c|n=(n|| ":#########: .######: . " )*90+(c-2)%91}; e=["%x"%n].pack " :#######% :###### #: " &&"H*";e=Zlib:: Inflate.inflate( " ######% .####% :: " &&e).unpack("b*" )[0];22.times{|y| " ####% %### " ;w=(Math.sqrt(1-( (y*2.0-21)/22)**(; " .###: .#% " ;2))*23).floor;(w* 2-1).times{|x|u=(e+ " %## " )[y*z=360,z]*2;u=u[ 90*x/w+v+90,90/w];s[( " #. " ;y*80)+120-w+x]=(""<< 32<<".:%#")[4*u.count(( " . " ;"0"))/u.size]}};;puts¥ s+";_ The Qlobe#{" "*18+ ( "# :#######" ;"Copyright(C).Yusuke End¥ oh, 2010")}";exit~;_ The Qlobe Copyright(C).Yusuke Endoh, 2010 "Qlobe" in 2010 by @mame
  33. mame.rb • Q. What is the difference from Endoh's work?

    • A. Many new features and improvements! – The tilted rotational axis (23.4 degrees!) – Very compressed polygon map data (only 286 letters!) – Robust spherical trigonometry – Map dump with a mark of specified lat/long eto award “Most global”
  34. mame.rb eto award “Most global” $ ruby entry.rb dump ,,,,,,,,,,,

    ,,vvv@@@@@@@@@@@@@@@@@ ''^^@@@@@@@@@@@@@@@@@@@@ ,,,vvvv@@@vvvv,,, ,,,,,, ,,,,,,,,,,''^vvv,, '^@@@@@@@@@@@@@@^^* ,,,,, @ ,vv@@@@@@@@@@@@@@@@@@@@@@vv,,vvvvvvvvvv@vvvvvvvvvv,, vv@@@@@@@@@@@@@@@@@@@@@vvvv@@@@@@@@@@@@' ,v@@@@@* '^@@@@@^^'' ,v@@@@@@@@@@@*,,,,,vvvvvvvvv@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@v,, @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@' '''^^^ '^^' ,v@@@^ ^^^^@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^'' ''' '''^^@@@@@@@@@@@@@@@@@@@@, ,@@@vv,, , *@@@@' ,v@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^^^''' v^^''' '^@@@@@@@@@@@@@@@@@@@@vv, @@@@@@@@@@v, @@, v@@@@@@vv@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ' '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^^''v ^^'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@v ^@@@@@@@@@@@@@@@@@@@@@@@@@@:,,, *^^ ,@@@@@@@@^@@@@@@@^^''''''^^^@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^' '@@@@@@@@@@@@@@@@@@@@@@@@^'' v@@@@^^'^@ '@@@^ ,v @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@' @@@@@@@@@@@@@@@@@@@@@' ^^^^' ' ^' ''^^@@@@@@@,:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ v @@@@@@@@@@@@@@@@@@@' ,vvv@@@@@@, @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ' *^^ @@@@@@@@@@@@^'^@@^ ,@@@@@@@@@@@@@vvvvvvvvv@@@@@@'^^@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ^'^@@@@@^' '^ ,@@@@@@@@@@@@@@@@@@@@@@^@@@@@@@,,, ''^^@@@@@@@@@@@@@@@@@@@@@@@@@@@ '@@@@@ , v@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@* '^@@@@@@@@@^^@@@@@@@^^'' '^^@@@@ v@@@@@@@@@@@@@@@@@@@@@@@@@@ ^@@@@@^' '@@@@^'' ^@@@@: '^^@@v v@@@@@@@@@@@@@@@@@@@@@@@@@@@@ '^' ^@@ '@@@@v '^ ,,,,, ^@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,, @' ''@@@^ , v@@@@@@@@@v, ^@@@@@@@@@@@@@@@@@@@@@@@@@@@@^ ' ' @ @@@@@@@@@@@@v, @@@@@@@@@@@@@@@@@' ,,vv',,, v@@@@@@@@@@@@@@v,, @@@@@@@@@@@@@@^ @@@@ @@ ,, @@@@@@@@@@@@@@@@@@@@@v @@@@@@@@@@@@@ * ''' ^@@vv, '@@@@@@@@@@@@@@@@@@@@' @@@@@@@@@@@@@ '''^* ^@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@ , ,v@@v, @, ^@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@ v@^ ,v@@@@@@@@@@@ ,@@@@@@@@@@@@@' ^@@@@@@@@@@@^ @^ ,v@@@@@@@@@@@@@@@ @@@@@@@@@@@@^ '@@@@@@@@@^ ' @@@@@@@@@@@@@@@@@@, @@@@@@@@@@', '@@@@@@^' ^@@@@@@@@@@@@@@@@@@ v@@@@@@@^' ^^' ^^^^''' '^@@@@@@@ @@@@@@@ '^@@@ ^v ,@@@@@@ ' @@@@@^ ^@@@' '' ' ,,vv,,, ,,,vvvvvv,,,,,,,,vvvvv,, ,,,,,,vvv@@@@@@@@@@@@@ ,vv@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@vvvv,,,,,,,, ,,,,,,, ,,,,*' ,v@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,vv@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^' vvvv@@@@@@@@@@@@@@@@@@@@@@@@v@@@@@@@@@@@@@^' ,,vv@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^^' ^@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@vvvv,,,,,,,,,,,,,,,vvvvv@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@vv,,, vvv,,,,::@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@vvvvvvv
  35. mame.rb eto award “Most global” $ ruby entry.rb dump 40

    36 140 ,,,,,vvvvvvvvv, vv@@@@@@@@@@@@@@@@@@, ,,,,,, **,,,, ''^@@@@@@@@@@@@@@@@ , ,,vvv@@@@@@@@@@@@vvv,, ,,,,,,,,,,,,,,,, ,,vvvvvvvvvvvvvvvvvv,,,,vvvvv@@@@@@' '@@@vv, '@@@@@@@@^''' ,v@@@@@vvvv, ,,,,,,,,@,v@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@, @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@' '^^@@' '^^^' v@@@^v@@@@@@v@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^^ '''' '''^@@@@@@@@@@@@@@@@@@@ @@vv,, , @@@@' ,v@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^^^'''' v^^''' '^@@@@@@@@@@@@@@@@@@v, @@@@@@@@@v, @v,,@@@@@@v@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ *' '@@@@@@@@@@@@@@@@@@@@@@@@@@^^'',@ ^':@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@* ^@@@@@@@@@@@@@@@@@@@@@@@v** ''' v@@@@@@@'@@@@@^'''''''''^@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@' '@@@@@@@@@@@@@@@@@@@^'' ,@@@^'' '@ '@@' ,,,,,,v@, @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@' '@@@@@@@@@@@@@@@@@@ '':,,,vvv, '@@@@@@v@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'^@ vX '@@@@@@@@@@@@^@@@ v@@@@@@@@@@,,,,,,,,,@@@@@^@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@' '@^@@@@@@^' '^' v@@@@@@@@@@@@@@@@@@:@@@@@@v ''^^@@@@@@@@@@@@@@@@@@@@@@@@@ ^@@@v @@@@@@@@@@@@@@@@@@@@@v^@@@@@@@@v ''^@@@@@@@@^@@@@@@@^^'' '^^@v@' @@@@@@@@@@@@@@@@@@@@@@@v'@@@@^' @@@@^'' '@@@@: ''^@@ @@@@@@@@@@@@@@@@@@@@@@@@@, ^' @@ @@@@v '* ,,,,,vvv ^@@@@@@@@@@@@@@@@@@@@@@@@vvv* ' :^@^' , @@@@@@@@@@v ^^^^^^^^^@@@@@@@@@@@@@@@@' , ' @@@@@@@@@@@@v ^@@@@@@@@@@@@@^ v@@ vv @@@@@@@@@@@@@@@@vv,, ^@@@@@@@@@@@' , ^^' '' '*vv,, ^@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@, ''^^*, '^@@@@@@@@@@@@@@@^ @@@@@@@@@@@@ ,vv, ,v '^@@@@@@@@@@@@@ @@@@@@@@@@@@' @' ,v@@@@@@v@@v @@@@@@@@@@@@' '@@@@@@@@@@' ' ,v@@@@@@@@@@@@@v @@@@@@@@@@' '@@@@@@@@ ^@@@@@@@@@@@@@@@v @@@@@@@@^'^ '@@@^'' @@@@@@^@@@@@@@@@ @@@@@@' ' ''' '^@@@@@ , v@@@@@' '^ '' @@@@@' @@@^ '' , ,,vvv@@vvv,, ,,,,vvv@@@@@@vvvvvv@@@@@vvv,,, , ,vvvvvvvvvvvvvvvv@@@@@@@@@@@@@@@@@ ,,vv@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@vvvv* ,,,,vvvv@@@@vvvvvvvvvv,,,,,,vvvvvvvvv@^' ,vv@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^' ^@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@v,,,, ,,,,,,vvv@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,, ,,,,,,:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@vvvvvvvv, 36°N 140°E Here! This feature is an homage to IOCCC 1992 "Best Small Program"
  36. mame.rb • Judges' comments – eto: Earth! High artistic point.

    It contains polygon data of the world map. Very interesting. – shinh: The compression ratio looks amazing. I think there is enough difference from "Qlobe". – mame (camouflage comment): It is almost the same as my "Qlobe", but there seems to be enough novelty in the technical aspect. eto award “Most global”
  37. Winner » eto shinh yhara matz leonid flagitious mame score

    “Most accessible” 『最もアクセシビリティがある賞』 Yutaka HARA leonid award 8 6 N/A 9 10 8 8 8.00
  38. yhara.rb leonid award “Most accesible” %;;;;Symbol.define_method(:method_missing){|n|t="#{self}#{n[..-2]}"; n[-1]=="⠠" && eval(t.unpack("U*").map{((_1&64)/8+(_1&56)*2+(_1&135)).chr}*""+t)||:"#{self}#{n}"} :⠥⠥⠥⠐⡝⠐⠒⡬⠽⠚⡘⠚⠘⠒⡂⡦⠐⡝⠐⡘⠙⡂⠴⠵⠶⠐⠶⠼⡐⠻⡑⠐⠓⡕⡞⠐⠫⠼⠺⡱⡶⠷⡂⠼⡝⡫⡭⡂⡴⡝⠻⡖⠳⡰⠱⠺⠻⡂⠶⡔⠺⡝⡴⡫⠘⡔⡦⡕⠙⡭⡔⡴⡫⡦⡕⠙⡖⡖⡭⡂.

    ⠼⡜⡜⠒⡚⠓⡻⠶⡖⡲⡷⡱⡶⡽⡖⠒⡂⡒⠱⡔⡺⡝⠺⡖⠵⠱⠳⡰⡯⠻⡴⡱⠳⠵⡐⡦⡑⡖⡵⠱⠸⡐⠖⡚⡲⡷⡱⡶⡑⡂⠱⡖⠵⠱⠳⡰⡻⡼⡴⡼⠐⠼⡜⡜⠒⠓⡻⡴⡽⡖⠒⡽⡂⠼⡜⡜⠒⠓⡻⡺⡽. ⠓⡻⠥⠥⠥⡽⠒⡂⠼⡖⡲⡷⡱⡶⡐⠒⡬⡶⠒⡑⡂⠵⡶⠴⡂⡠⠐⡝⠐⠕⠹⡻⠕⡛⡛⡛⡛⠫⡹⡵⠲⡷⡴⡖⠴⠵⠶⡱⡶⠵⡯⡵⠵⠼⡰⡷⠴⡐⡚⡵⠵⠼⡰⡷⠴⡯⡵⡱⠻⠻⡱⡶⠷⡑⡻⡼⡶⡼⠼⡝⠒. ⠓⡻⠻⠵⡴⠶⡽⠓⡻⡶⡫⡖⡖⡕⠚⡭⡽⠒⡛⠐⡶⡫⡕⠙⡭⡝⡝⠒⡬⠽⠚⡘⠚⠘⠒⠐⠖⠖⡂⠵⠾⠱⡴⡐⠼⡖⠽⡶⠸⠱⠳⡳⡐⠒⠭⡒⠒⡑⡖⡵⠱⠸⡻⡐⡐⡯⠙⠖⠞⠜⡑⡗⡘⡓⡐⡯⠙⠖⠝⠞⡑. ⡒⠚⡓⡐⡯⠙⠖⠙⠛⠝⡑⡑⡖⠳⡰⠺⡽⡒⠒⠒⡓⠼⡑⡼⡼⡚⠒⠓⡻⠻⠵⡴⠶⡽⠓⡻⡶⡽⠒⡽⡂⡽⡖⠷⠻⠽⠲⠐⠒⡬⡬⠽⠚⡘⠚⠘⠒⡔⠒⡬⠽⠚⡘⠚⠘⠒⡂⡠⡠⠐⡝⠐⡠⡖⠷⠻⠽⠲⠐⡗⡖. ⡗⡔⠒⠐⠒⡂⠴⠵⠶⠐⠴⠵⠳⡐⠳⡑⡂⠺⠵⠼⠽⠺⡶⠐⠳⠐⡱⠶⠐⠳⡝⡝⠒⡚⠒⡼⡼⠳⡝⡝⠒⡖⠒⡂⠽⠐⡝⠐⠳⡖⠽⡶⠸⠱⠳⡳⡐⠒⠭⡒⠒⡑⡫⠘⡭⡂⡐⠽⠖⠞⠜⡑⡗⡘⡓⡐⠽⠖⠝⠞⡑. ⡒⠚⡓⡐⠽⠖⠙⠛⠝⡑⡂⠵⡶⠴⡂⠴⠵⠶⠐⠺⠴⡐⠸⡸⡔⠐⠿⡔⠐⡰⡑⡂⡐⠘⡖⡖⡖⡰⡗⠜⡑⡖⠵⠱⠳⡰⡻⡼⠾⡼⡂⡐⠘⡖⡖⡖⠿⡗⠚⡑⡖⠵⠱⠳⡰⡻⡼⠽⡼⡂⡸⡝⠽⡒⠚⡛⡹⡝⠾⡒⠜. ⡂⡳⡝⠸⡸⡫⡹⡭⡫⡸⡭⡂⡱⠶⠐⠫⠼⠺⡱⡶⠷⡝⡝⡝⡳⠐⡂⠸⠺⡱⡶⠼⠐⡳⡂⠵⡴⠻⡱⠶⠐⡳⡂⡶⡝⠸⡸⡫⡹⡭⡫⡸⡭⡼⠸⡸⡫⡹⡭⡫⡸⡓⠙⡭⡜⡜⠛⡼⡂⠸⡸⡫⡹⡓⠙⡭⡫⡸⡭⡜⡜. ⠙⡼⠸⡸⡫⡹⡓⠙⡭⡫⡸⡓⠙⡭⡜⡜⠜⡼⡂⠸⡸⡫⡹⡓⠚⡭⡫⡸⡭⡜⡜⠚⡼⠸⡸⡫⡹⡓⠚⡭⡫⡸⡓⠙⡭⡜⡜⠝⡼⡂⠸⡸⡫⡹⡓⠛⡭⡫⡸⡭⡜⡜⠞⡼⠸⡸⡫⡹⡓⠛⡭⡫⡸⡓⠙⡭⡜⡜⠟⡂⠸. ⠺⡱⡶⠼⠐⡫⠘⡸⠚⡘⠘⠘⡓⡶⡭⡖⠸⠱⠳⡳⡐⠒⠭⠒⡑⡂⠵⡶⠴⡂⡽⡂⠸⠽⠼⠻⡂⡽⡂⠵⡶⠴⡂⠴⠵⠶⠐⠺⠽⡶⡐⡸⡑⡂⠸⠺⡱⡶⠼⠐⠒⠕⠕⡬⡶⡬⠵⡫⠚⡢⠒⡂⠳⠳⡝⠶⠼⡐⡸⡖⠼. ⡷⡯⠻⡑⡖⡴⡱⡶⠵⠻⡖⡵⠱⠸⡻⡯⠙⡖⠳⡰⡷⡵⠸⡖⠳⡰⠱⠺⠻⡽⡂⡵⠻⡝⠳⠳⡖⠶⡴⠱⠼⡯⡵⠱⠸⡻⡼⠺⡷⠿⡼⡂⡐⠘⡖⡖⠛⡑⡖⡵⠱⠸⡻⡼⡹⡹⡼⡂⠺⡷⠿⡖⠶⡴⠱⠼⡯⡵⠱⠸⡻. ⡼⠳⡼⡂⡶⡝⠴⠵⠳⡐⠳⡑⡂⡱⠶⠐⡡⡶⠼⠵⠷⠵⠺⡝⡝⡝⡶⡂⡫⡶⡫⡹⡹⡓⠘⡭⡔⡶⡫⡹⡹⡓⠜⡭⡭⡂⠵⡴⠻⡱⠶⠐⡹⡹⡝⡝⠘⡂⡫⡶⡔⠘⡭⡂⠵⡴⠻⠵⡂⡫⠘⡔⠘⡭⡂⠵⡶⠴⡂⡽⡂. ⡽⡂⡽⡂⠳⠺⡝⡵⠻⡖⡵⠱⠸⡻⡯⠙⡖⡵⠱⠸⡻⠘⡽⡽⡂⡰⡝⠳⠺⡖⠻⡱⡺⠵⡂⠿⡝⠳⠺⡫⠘⡭⡖⠻⡱⡺⠵⡂⠾⡝⡐⠘⡖⡖⡖⠿⡑⡖⠶⡴⠱⠼⡯⡵⠱⠸⡻⡼⡸⡼⡐⠘⡖⡖⡖⡰⡑⡖⡵⠱⠸. ⡻⡼⡹⡼⡫⡸⡔⠐⡹⡭⡽⡽⡖⠻⡰⠽⠶⠶⡴⠵⡂⡶⡝⠙⡂⠴⡶⡝⠙⡖⠘⠚⠘⡂⡴⡷⡷⠸⠐⠴⡷⡂⠸⠺⡱⡶⠼⠐⠒⡬⠵⡫⠙⡛⠙⡠⠒⡂⡶⡖⠶⡴⡷⡷⠺⡖⠼⡱⡵⠵⠻⠐⠴⡷⡂⡸⡔⡹⡝⠾⡖. ⠻⡰⡱⠶⠼⡂⠳⡝⡵⠻⡫⡹⡭⡫⡸⡭⡂⠳⠺⡫⡹⡭⡫⡸⡭⡝⠳⠐⡱⠶⠐⠳⡂⠾⡖⠵⡵⠸⠼⡹⡟⠖⠖⠲⠺⠵⠱⡳⡂⠵⡶⠴⡂⡶⡒⡝⠴⡶⡂⠸⠽⠼⠻⠐⡠⡠⡂⠺⠴⠐⠳⠺⡔⠿⡔⡰⡂⠻⡴⠵⠵. ⠸⠐⠘⡖⠘⠙⡂⠲⠺⠵⠱⡳⠐⡱⠶⠐⠾⡖⠵⡵⠸⠼⡹⡟⡂⠵⡶⠴⡂⠸⠺⡱⡶⠼⠐⠒⡬⠵⡫⠙⡛⠙⡠⠒⡂⠸⠽⠼⠻⠐⡠⡂⠸⠽⠼⠻⠐⠳⠳⡖⡵⠱⠸⡐⠖⡚⡲⡷⡱⡶⡑⡂⠵⡶⠴⡂⠺⠽⡶⠐⡚⠠
  39. yhara.rb • The braille part is a symbol and method

    chain • This braille part represents the main code – Eight-dot braille represents a byte (8-bit) sequence leonid award “Most accesible” :⠥⠥⠥ … ⡖⡭⡂. ⠼⡜⡜⠒ … ⡻⡺⡽. ⠓⡻⠥⠥ … ⠼⡝⠒. ︙ ︙ ⠸⠐⠘⡖ … ⡶⠐⡚⠠ Symbol's colon Symbol's body method call's period method name
  40. yhara.rb • Judges' comments – eto: Cool animation that the

    dots appear slowly. It's unprecedented as the beauty of the source code. – shinh: Very impressive. – mame: Abuse of Braille! leonid award “Most accesible”
  41. Winner » eto shinh yhara matz leonid flagitious mame score

    “Most orderly code” 『最も整然としたコードで賞』 Tomoya Ishida (tompng) shinh award 7 10 10 7 8 9.5 9 8.64
  42. tompng.rb shinh award “Most orderly code” rule = $*[00]&.to_i ||

    30 h ||= $*[01]&.to_i || 32 [ % if % TRICK-2022 %% %] # ] if a /%{(?<a>)/ =~ %} if + %} - %[ # } if b /%<(?<b>)/ =~ %> if - %> + %{ # > if c /%+(?<c>)/ =~ %+ if + %+ - %< # + if d /%-(?<d>)/ =~ %- if - %- + %+ # - if e f, g, h, / =~ %/ if def e(f, g, h, *) = # + if d /%-(?<d>)/ =~ %- if g.map! do rule.[] _1.join.to_i 2 end.! # > if c /%+(?<c>)/ =~ %+ if !(g = *[g[-1], *g, g[0]].each_cons(3)) # } if b /%<(?<b>)/ =~ %> if puts(g.join.tr '01', ' #') || h > 0 && # ] if a /%{(?<a>)/ =~ %} if !g ||= [*g = [0] * h, 1] + g if h -= 1 eval(File.read f ||= __FILE__)
  43. tompng.rb • One-dimensional cellular automaton shinh award “Most orderly code”

    $ ruby tompng3/entry.rb # ### ## # ## #### ## # # ## #### ### ## # # # ## #### ###### ## # ### # ## #### ## # ### ## # # #### ## # ## #### ## # # #### ## # ### ## ## # # ## #### ## ### ### ## ### ## # # ### # ### # # ## #### ## # # ##### ####### ## # ### #### # ### # ## #### ## ### ## ## # ### ## # # ### # ## ### #### ## # ## #### ## # ###### # # ### #### ## # ### #### #### ### ## # # ## #### ## ### # ## # # # ### ### ## # # ### # ### ## # ### ## # # # # ## #### ## # ### # # #### # # ## ###### ## # ### #### ## ##### # ##### # # # ## #### ## ### # ## # # ## # ##### ### ## # # ### # ## # #### ## # ## ## # ## # ## #### ## # ### # # # ### #### # ## # ## # #### ## # ### #### #### ## ## ### # # #### # # # ## #### ## ### # ## # # ### # ## #### ### ## ### ## # # ### # ## # # ##### # ###### # # ## # # # ## #### ## # ### # # #### #### #### ## # # ######### $ ruby tompng3/entry.rb 90 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
  44. tompng.rb • It is very difficult to read this piece

    • The main TRICK: – If a local variable x is defined, it is a division – If a local variable x is not defined, it is a method call shinh award “Most orderly code” x /y #/ x(/ y #/) x / y #/
  45. tompng.rb • A simplified version shinh award “Most orderly code”

    a /%!(?<a>)/ =~ %! if + %! - %[ #! if (code2; exit) #] if (code1; false) eval(File.read($0)) a /%!(?<a>)/ =~ %! if + %! - %[ #! if (code2; exit) #] if (code1; false) eval(File.read($0)) a /%!(?<a>)/ =~ %! if + %! - %[ #! if (code2; exit) #] if (code1; false) eval(File.read($0)) a /%!(?<a>)/ =~ %! if + %! - %[ #! if (code2; exit) #] if (code1; false) eval(File.read($0)) method call regexp (and defines a) string literal string literal
  46. tompng.rb • A simplified version – This executes "code1" and

    reloads itself – Note that a local variable "a" is now defined! shinh award “Most orderly code” a /%!(?<a>)/ =~ %! if + %! - %[ #! if (code2; exit) #] if (code1; false) eval(File.read($0))
  47. tompng.rb • With a local variable "a" defined shinh award

    “Most orderly code” a /%!(?<a>)/ =~ %! if + %! - %[ #! if (code2; exit) #] if (code1; false) eval(File.read($0)) a /%!(?<a>)/ =~ %! if + %! - %[ #! if (code2; exit) #] if (code1; false) eval(File.read($0)) a /%!(?<a>)/ =~ %! if + %! - %[ #! if (code2; exit) #] if (code1; false) eval(File.read($0)) a /%!(?<a>)/ =~ %! if + %! - %[ #! if (code2; exit) #] if (code1; false) eval(File.read($0)) string literal string literal comment division
  48. tompng.rb • When a local variable "a" defined – Execute

    "code2" • This code executes "code1" and then "code2" as a whole shinh award “Most orderly code” a /%!(?<a>)/ =~ %! if + %! - %[ #! if (code2; exit) #] if (code1; false) eval(File.read($0))
  49. tompng.rb shinh award “Most orderly code” rule = $*[00]&.to_i ||

    30 h ||= $*[01]&.to_i || 32 [ % if % TRICK-2022 %% %] # ] if a /%{(?<a>)/ =~ %} if + %} - %[ # } if b /%<(?<b>)/ =~ %> if - %> + %{ # > if c /%+(?<c>)/ =~ %+ if + %+ - %< # + if d /%-(?<d>)/ =~ %- if - %- + %+ # - if e f, g, h, / =~ %/ if def e(f, g, h, *) = # + if d /%-(?<d>)/ =~ %- if g.map! do rule.[] _1.join.to_i 2 end.! # > if c /%+(?<c>)/ =~ %+ if !(g = *[g[-1], *g, g[0]].each_cons(3)) # } if b /%<(?<b>)/ =~ %> if puts(g.join.tr '01', ' #') || h > 0 && # ] if a /%{(?<a>)/ =~ %} if !g ||= [*g = [0] * h, 1] + g if h -= 1 eval(File.read f ||= __FILE__) rule = $*[00]&.to_i || 30 h ||= $*[01]&.to_i || 32 [ % if % TRICK-2022 %% %] # ] if a /%{(?<a>)/ =~ %} if + %} - %[ # } if b /%<(?<b>)/ =~ %> if - %> + %{ # > if c /%+(?<c>)/ =~ %+ if + %+ - %< # + if d /%-(?<d>)/ =~ %- if - %- + %+ # - if e f, g, h, / =~ %/ if def e(f, g, h, *) = # + if d /%-(?<d>)/ =~ %- if g.map! do rule.[] _1.join.to_i 2 end.! # > if c /%+(?<c>)/ =~ %+ if !(g = *[g[-1], *g, g[0]].each_cons(3)) # } if b /%<(?<b>)/ =~ %> if puts(g.join.tr '01', ' #') || h > 0 && # ] if a /%{(?<a>)/ =~ %} if !g ||= [*g = [0] * h, 1] + g if h -= 1 eval(File.read f ||= __FILE__) main part executed in reverse order
  50. tompng.rb • Judges' comments – shinh: Ruby is Lisp-2 but

    not Lisp. This piece makes good use of this fact. I like it. – yhara: Definitely the hardest to read. – flagitious: Cool cellular automaton based on parsing trick, no eval abuse, short. – mame: Amazing obfuscation unique to Ruby! shinh award “Most orderly code”
  51. Winner » eto shinh yhara matz leonid flagitious mame score

    “Most anti-gravity” 『最も反重力で賞』 Yusuke Endoh 8 10 9 8 9 9 N/A 8.83
  52. “Most anti-gravity” mame2.rb 2022;"# .chars} {puts'TRICK+2022' ¥ { ; #';$><<

    b ?! };#{s=' ' # 0 ! s[0]? ( b=$<.read ;' } ub( ,''} ';a= ''<<32 b.lines {puts( ?.. *( b.size) .gsub(/./) { b.sub!( /^#$`¥K(¥S) /x,a)?$1:a } .rstrip)}): ( [ 12,1,12,11]. cycle { | i | t = ( s * 10<< 10)* 10+ %(¥e[A)* 10 10. times{t[i* _1 ] = 'TRICK+2022'[ _1 ] };$><<t sleep 1}) }" Ticker of "TRICK+2022"
  53. “Most anti-gravity” mame2.rb 2022;"# .chars} {puts'TRICK+2022' ¥ { ; #';$><<

    b ?! };#{s=' ' # 0 ! s[0]? ( b=$<.read ;' } ub( ,''} ';a= ''<<32 b.lines {puts( ?.. *( b.size) .gsub(/./) { b.sub!( /^#$`¥K(¥S) /x,a)?$1:a } .rstrip)}): ( [ 12,1,12,11]. cycle { | i | t = ( s * 10<< 10)* 10+ %(¥e[A)* 10 10. times{t[i* _1 ] = 'TRICK+2022'[ _1 ] };$><<t sleep 1}) }" 2022;"# .chars}{puts'TRICK+2022' ¥{; #';$><<b ?! };#{s=''#0 !s[0]?(b=$<.read;' }ub(,''} ';a=''<<32 b.lines{puts(?..*( b.size).gsub(/./){ b.sub!(/^#$`¥K(¥S) /x,a)?$1:a} .rstrip)}): ([12,1,12,11]. cycle{|i|t=(s* 10<< 10)* 10+%(¥e[A)* 10 10.times{t[i* _1]='TRICK+2022'[ _1]};$><<t sleep1}) }" left gravity "Upward gravity" program
  54. “Most anti-gravity” mame2.rb 2022;"# .chars} {puts'TRICK+2022' ¥ { ; #';$><<

    b ?! };#{s=' ' # 0 ! s[0]? ( b=$<.read ;' } ub( ,''} ';a= ''<<32 b.lines {puts( ?.. *( b.size) .gsub(/./) { b.sub!( /^#$`¥K(¥S) /x,a)?$1:a } .rstrip)}): ( [ 12,1,12,11]. cycle { | i | t = ( s * 10<< 10)* 10+ %(¥e[A)* 10 10. times{t[i* _1 ] = 'TRICK+2022'[ _1 ] };$><<t sleep 1}) }" 2022;"# {puts'TRICK+2022'} .chars} ¥ #{b=$<.read;0;'( #';$><< b .gsub(''<<32,'') };#?!=' ' 12,{puts()?..¥*: !;s{s]? ( i |ub(/./`¥{(}S* }.a[0es [ = s/x/^#$$1Ka[}[ '.l=ne) | 1,,a)?ri:)2) b.siz!( ] 't.rst1]p* i bysib1( ] lT12,1[s.* ' b0cue1{ }%=¥(eA)t c0<l_ eR(ie+s{2 10)<_ ;tCm<20 10+* eI>K}t 10. }$ < ) 1 p 1 1 " upward gravity "Left gravity" program
  55. “Most anti-gravity” mame2.rb 2022;"# .chars} {puts'TRICK+2022' ¥ { ; #';$><<

    b ?! };#{s=' ' # 0 ! s[0]? ( b=$<.read ;' } ub( ,''} ';a= ''<<32 b.lines {puts( ?.. *( b.size) .gsub(/./) { b.sub!( /^#$`¥K(¥S) /x,a)?$1:a } .rstrip)}): ( [ 12,1,12,11]. cycle { | i | t = ( s * 10<< 10)* 10+ %(¥e[A)* 10 10. times{t[i* _1 ] = 'TRICK+2022'[ _1 ] };$><<t sleep 1}) }" 2022;"# {puts'TRICK+2022'} .chars} ¥ #{b=$<.read;0;'( #';$><< b .gsub(''<<32,'') };#?!=' ' 12,{puts()?..¥*: !;s{s]? ( i |ub(/./`¥{(}S* }.a[0es [ = s/x/^#$$1Ka[}[ '.l=ne) | 1,,a)?ri:)2) b.siz!( ] 't.rst1]p* i bysib1( ] lT12,1[s.* ' b0cue1{ }%=¥(eA)t c0<l_ eR(ie+s{2 10)<_ ;tCm<20 10+* eI>K}t 10. }$ < ) 1 p 1 1 " 2022;"#{puts'TRICK+2022'} .chars}¥#{b=$<.read;0;'( #';$><<b.gsub(''<<32,'') };#?!=''12,{puts()?..¥*: !;s{s]?(i|ub(/./`¥{(}S* }.a[0es[=s/x/^#$$1Ka[}[ '.l=ne)|1,,a)?ri:)2) b.siz!(]'t.rst1]p*i bysib1(]lT12,1[s.*' b0cue1{}%=¥(eA)t c0<l_eR(ie+s{2 10)<_;tCm<20 10+*eI>K}t 10.}$<) 1p1 1" Prints "TRICK+2022" up and then left
  56. “Most anti-gravity” mame2.rb 2022;"# .chars} {puts'TRICK+2022' ¥ { ; #';$><<

    b ?! };#{s=' ' # 0 ! s[0]? ( b=$<.read ;' } ub( ,''} ';a= ''<<32 b.lines {puts( ?.. *( b.size) .gsub(/./) { b.sub!( /^#$`¥K(¥S) /x,a)?$1:a } .rstrip)}): ( [ 12,1,12,11]. cycle { | i | t = ( s * 10<< 10)* 10+ %(¥e[A)* 10 10. times{t[i* _1 ] = 'TRICK+2022'[ _1 ] };$><<t sleep 1}) }" Prints "TRICK+2022" vertically left and then up 2022;"# .chars}{puts'TRICK+2022' ¥{; #';$><<b ?! };#{s=''#0 !s[0]?(b=$<.read;' }ub(,''} ';a=''<<32 b.lines{puts(?..*( b.size).gsub(/./){ b.sub!(/^#$`¥K(¥S) /x,a)?$1:a} .rstrip)}): ([12,1,12,11]. cycle{|i|t=(s* 10<< 10)* 10+%(¥e[A)* 10 10.times{t[i* _1]='TRICK+2022'[ _1]};$><<t sleep1}) }" 2022;"#{puts'TRICK+2022' .chars}b#0<.read;' ¥{;$><<'=$ts(?..*( #';{s='b32ub(/./){ ?!#0]?(}pu$`¥K(¥S) };[(,''<gs}1].2'[ !sb=''<{^#:(s* }uaines.:a1i*2 ';lize)/})=20 b.sub!(12,* b.sa)?$)|t[ b.,trip1A)+ /xs2,1,i{t .r1le{|[CK ([c<(¥es<t cy<*imeI 10)%'TR< 10+t;$>) 10.=p1} 10]} 10]e _1e _1 sl }"
  57. • The TRICK for left gravity • The TRICK for

    upward gravity “Most anti-gravity” mame2.rb "¥ #{code1} # {code2}" "¥#{code1} #{code2}" left gravity "x x#{code1} xx{code2} " "x{code1} x#{code2} xx " upward gravity
  58. • Judges' comments – shinh: Various things by gravity. Wow,

    it's so fun! – yhara: Very tricky - essentially five programs are condensed into one. – flagitious: My brain hurts, horizontal/vertical is a bit of a gimmic (not generic, but still) – mame (camouflage comment): I think this piece would be the most difficult to implement in TRICK 2022 “Most anti-gravity” mame2.rb
  59. Winner » eto shinh yhara matz leonid flagitious mame score

    “Most interactive code” 『最もインタラクティブなコードで賞』 Tomoya Ishida (tompng) 10 7 10 10 9 8 8 8.86
  60. “Most interactive code” tompng2.rb q=->{!sleep _1/1e2};p=( c=0..2).map{[_1/9r ,0,5**_1.i/3,1,0]} require'socket';puts'op' "en

    http://localhost:#{( w=TCPServer.new$*[0]||0).addr[1]}";Thread.new{q[2];f=[-1 ]*s=3;t=Time.now.to_f;p.select!{0<_1[3]=[_1[3]+_1[4]/8.0,1 ].min};9.times{h=p.map{[2**(_1*t.i)/_4**0.5/(1+Math.sin(2*t- 9*_1%2)**32/16),_2+_4*( _3-_2)]};r=[s*3/2,84].min;g=->{x,y= (s*(1+_1+1i)/2).rect;x<0 ||x>=s-1||y<0||y>=s-1?0:((l=f[y+1])[ x+1]*(a=x%1)+(1-a)*l[x] )*(b=y%1)+(1-b)*((l=f[y])[x+1]*a+(1- a)*l[x])};f=(1..r).map {|y|(1..r).map{|x|z=1.5+1.5i-3.0*(y .i+x)/r;[h.sum{g[_1.*z +_2]}*0.9,1].min}};s=r};c=f.flatten redo};loop{s=w.accept ; Thread.new{r=s.gets;h='HTTP/1.1 '+ "200 OK¥r¥nContent-" 'T' "ype:text/html¥r¥n¥r¥n";r['/ ']?s. <<(h+'<style>ifram' 'e{' 'opacity:0;height:0;}input{wid'+ 'th:252px;}</styl' 'e>' '<form target="i"><input src="'+ "g#{rand}¥" type" '="im' 'age"><iframe name="i"></ifra'+ 'me></form>'):r ['/g'] ?(h[/:.+l/]=?:'image/gif';s<< h+'GIF8' '7a'+[84, 84,246,0,*(0..383).map {15*_1. /(383r)**(3-_1% 3)*17}].pack('v3c*'); loop{ s<<[67434785,5, 44,84,84,7,c.map{_1* 127} .each_slice(126 ).map{[127,128,*_1 ] .pack'c*'}*'', 1,129].pack('V3x' 'v2na*c2x');q[ 5];q.[]1while(r ==r=c)}):(x,y, z=r.scan(/¥d+/).map{_1.to_f/ 126-1};z&&p<<[rand-0.5,( z=x+y.i)*1.5,z/(z. abs+0.9),0,-p[ -3][4]=-1] s.<<h);s .close }}
  61. • A fractal organism with a pulse – You can

    tweak it with a mouse click • No JavaScript, no canvas, no HTML5! • Pre-HTML5 technologies – Endless streaming of an animated GIF – <input type="image"> • This element tells the click position to the server with a GET request like /?x=50&y=100 “Most interactive code” tompng2.rb
  62. “Most interactive code” tompng2.rb q=->{!sleep _1/1e2};p=( c=0..2).map{[_1/9r ,0,5**_1.i/3,1,0]} require'socket';puts'op' "en

    http://localhost:#{( w=TCPServer.new$*[0]||0).addr[1]}";Thread.new{q[2];f=[-1 ]*s=3;t=Time.now.to_f;p.select!{0<_1[3]=[_1[3]+_1[4]/8.0,1 ].min};9.times{h=p.map{[2**(_1*t.i)/_4**0.5/(1+Math.sin(2*t- 9*_1%2)**32/16),_2+_4*( _3-_2)]};r=[s*3/2,84].min;g=->{x,y= (s*(1+_1+1i)/2).rect;x<0 ||x>=s-1||y<0||y>=s-1?0:((l=f[y+1])[ x+1]*(a=x%1)+(1-a)*l[x] )*(b=y%1)+(1-b)*((l=f[y])[x+1]*a+(1- a)*l[x])};f=(1..r).map {|y|(1..r).map{|x|z=1.5+1.5i-3.0*(y .i+x)/r;[h.sum{g[_1.*z +_2]}*0.9,1].min}};s=r};c=f.flatten redo};loop{s=w.accept ; Thread.new{r=s.gets;h='HTTP/1.1 '+ "200 OK¥r¥nContent-" 'T' "ype:text/html¥r¥n¥r¥n";r['/ ']?s. <<(h+'<style>ifram' 'e{' 'opacity:0;height:0;}input{wid'+ 'th:252px;}</styl' 'e>' '<form target="i"><input src="'+ "g#{rand}¥" type" '="im' 'age"><iframe name="i"></ifra'+ 'me></form>'):r ['/g'] ?(h[/:.+l/]=?:'image/gif';s<< h+'GIF8' '7a'+[84, 84,246,0,*(0..383).map {15*_1. /(383r)**(3-_1% 3)*17}].pack('v3c*'); loop{ s<<[67434785,5, 44,84,84,7,c.map{_1* 127} .each_slice(126 ).map{[127,128,*_1 ] .pack'c*'}*'', 1,129].pack('V3x' 'v2na*c2x');q[ 5];q.[]1while(r ==r=c)}):(x,y, z=r.scan(/¥d+/).map{_1.to_f/ 126-1};z&&p<<[rand-0.5,( z=x+y.i)*1.5,z/(z. abs+0.9),0,-p[ -3][4]=-1] s.<<h);s .close }} fractal web server GIF encoding
  63. • Judges' comments – eto: Heart-shaped code. It is very

    beautiful. – shinh: Sending GIF stream is interesting. The author should advocate ARAG (Async Ruby and Gif) instead of AJAX (Async JS and XML). – yhara: Good example of how Ruby is good at network programming. It reacts to mouse click, wow! – flagitious: Cool that it is interactive. “Most interactive code” tompng2.rb
  64. Winner » eto shinh yhara matz leonid flagitious mame score

    “Best fishbowl” 『最高の金魚鉢で賞』 Tomoya Ishida (tompng) 9 9 9 9 N/A 9.5 9 9.08
  65. “Best fishbowl” tompng3.rb eval((s=%~c=(0..35 ).map{s[2*_1+1]}*'';class$Inte ger;def$quXinclude(Math ;spXo(a)=self* a.pow(87X=h=32.chr;g=PI/480;ls=(sp*31X,89)%89; def$abX+'eval((s=%'+(n=? .next)+s*88.chr+[nXs()=[a

    =self%X+'.split(',sp*25+'?'+88.chr+');(0..36).mapX89,89- a].miX{s[2*_1].split}',sp*31+".join.tr('$',$/)))"]*$/)Xn;end ;reqX.split$/;trap(:INT){puts;exit};q=->t,i{a,y=((t+i*99)Xuire 'matrX%960). ivmod(80);[(a*(7+i)+i*23)%79+(y+a)/(5+i%4)%2,39Xix';1 5.tiX-y/2]};p=->t,u{a=->b,c{(0..5).sum{(u%2-1)*E**(t*(b+c*_1)*gXmes{ |i,*X.i+ i*u+=5+sin(u*u))}};x,z=a[5,3]. 5,3].rect;x+=y.Xv|z= *?!Xi a[19,4];z+=w;r=(4+(x.abs+z.i).ab };t=(0..959).fX..? W,?Xind{|t|(0..29).all?{x,y=q[t,_1];(x 2||h=ls[y][x]X[,* ?]..X[/[^!-}]/]}};h=($**h+h).chr;eval( []} ->(x,yX?};a =(0X,a,b){x=x*36+39.5;y=19.5-y*18;b*=1 |i|((yX..1 34)X-b).ceil..y+b).map{|j|((x-i)/a+(y j)/ .times{X.ma p{zXx,z=p[t,_1];l=u```=0;while``````(l<1)``; u+```=0 ;d=x-y;X.in dex(Xl+=(d.abs+(z-w``)``.i).ab``s*1.``1 ;x``,z=y``,w;o[v``=``x.r d.imag/Xc[i+ 15*Xd.abs*l*sin(2*``l-t``*g*80``-_1) l*(``1-l)/``6,a``=l*( -l)**2*0.X_1] )};X7,a*2]&&o[v,z,``0.0``3,l**`` ``times``{|i``|(8+i).times{|Xw=* MatXj|o[sin(i)/2+````` ```sin( `/2.0`````````)*j/200,j*0.0Xrix [*(X5-1,0.02,0.1]``}} ``. q[t,``_1];m``[y][x]= };i=-X0.. 44).X1;$><<(['%%','[H .map{|j|(0..79).map{|k|x=(Xmap{ |i,X -39.5)/35.8;y=( i+=1;m[j][k]?h:c[i]):ls[j]X*b| v<<X[k];}*''}*$/<<0) 1)%9 te"`")#iJw6$Dcc1]r*G"eDXa.z ip(X%P<M^Az!7?f*yxM `d"qi77UD*T!: .^B][T ?%:"w82/s3A[M]V %KbeX0.. ).suX5,G_=6D65#,zMaW $lsR=!Uvhio zb : dE:50obh|RgCTFfy*+)Xm{-( p=(XH0},JA>;rxRht+ ADjV;e&'/h Qg cO?,C%J a0mE+Qy2a9'X(i+ _2)X^):t|am}b`k>e zxd[HJ9 ony JC gucaew/gcoWRy_X**9 .1).X*]u+DL(&hH wc 8531x'b bd= } < z Say vJ@{?+$Xto_i %88+XV-GE'5^Va <9 *`?9b1 >_ } 8g 3 4 l zH_/o@j*2vX1)*( _1||(Xp]h"u=4- U. 0nz2- E9U #"pl=^ e E(=+x6s/pXb<<p; 0))}X3t_@K?C C& ^6(BE > K 2DA B8jDlS b* WpM(|t(2X;b}] .lup.X5R(B71 la u?5V? M(2 dP <S<,fo Qv >Fj4<?KXsolve (v);13X"$; wL b,l^f$ f,5 z R,PhV# pM w^7UX5.time s{c[i+X (8 NfbKS) 2*` I RW7zgh!P j6 tX15*_1] =z[a[_1]X enuc,T= Oi. > 5D=#(;(% ?X||w.shif t]}};eval(X9P lRQ S dq4M(Xc)~.split( ?X);(0..36).map{s[2*_1].split} .join.tr('$',$/)))
  66. • 960-frame fishbowl animation – Each frame is an executable

    Ruby code (Quine) • The animation does not insert whitespaces • But it replaces some characters with whitespace – Not trivial to restore the original code “Best fishbowl” tompng3.rb
  67. • Error-correcting codes with linear algebra • By using Matrix

    library – with monkey-patching Integer for modular arithmetic • Wait! May this error-correcting code be corrupted? “Best fishbowl” tompng3.rb require 'matrix' matrix = Matrix[[3, 1, 4], [1, 5, 9], [2, 6, 5]] class Integer def quo(x) = self * x.pow(87, 89) % 89 def abs() = [self % 89, 89 - self % 89].min end answer = matrix.lup.solve([1, 2, 3]) (matrix * answer).map { _1 % 89 }
  68. “Best fishbowl” tompng3.rb eval((s=%~c=(0..35 ).map{s[2*_1+1]}*'';class$Inte ger;def$quXinclude(Math ;spXo(a)=self* a.pow(87X=h=32.chr;g=PI/480;ls=(sp*31X,89)%89; def$abX+'eval((s=%'+(n=? .next)+s*88.chr+[nXs()=[a

    =self%X+'.split(',sp*25+'?'+88.chr+');(0..36).mapX89,89- a].miX{s[2*_1].split}',sp*31+".join.tr('$',$/)))"]*$/)Xn;end ;reqX.split$/;trap(:INT){puts;exit};q=->t,i{a,y=((t+i*99)Xuire 'matrX%960). ivmod(80);[(a*(7+i)+i*23)%79+(y+a)/(5+i%4)%2,39Xix';1 5.tiX-y/2]};p=->t,u{a=->b,c{(0..5).sum{(u%2-1)*E**(t*(b+c*_1)*gXmes{ |i,*X.i+ i*u+=5+sin(u*u))}};x,z=a[5,3]. 5,3].rect;x+=y.Xv|z= *?!Xi a[19,4];z+=w;r=(4+(x.abs+z.i).ab };t=(0..959).fX..? W,?Xind{|t|(0..29).all?{x,y=q[t,_1];(x 2||h=ls[y][x]X[,* ?]..X[/[^!-}]/]}};h=($**h+h).chr;eval( []} ->(x,yX?};a =(0X,a,b){x=x*36+39.5;y=19.5-y*18;b*=1 |i|((yX..1 34)X-b).ceil..y+b).map{|j|((x-i)/a+(y j)/ .times{X.ma p{zXx,z=p[t,_1];l=u```=0;while``````(l<1)``; u+```=0 ;d=x-y;X.in dex(Xl+=(d.abs+(z-w``)``.i).ab``s*1.``1 ;x``,z=y``,w;o[v``=``x.r d.imag/Xc[i+ 15*Xd.abs*l*sin(2*``l-t``*g*80``-_1) l*(``1-l)/``6,a``=l*( -l)**2*0.X_1] )};X7,a*2]&&o[v,z,``0.0``3,l**`` ``times``{|i``|(8+i).times{|Xw=* MatXj|o[sin(i)/2+````` ```sin( `/2.0`````````)*j/200,j*0.0Xrix [*(X5-1,0.02,0.1]``}} ``. q[t,``_1];m``[y][x]= };i=-X0.. 44).X1;$><<(['%%','[H .map{|j|(0..79).map{|k|x=(Xmap{ |i,X -39.5)/35.8;y=( i+=1;m[j][k]?h:c[i]):ls[j]X*b| v<<X[k];}*''}*$/<<0) 1)%9 te"`")#iJw6$Dcc1]r*G"eDXa.z ip(X%P<M^Az!7?f*yxM `d"qi77UD*T!: .^B][T ?%:"w82/s3A[M]V %KbeX0.. ).suX5,G_=6D65#,zMaW $lsR=!Uvhio zb : dE:50obh|RgCTFfy*+)Xm{-( p=(XH0},JA>;rxRht+ ADjV;e&'/h Qg cO?,C%J a0mE+Qy2a9'X(i+ _2)X^):t|am}b`k>e zxd[HJ9 ony JC gucaew/gcoWRy_X**9 .1).X*]u+DL(&hH wc 8531x'b bd= } < z Say vJ@{?+$Xto_i %88+XV-GE'5^Va <9 *`?9b1 >_ } 8g 3 4 l zH_/o@j*2vX1)*( _1||(Xp]h"u=4- U. 0nz2- E9U #"pl=^ e E(=+x6s/pXb<<p; 0))}X3t_@K?C C& ^6(BE > K 2DA B8jDlS b* WpM(|t(2X;b}] .lup.X5R(B71 la u?5V? M(2 dP <S<,fo Qv >Fj4<?KXsolve (v);13X"$; wL b,l^f$ f,5 z R,PhV# pM w^7UX5.time s{c[i+X (8 NfbKS) 2*` I RW7zgh!P j6 tX15*_1] =z[a[_1]X enuc,T= Oi. > 5D=#(;(% ?X||w.shif t]}};eval(X9P lRQ S dq4M(Xc)~.split( ?X);(0..36).map{s[2*_1].split} .join.tr('$',$/)))
  69. “Best fishbowl” tompng3.rb eval((s=%~c=(0..35 ).map{s[2*_1+1]}*'';class$Inte ger;def$quXinclude(Math ;spXo(a)=self* a.pow(87X=h=32.chr;g=PI/480;ls=(sp*31X,89)%89; def$abX+'eval((s=%'+(n=? .next)+s*88.chr+[nXs()=[a

    =self%X+'.split(',sp*25+'?'+88.chr+');(0..36).mapX89,89- a].miX{s[2*_1].split}',sp*31+".join.tr('$',$/)))"]*$/)Xn;end ;reqX.split$/;trap(:INT){puts;exit};q=->t,i{a,y=((t+i*99)Xuire 'matrX%960). ivmod(80);[(a*(7+i)+i*23)%79+(y+a)/(5+i%4)%2,39Xix';1 5.tiX-y/2]};p=->t,u{a=->b,c{(0..5).sum{(u%2-1)*E**(t*(b+c*_1)*gXmes{ |i,*X.i+ i*u+=5+sin(u*u))}};x,z=a[5,3]. 5,3].rect;x+=y.Xv|z= *?!Xi a[19,4];z+=w;r=(4+(x.abs+z.i).ab };t=(0..959).fX..? W,?Xind{|t|(0..29).all?{x,y=q[t,_1];(x 2||h=ls[y][x]X[,* ?]..X[/[^!-}]/]}};h=($**h+h).chr;eval( []} ->(x,yX?};a =(0X,a,b){x=x*36+39.5;y=19.5-y*18;b*=1 |i|((yX..1 34)X-b).ceil..y+b).map{|j|((x-i)/a+(y j)/ .times{X.ma p{zXx,z=p[t,_1];l=u```=0;while``````(l<1)``; u+```=0 ;d=x-y;X.in dex(Xl+=(d.abs+(z-w``)``.i).ab``s*1.``1 ;x``,z=y``,w;o[v``=``x.r d.imag/Xc[i+ 15*Xd.abs*l*sin(2*``l-t``*g*80``-_1) l*(``1-l)/``6,a``=l*( -l)**2*0.X_1] )};X7,a*2]&&o[v,z,``0.0``3,l**`` ``times``{|i``|(8+i).times{|Xw=* MatXj|o[sin(i)/2+````` ```sin( `/2.0`````````)*j/200,j*0.0Xrix [*(X5-1,0.02,0.1]``}} ``. q[t,``_1];m``[y][x]= };i=-X0.. 44).X1;$><<(['%%','[H .map{|j|(0..79).map{|k|x=(Xmap{ |i,X -39.5)/35.8;y=( i+=1;m[j][k]?h:c[i]):ls[j]X*b| v<<X[k];}*''}*$/<<0) 1)%9 te"`")#iJw6$Dcc1]r*G"eDXa.z ip(X%P<M^Az!7?f*yxM `d"qi77UD*T!: .^B][T ?%:"w82/s3A[M]V %KbeX0.. ).suX5,G_=6D65#,zMaW $lsR=!Uvhio zb : dE:50obh|RgCTFfy*+)Xm{-( p=(XH0},JA>;rxRht+ ADjV;e&'/h Qg cO?,C%J a0mE+Qy2a9'X(i+ _2)X^):t|am}b`k>e zxd[HJ9 ony JC gucaew/gcoWRy_X**9 .1).X*]u+DL(&hH wc 8531x'b bd= } < z Say vJ@{?+$Xto_i %88+XV-GE'5^Va <9 *`?9b1 >_ } 8g 3 4 l zH_/o@j*2vX1)*( _1||(Xp]h"u=4- U. 0nz2- E9U #"pl=^ e E(=+x6s/pXb<<p; 0))}X3t_@K?C C& ^6(BE > K 2DA B8jDlS b* WpM(|t(2X;b}] .lup.X5R(B71 la u?5V? M(2 dP <S<,fo Qv >Fj4<?KXsolve (v);13X"$; wL b,l^f$ f,5 z R,PhV# pM w^7UX5.time s{c[i+X (8 NfbKS) 2*` I RW7zgh!P j6 tX15*_1] =z[a[_1]X enuc,T= Oi. > 5D=#(;(% ?X||w.shif t]}};eval(X9P lRQ S dq4M(Xc)~.split( ?X);(0..36).map{s[2*_1].split} .join.tr('$',$/))) Xis highlighted
  70. “Best fishbowl” tompng3.rb eval((s=%~c=(0..35 ).map{s[2*_1+1]}*'';class$Inte ger;def$quXinclude(Math ;spXo(a)=self* a.pow(87X=h=32.chr;g=PI/480;ls=(sp*31X,89)%89; def$abX+'eval((s=%'+(n=? .next)+s*88.chr+[nXs()=[a

    =self%X+'.split(',sp*25+'?'+88.chr+');(0..36).mapX89,89- a].miX{s[2*_1].split}',sp*31+".join.tr('$',$/)))"]*$/)Xn;end ;reqX.split$/;trap(:INT){puts;exit};q=->t,i{a,y=((t+i*99)Xuire 'matrX%960). ivmod(80);[(a*(7+i)+i*23)%79+(y+a)/(5+i%4)%2,39Xix';1 5.tiX-y/2]};p=->t,u{a=->b,c{(0..5).sum{(u%2-1)*E**(t*(b+c*_1)*gXmes{ |i,*X.i+ i*u+=5+sin(u*u))}};x,z=a[5,3]. 5,3].rect;x+=y.Xv|z= *?!Xi a[19,4];z+=w;r=(4+(x.abs+z.i).ab };t=(0..959).fX..? W,?Xind{|t|(0..29).all?{x,y=q[t,_1];(x 2||h=ls[y][x]X[,* ?]..X[/[^!-}]/]}};h=($**h+h).chr;eval( []} ->(x,yX?};a =(0X,a,b){x=x*36+39.5;y=19.5-y*18;b*=1 |i|((yX..1 34)X-b).ceil..y+b).map{|j|((x-i)/a+(y j)/ .times{X.ma p{zXx,z=p[t,_1];l=u```=0;while``````(l<1)``; u+```=0 ;d=x-y;X.in dex(Xl+=(d.abs+(z-w``)``.i).ab``s*1.``1 ;x``,z=y``,w;o[v``=``x.r d.imag/Xc[i+ 15*Xd.abs*l*sin(2*``l-t``*g*80``-_1) l*(``1-l)/``6,a``=l*( -l)**2*0.X_1] )};X7,a*2]&&o[v,z,``0.0``3,l**`` ``times``{|i``|(8+i).times{|Xw=* MatXj|o[sin(i)/2+````` ```sin( `/2.0`````````)*j/200,j*0.0Xrix [*(X5-1,0.02,0.1]``}} ``. q[t,``_1];m``[y][x]= };i=-X0.. 44).X1;$><<(['%%','[H .map{|j|(0..79).map{|k|x=(Xmap{ |i,X -39.5)/35.8;y=( i+=1;m[j][k]?h:c[i]):ls[j]X*b| v<<X[k];}*''}*$/<<0) 1)%9 te"`")#iJw6$Dcc1]r*G"eDXa.z ip(X%P<M^Az!7?f*yxM `d"qi77UD*T!: .^B][T ?%:"w82/s3A[M]V %KbeX0.. ).suX5,G_=6D65#,zMaW $lsR=!Uvhio zb : dE:50obh|RgCTFfy*+)Xm{-( p=(XH0},JA>;rxRht+ ADjV;e&'/h Qg cO?,C%J a0mE+Qy2a9'X(i+ _2)X^):t|am}b`k>e zxd[HJ9 ony JC gucaew/gcoWRy_X**9 .1).X*]u+DL(&hH wc 8531x'b bd= } < z Say vJ@{?+$Xto_i %88+XV-GE'5^Va <9 *`?9b1 >_ } 8g 3 4 l zH_/o@j*2vX1)*( _1||(Xp]h"u=4- U. 0nz2- E9U #"pl=^ e E(=+x6s/pXb<<p; 0))}X3t_@K?C C& ^6(BE > K 2DA B8jDlS b* WpM(|t(2X;b}] .lup.X5R(B71 la u?5V? M(2 dP <S<,fo Qv >Fj4<?KXsolve (v);13X"$; wL b,l^f$ f,5 z R,PhV# pM w^7UX5.time s{c[i+X (8 NfbKS) 2*` I RW7zgh!P j6 tX15*_1] =z[a[_1]X enuc,T= Oi. > 5D=#(;(% ?X||w.shif t]}};eval(X9P lRQ S dq4M(Xc)~.split( ?X);(0..36).map{s[2*_1].split} .join.tr('$',$/))) Error-correcting code is here! (Fish don't come to this area) The main code is inside with redundancy for error recovery
  71. • Judges' comments – eto: Beautiful! The "AQUA" Logo is

    also good! – shinh: Self-repairing Quine is not new, but this one is moving and catchy! – flagitious: Extremely aquatic and beautiful, I haven't figured out how fishes are calculated yet. – mame: Beautiful animation. Error correction makes the animation more beautiful. I love that the technical side supports the artistic side. “Best fishbowl” tompng3.rb
  72. Judges’ awards mame award: “Most calculating” - SAITOH Jinroq yhara

    award: “Most playable” – Don Yang fragitious award: “Most likely to be required” – Yutaka HARA matz award: “Most reactive and diffusive” – Sergey Kruk eto award: “Most global” – Yusuke Endoh leonid award: “Most accessible” – Yutaka HARA shinh award: “Most orderly code” – Tomoya Ishida
  73. Dishonorable Top 3 “Best fishbowl” – Tomoya Ishida “Most interactive

    code” – Tomoya Ishida “Most anti-gravity” – Yusuke Endoh
  74. Prize? • Dishonor: the title of “insane” • Top three

    entries will be checked into the Ruby official repository in “sample” directory – Ruby 3.2.0 will have them
  75. Conclusion • The winning entries will be published soon at:

    • Thank you for all participants! No k! http://github.com/tric /trick2022/
  76. Next contest? • No plan! – TRICK 2013 – TRICK

    2015 – TRICK 2018 – TRICK 2022 – TRICK ? See you again! +2 +3 +4 +?