Slide 1

Slide 1 text

TRICK 2025 "Episode I" ― Contest Results Judges: eto, shinh, yhara, matz, leonid, flagitious, mame, tompng Transcendental Ruby Imbroglio Contest for RubyKaigi

Slide 2

Slide 2 text

What’s TRICK? • TRICK is a programming contest that celebrates weird Ruby code • Example: puts "Hello!" $> << ?H << ?e << ?l << ?l $> << ?o << ?! +" "# YE $s= %w( p=25;;$-w ?44 1.t imes{|x|$ ><< "\s $s= %w( #$s )*' ';e val #{p &&" ?$+ "}$ s;" [(v ="u Eqm bHj UDQ=nHjUD QmbHJu]wE UrD kjj hUU Emj fhU UEm jjh JR] C"[ x/1 8+( p|| 0)] .or d[x /3% 6]) *$. +=v ]+? \n[ 0,x %63/62]}: puts("Hel lo!")#YE; )*'';eval $s;  Worst (for TRICK)  Good  Great

Slide 3

Slide 3 text

TRICK 2025 • The 5th TRICK – 1st: TRICK 2013 – 2nd: TRICK 2015 – 3rd: TRICK 2018 FINAL – 4th: TRICK 2022 Returns – 5th: TRICK 2025 "Episode I" • This presentation announces the winners of TRICK 2025

Slide 4

Slide 4 text

About TRICK 2025

Slide 5

Slide 5 text

TRICK 2025 Judges eto (Koichiro Eto) shinh (Shinichiro Hamaji) yhara (Yutaka Hara) matz (Yukihiro Matsumoto) leonid (Sun Park) flagitious (Darren Smith) mame (Yusuke Endoh) tompng (Tomoya Ishida) Media artist Super hacker & golfer Esolang book author 1st super golfer Author of GolfScript, super golfer Matz Me The previous champion [NEW]

Slide 6

Slide 6 text

TRICK 2025 Result Overview • The highest number of submissions ever! – So, the quality of winning entries is the best yet – Thank you to all the submitters! • Blind review – Judges rated each entry on a scale of (1..10) without knowing the authors • 13 awards – 5 medals – 8 judges' awards JP US KR 4th 5th

Slide 7

Slide 7 text

CAUTION • This presentation contains many spoilers! – Please leave if you wish to analyze the winners yourself • The winning entries will be available at: No k! http://github.com/tric /trick2025/

Slide 8

Slide 8 text

Judges' Prizes

Slide 9

Slide 9 text

Winner » eto shinh yhara matz leonid flagitious mame tompng score “Most Harmful” 『最も有害で賞』 yoshi-taka leonid award 6 7 3 7 8 N/A 7 5.71 2

Slide 10

Slide 10 text

yoshi-taka.rb leonid award “Most Harmful” #============================================================================== # 作成日 : 2004/01/5 # (Created on: Jan 5, 2004) # 改修者 : Real Programmer # (Modified by: Real Programmer) # 備考 : 自己参照コードを用いた実験的実装 # (Note: experimental implementation using self-referential code.) #============================================================================== #---------------------------------------------------------------------- # 関数: goto # 説明: # Func: goto # Desc: # 引数: # @iTargetLine - (Integer) 実行開始行番号 (1始まり) # (Target starting line number (1-indexed)) # @b - (Binding) 評価コンテキスト # (Evaluation context) #---------------------------------------------------------------------- strTemp="" arrLines=[] def goto(iTaragetLine, b = TOPLEVEL_BINDING) strTemp = File.read(__FILE__)

Slide 11

Slide 11 text

yoshi-taka.rb leonid award “Most Harmful” … 78 79 if(10>i) 80 i+=1 81 puts "increment #{i} times" 82 goto 78 83 end … $ ruby entry.rb increment 1 times increment 2 times increment 3 times increment 4 times increment 5 times increment 6 times increment 7 times increment 8 times increment 9 times increment 10 times … Go to Line 78 entry.rb (simplified)

Slide 12

Slide 12 text

yoshi-taka.rb • How to implement "goto 78" – Directly jumping into if statement is not possible – However, entry.rb simulates jumping into an if statement by abusing a heredoc leonid award “Most Harmful” s = File.read(__FILE__) eval(s.lines[78..].join) exit if(true==bFlag) <<-goto goto 40;if fi goto end This line can be jumped to

Slide 13

Slide 13 text

Winner » eto shinh yhara matz leonid flagitious mame tompng score “Most Shifted” 『最もズレてるで賞』 Yutaka HARA (yhara) mame award 7 5 7 7 7 N/A 8 6.33 4

Slide 14

Slide 14 text

yhara.rb mame award “Most Shifted” TARGETS = [Integer, Float, String, Array, Enumerator, Range, Kernel]; eval TARGETS .flat_map{|c|m=(c.instance_methods(false)+c.private_instance_methods(false)) .select{|m|m.to_s=~/\w/}.sort.reverse;m.map{"#{c}.alias_method('#{_1}_orig', '#{_1}')"}+m.each_cons(2).map{|m1,m2|"#{c}.alias_method('#{m2}','#{m1}_orig')"}+ ["#{c}.alias_method('#{m.first}', '#{m.last}_orig')"]}.join("\n") #--------------------------------------------------------------------------------# FONT = <

Slide 15

Slide 15 text

yhara.rb • This program redefines the method names with a shift • Example: String methods – str.clone calls codepoints – str.codepoints calls concat – str.concat calls count mame award “Most Shifted” clear clone codepoints concat count crypt clear clone codepoints concat count crypt TARGETS = [Integer, Float, String, Array, Enumerator, Range, Kernel]; eval TARGETS .flat_map{|c|m=(c.instance_methods(false)+c.private_instance_methods(false)) .select{|m|m.to_s=~/\w/}.sort.reverse;m.map{"#{c}.alias_method('#{_1}_orig', '#{_1}')"}+m.each_cons(2).map{|m1,m2|"#{c}.alias_method('#{m2}','#{m1}_orig')"}+ ["#{c}.alias_method('#{m.first}', '#{m.last}_orig')"]}.join("\n") entry.rb (the head part) shifts the method names

Slide 16

Slide 16 text

yhara.rb mame award “Most Shifted” … 0.truncate(MAX_T) do |t| pp "\e[2J\e[H" s = "" (0...N_CHARS).cover? do |i| s.codepoints chara(i) s.codepoints "\n\n" end pp(pad(s, t)) singleton_methods 0.01 end entry.rb (only interesting part) truncate → upto cover? → cycle codepoints → concat singleton_methods → sleep pp → print

Slide 17

Slide 17 text

Winner » eto shinh yhara matz leonid flagitious mame tompng score “Best Fadeaway” 『最高の消失で賞』 Shinichiro Hamaji (shinh) matz award 6 6 2 8 7 7 9 6.43 6

Slide 18

Slide 18 text

shinh.rb matz award “Best Fadeaway” w, y=" n\o",?p*2 m, e,d, *p= g= j= my=[[],*?`..?z] t=[?d+ ?i+ ?s ,y+?e, ?r ]* z=g[2] h= r=:"#{[ (x= ->{_1*", "}; ?r), ?v,k= my[19,2]*"",?!]* j[6]}"; o= [?g+ " #{("m"+"e"+?r+"#{ 5=>f }").then(&r)}"+z, k[1 ]+" ",""]; $o= " #{g[24 ]}orl"+ g[ f ]; s=my[7]+ ?r+ p[13] $><< "# the #{ []=>v d }l\p#{ }"+ ["h#{d }b#{ g[ 6 ]}t ", "s "+t,?n + "g "+ s]* "i" + "m the#$o.#$/" ([*$<].then(&r)+[ z]). sum{ v+= (c=(_1.then(&:"#{ ?c }h#{d}r#{p[17 ]}" )&[d]+ p)-v) $q&& m<<[_1[1]?_1:"", c[0]? "# #{ x[ c] } h#{d }s #{t}e\d #{ p s}m the#$o.#$/":""] $q= $en=->{$><<"#"+ w+ ["th",*o]*(?i+ w[1])+" the#$o.#$/"} 0};m.then( &h). sum([]) do $><<(m=_1)+ (u=_2)&& o end $en[] ?n

Slide 19

Slide 19 text

shinh.rb • This program reports the last alphabet used in each line matz award “Best Fadeaway” abcdefg abc ab a $ ruby entry.rb test.txt # the alphabet is disappearing from the world. abcdefg # d, e, f, g has disappeared from the world. abc # c has disappeared from the world. ab # b has disappeared from the world. a # a has disappeared from the world. # nothing remains in the world. test.txt

Slide 20

Slide 20 text

shinh.rb • This program draws inspiration from lipograms – A constrained writing in which letters are vanishing – 筒井康隆 『残像に口紅を』 Yasutaka Tsutsui "Zanzo ni Kuchibeni wo" – 冨樫義博 『幽☆遊☆白書』 Yoshihiro Togashi "Yu Yu Hakusho" matz award “Best Fadeaway”

Slide 21

Slide 21 text

shinh.rb • Each alphabet can only appear in a specific column matz award “Best Fadeaway” w, y=" n\o",?p*2 m, e,d, *p= g= j= my=[[],*?`..?z] t=[?d+ ?i+ ?s ,y+?e, ?r ]* z=g[2] h= r=:"#{[ (x= "y" can appear only in this column "r" can appear only in this column

Slide 22

Slide 22 text

Winner » eto shinh yhara matz leonid flagitious mame tompng score “Most Ruby-on-Ruby” 『最もRuby on Ruby賞』 Kensuke Imamura (@nsfisis) eto award 7 4 5 7 8 8 7 6.50 6

Slide 23

Slide 23 text

nsfisis.rb eto award “Most Ruby-on-Ruby” eval $s=<<'TRICK' require "cgi" require "js" require "prism" @s = String.new def p(s) = @s << s def tag(t, s, c) = "<#{t} class=#{c}>#{s}" def span(s, c) = tag("span", s, c) def ruby(t) s = CGI.escape_html(t.value) if r = rt(t) tag("ruby", s + tag("rp", "(", "") + tag("rt", r, "") + tag("rp", ")", ""), t.type) else span(s, t.type) end end This works on ruby.wasm

Slide 24

Slide 24 text

nsfisis.rb eto award “Most Ruby-on-Ruby”

Slide 25

Slide 25 text

nsfisis.rb • A ruby.wasm Quine with "furigana" by eto award “Most Ruby-on-Ruby”

Slide 26

Slide 26 text

nsfisis.rb • The implementation technique – Using Prism.lex – Token type names are directly used in CSS eto award “Most Ruby-on-Ruby” .COMMENT { color: #777; font-style: italic; } .CONSTANT, .GLOBAL_VARIABLE, .INSTANCE_VARIABLE, .IDENTIFIER { color: #088; } .KEYWORD_BREAK, .KEYWORD_CASE, .KEYWORD_DEF, .KEYWORD_ELSE, … { color: #04c; font-weight: bold; }

Slide 27

Slide 27 text

Winner » eto shinh yhara matz leonid flagitious mame tompng score “Most Uncovered” 『最もカバーされてないで賞』 Yusuke Endoh tompng award 5 8 2 6 7 8 9 6.57 10

Slide 28

Slide 28 text

mame.rb tompng award “Most Uncovered” u="Coverage.start; load 'entry.rb'; p Coverage.result" abort "usage: ruby -rcoverage -e #{ u.dump } 978-0201710892" p p p EAN-13 p barcode p generator p p p p;BEGIN{ q,r,s,t,u=-44537,337489,732468,441014,516139;a,=$*|| (p) n=10;(a,b,c,d,e,f,g,h,i,j,k,l=a.tr('-','').chars;v,w,x,y,z= ->{p}&& [->{p}][q[b=b.to_i]], [->{p}][r[b]], [->{p}][s[b]], [->{p}][t[b]], [->{p}][u[b]] v&.();w&.();x&.();y&.();z&.();v,w,x,y,z= ->{p}&&

Slide 29

Slide 29 text

mame.rb tompng award “Most Uncovered” $ ruby -rcoverage -e "Coverage.start; load 'entry.rb'; p Coverage.result" 978-0201710892 {"entry.rb" => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0]}

Slide 30

Slide 30 text

mame.rb tompng award “Most Uncovered” 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 1 1 0 0 0 1 0 0 1 0 1 0 0 1 1 1 0 0 1 0 0 1 1 0 1 0 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 1 0 0 1 1 0 0 1 1 0 1 1 1 0 0 1 0 1 0 0 1 0 0 0 1 1 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 1 1 0 0 0 1 0 0 1 0 1 0 0 1 1 1 0 0 1 0 0 1 1 0 1 0 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 1 0 0 1 1 0 0 1 1 0 1 1 1 0 0 1 0 1 0 0 1 0 0 0 1 1 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0

Slide 31

Slide 31 text

mame.rb • This program calculates a barcode (EAN-13) as its code coverage • The main trick – 978-0201710892: "Programming Ruby" by Dave Thomas Credit: The idea abusing code coverage is attributed to @riseshia tompng award “Most Uncovered” a= ->{p} a.call if condition? [1, 0, 1] coverage if condition? == false [1, 1, 1] if condition? == true coverage 978-0201710892

Slide 32

Slide 32 text

Winner » eto shinh yhara matz leonid flagitious mame tompng score “Most Natural” 『最も自然で賞』 beta_chelsea yhara award 8 4 9 7 7 7.5 8 7.06 6

Slide 33

Slide 33 text

beta_chelsea.rb yhara award “Most Natural” eval( %w(S=40;L =60;P=L/2.0; CX=((S *2+1)/2).floor ;CY=((S+1)/ 2).floor;f=0;k= 0;loop()do;p ps=[];s=(0...(S+1 )).map{("\s"*S* 2)+"\s"};(f.zero? )&&($x2=rand(3..2 0);$y2=rand(3..20 );$x3=rand(10..20); $pn=ARGV[0]&.to_i ||rand(3..8);$cl=(3 1..37).to_a.sampl e.to_s;);$pn.times{ |p|r=Math::PI/1 80*(360/$pn*p+(f+k) *5);cr=Math.cos (r);sr=Math.sin(r) ;d=f(s. length-1 ))&&!(ex>s[0].length-1))the n;if(i==0)then;s[ey][ex]="*" ;else;dy=( p[1]-ps[i-1][1]);dx=(p[0]-p s[i-1][0]);(dx.zero?) &&(m="!");de c=((p[1].round(1)-p[1].flo or)*10).t o_i;m||=("``` TRICK2025"[dec])||",";(m =~/\w/)&&(m=" *;"[(dy/dx).round]||'l ');s[ey][ex]=m ;end;end;};};pri nt"\e[2J";print "\e["+$cl +"m";print"\e[1 ;1H"+s.join("\n ");(f>P&&k<20)? (k+=1):(f+=1); (f>L)&&(f=0;k= 0;);sleep(0.03 );end;)*""); RubyKaigi @Matsuy ama!

Slide 34

Slide 34 text

beta_chelsea.rb • Rotating flower animation – Flowers are generated using random numbers – Flowers are drawn using the marching square algorithm yhara award “Most Natural”

Slide 35

Slide 35 text

Winner » eto shinh yhara matz leonid flagitious mame tompng score “Most it-tensive” 『最もitだらけで賞』 Koichi Sasada shinh award 7 8 5 5 9 9.5 8 7.44 8

Slide 36

Slide 36 text

ko1.rb shinh award “Most it-tensive” it's a celebration of the extra=power of the *IT* keyword & Ruby 3.4 Pm(^_^)m;?''' it{it(it){it{it(it){it{it(it){it}}}}}};it{it(it){it{it}}};it{it(it){it{it{it{it}}} }};it{it};it{it{it(it){it{it{it{it{it}}}}}}};it{it{it(it){it}}};it{it(it){it{it}}} it{it{it}};it{};it{it(it){it{it}}};it{it{it{it(it){it{it{it{it}}}}}}};it{it{it(it, ){it{it(it){it{it}}}}}};it{it{it{it{it(it){it{it{it}}}}}}};it{it{it{it(it){it(it){ it}}}}};it{it{it(it){it(it){it(it){it(it){it}}}}}};it{it{it(it){it{it(it){it{it{it }}}}}}};it{it(it){it{it(it){it{it(it){it}}}}}};it{it(it){it{it}}};it{it(it){it{it{ it{it}}}}};it{it};it{it{it{it(it){it}}}};it{it(it){it(it){it{it}}}};it{it(it){;it( it){it{it(it){it{it{it}}}}}}};it{it};it{it{it{it(it){it(it){it}}}}};it{;it(it){it{ it(it){it(it){it}}}}};it{it{it{it(it){it{it{it{it}}}}}}};it{it{it{it(it){it(it){it it{it}}}}}};it{it{it{it(it){it}}}};it{it(it){it(it){it{it{it{it{it}}}}}}};it{it(it ){it{it}}};it{it(it){it(it){it(it){it(it){it(it){it}}}}}};it{it{it(it){it(it){it}} }};it{it(it){it{it(it){it}}}};it{it(it){it(it){it(it){it(it){it}}}}};it{;it{it{it{ it(it){it{it{it}}}}}}};it{it(it){it(it){it(it){it{it(it){it}}}}}};it{it(it){it(it, ){it(it){it{it(it){it}}}}}};it{it(it){it{it}}};it{it{it{it{it(it){it}}}}};it{it{it it{it(it){it}}}};it{it(it){it(it){it{it}}}};BEGIN{def to_str()=It.map{@it[+it]}*'' def it(it=it,&iT)=(iT)?(its=iT[self.it]||$.;caller.any?{/#it'/=~_1}?(its*2)+(it||0 ):It<it Please eval itself and now what time is it? As you can see the it keyword is very legible. This is it!

Slide 37

Slide 37 text

ko1.rb • The main trick: Encoding code using nested 'it's – The encoded code • Other interesting aspects include: – How the generated code is evaluated shinh award “Most it-tensive” it do it it do # 1 it do # 0 it # 1 end end end Please eval itself and now what time is it? itself = main object Calls Kernel#eval def Please(*)=3;def it? =p(Time.now)&&exit By defining main#to_str, eval converts it to a string it? calls the main code

Slide 38

Slide 38 text

ko1.rb • A comment from shinh – The dance of the new "it" in Ruby 3.4 is fantastic – I also liked the multiple subtle obfuscations • It's not simply using "eval" • It build the encoded string from seemingly random text • Well-crafted and impressive shinh award “Most it-tensive”

Slide 39

Slide 39 text

Winner » eto shinh yhara matz leonid flagitious mame tompng score “Best Bonus” 『最高のボーナスで賞』 Yusuke Endoh flagitious award 7 8 7 6 8 10 8 7.57 7

Slide 40

Slide 40 text

mame2.rb flagitious award “Best Bonus” o=j=u=-~hash-hash;w=u+v=u+u;t=n=w*v*v;f=->b,a=[]{b>w+v+v ?f[b-w-i=b==n-u||+ b>n+w ?w:v,a<a=:TR,h=((2025_04)),z,&b{s=a.size;h&&s-=u;b[s,s-v]+z };t+="nilselfalse/((";;g=:IC[(t<<050<<+98;j=false ||->x{t[x*w+v+w,v+x]};u)] t<<")|(c|(m))|r|(g|(y)"++:K![u+u,235711r];pp nil+fork unless(l,d,*a=t.chars );t+='))\2*)(($)|[^y'+g;!:"";a=a[013& +17..];nil;t+=(def+;end;u+0e1||2e3;b, e,*a=a;'brgm\n]|()');q,o,*a=(z=t[+19..+23*w];nil||a);not y=d+b;(4.5-6.7);z, s=eval(z+')|\S/i'),eval(y).read;p,_,i=a||se|false|f;;END{(not w-890e+9+w);s .display &&`\/`};s.gsub!(z){_,a,x,b,c,m,g,y,_,z,h=*(p!unless(u);8.7*6.5;;[* eval(t[u,v])]);a ?k.[](a,h,z||o){|s,a|s<(b ?u:(c)?w:v)?o*s:(g)?(4e3;;2e1 || !_TRICK_2025_!;y ?p:d)+i*(s-u):b ?l*s:m ?l+e+l*a:c ?f[s]*o:x ?q+o*a+q:o}:o}

Slide 41

Slide 41 text

mame2.rb • This program converts a color-map text to Ruby code – which is colored using IRB's syntax highlighting flagitious award “Best Bonus” YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YYYYYWWWWYYYYYYYYYYYYYYYYYYYYYYYYYYYBBBBBBBYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YYYYYW WWYYYYYYYYYYYYYYYYYYYYBBBBBWWWWWWWWWWBBBBYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YYYYYWW WYYYYYYYYYYYYYYYYBBWWWWWWWWWWWWWCCCCWCCCWBBBYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YYYYYW WWYYYYYYYYYYYYBBWWWWWCCCWWWCCCCCWCCCCCWCCCWWBBBYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YYYYYWW WYYYYYYYYYBBWWWWWWWWWCCCCCCCCCCBBCCCCCCWCCCWWWBYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YYYYYW WWYYYYYYYBWWWWWWWWCCCCWCCCBBWWWBBBBWCCCCCCCCCBYBBBYBBYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YYYYYWWWWYYYYBBWWWWWWWWWCCCCCBWWBBBBCCCBBBBWCCCWCCCCWWWWCCCBBYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YYYYYYYYYYYYBWWWWWWWWWWWBBBBBWCCCBBBBBBCCCBBBBBWCCCCCWWBWWWWWBBYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YYYYYYYYYBBWWWWWWWWWWWWWWBBBBBBBBBBBBBBBBBBBBCCCWCCCCCWCCCWCCCWBBYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY CCCCCCCBWWWWWWWWCCCWWWWWWWWWWWWBBBBBBBBBBBCCCBYYYBCCCCWWCCCCBYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY CCCCBWWWWWWWCCCCCCWWWWWWCCCWWWBBBWWBBBBBCCCCYYYYYYBBBBYYBWWWWBBYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY WWWWWWWWWWWCCCCWCCCCCCCWCCCCCCWWWWBBBBBBBBBYYYYYYYYYYYYYYBBBBYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYBB WWWCCCCCCCBBBWWWCCCCWWWCCCCCCWWWWWCCCCBBBBBYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYBBWWW WWWCCCWCCCCBBBBBWWCCCCCWWBBBBBBBBWWWWBBBBBBYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYBWWWWW CCCWYYWWWWWWWWBBBWCCCWCCCWCCCWWBBBBBBBBBBBBYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYBBWWWWWW WWWWYYYBBBBBBBBBWWWBWWBWCCCWWBBBBBBBBBBBBBBBYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYBBYYBWWWWWCCC WWWWCCCCCBBBBBBBBWBBBBBBBWBWBBBBBBWWWWWWBBBBBYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYBBBYYBWWWWWCCCCB WWWCCCCWWWYYYBBBBBBBBBBBBBBBBBBBBWWWWWWWWWWBBBBYYYYYYYYYYYYYYYYYYYYYWWWYYYYYYYYYYYYYYYYYYBBBYYYBWWWWWWWWWWBB CCCCCCWWWWWYYYYYYYBBBBBBBBBBBBWWWWWWWWWWWWWWWBBBYYYYYYYYYYYYYYYYYYYWWWWWYYYYYYYYYYYYYYYBBBYYYBWWWWCCCBBBBBBB WWBBWBWBBBYYYYYYYYYYYYYYYYBWWWWWWBWCCCCWWWWWWWBWBBYYYYYYYYYYYYYYWWWWWWWWWWWYYYYYYYYYBBYYYYBWWWCCCCBBBBBBBBWW WWBBBBBBBBBYYYYYYYYYYYYBWWWWWWWBWCCCCCCWBWWWBWWBWWWWWWYYYYYYBWWWWWWBWWWBWWWWWWBBBYYYYBBWWWWWWCCCCBBBWWCCCCWW WWWWWBBBBBBBBWWWWWWWWWWWWWWWWCCCCWCCCCCCCCWCCCCCWWWWWWWWWYYYYBBBWWBWWWWWBWWYYYYYYBWWWCCCCCCCCCWCCCCCCCWWCCCC WWWWWWWWWWWWWWWWWWWCCCCCWWBWCCCCCCCCCWWCCCCCCCCWWWCCCWWBBWWCCCWWBBBYYYYYYYYWWWWBBCCCCCCWWWWCCCBBBBBBWCCCCCCC WWWCCCCCCWWWCCCWWBWWCCCCCCWCCCCWWBWWBWCCCCCCYYYWWWWWBBBWBBBWBBCCCWWWWWWWWWWWWWWWWWWCCCCCBBBBBBBBBWCCCCCCCBBB WWWWWWWWCCCCCCCWBWWBWWCCCWWBWWCCCCCCCCCWWWBBBBYYYBBBWWWWBBBBBBBBBCCCWCCCCWCCCCWBBBBBWBBBBBBBBBWWWWWWWWWWWWWW WWWWBBCCCCBBWWBBBCCCCCWCCCCCCWWCCCCCWCCCCWWBBBBBBYYYYYYWWWWWBBBBBBBBCCCWBBBBBWBBBBBBBBBBBBWWWCCCCCCBBBBBBBWW WWBBBCCCCBBBBBCCCWCCCWCCCWWBWWCCCWBBCCCCCCWWWBBBBBBYYYYYYYYYYYYYYYYBBBBBBBBWBBBBBBBBBBBWWWWWWWWWWWWWCCCCBBBB WBBBBBWBBBBBBBWBWBBWBBBWWWCCCCCCWWWWBBBBBWBWWWWBBBBBBBYYYYYYYYYYYYYYYYYYYYYYYYYYYWWWWWCCCCBBBBBBBBBBBBBBBBBB WBBBBBBBBBBBBBBBBBBBBBBBWWWWWWBBWWWBBWWWBBBBWBWWWWWBBBBBBBYYYYYYYYYYYYYYYYYWWWWWBBBBBBBBBBBBBBBBWWWWWWWWWWWW WWBBBBBBBBBBBBBBBBBBBBBWWWWCCCCCWWWCCCCWWWCBBBBCCCCWWWWWWWWWWWWWWWCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC :iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiii;;;;:iiiiiiiiiiiiiiiiiiiiiiiii;111111;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiii; ;;:iiiiiiiiiiiiiiiiii;11111;;;;;;;;;;111;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiii;; ;:iiiiiiiiiiiiii;11;;;;;;;;;;;;;self;nil;11;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiii; ;;:iiiiiiiiii;11;;;;;nil;;;false;false;nil;;11;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiii;; ;:iiiiiii;11;;;;;;;;;self;self;1;false;;nil;;;;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiii; ;;:iiiii;1;;;;;;;;self;;;;11;;;1111;self;nil;;;11;;1;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiii;;;;:ii;11;;;;;;;;;self;1;;111;;;;1111;nil;self;;;;;;;1;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiiiiiiiii;1;;;;;;;;;;;11111;;;;11111;;;;11111;false;;1;;;;;1;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiiiiii;11;;;;;;;;;;;;;;1111111111111111111;nil;false;nil;nil;1;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii ;false;1;;;;;;;;nil;;;;;;;;;;;;1111111111;;;;;:i;;self;;nil;;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii nil;1;;;;;;;;false;;;;;;nil;;;111;;1111;nil;:iiii;111;;;1;;;;1;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii ;;;;;;;;;;;self;nil;nil;;false;;;;11111111;:iiiiiiiiiiii;111;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii;11 ;;;;false;111;;;self;;;false;;;;;;nil;1111;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii;11;;; ;;;nil;nil;11111;;false;;11111111;;;;11111;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii;1;;;;; nil;:i;;;;;;;;111;nil;nil;nil;;11111111111;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii;11;;;;;; ;;;;:i;111111111;;;1;;1;nil;;11111111111111;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii;1;;;1;;;;;nil ;;;;self;11111111;1111111;1;111111;;;;;;1111;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii;11;;;1;;;;;nil;1 ;;;self;;;:i;11111111111111111111;;;;;;;;;;111;:iiiiiiiiiiiiiiiiiiii;;;:iiiiiiiiiiiiiiii;11;:i;1;;;;;;;;;;11 ;false;;;;;:iiiii;111111111111;;;;;;;;;;;;;;;11;:iiiiiiiiiiiiiiiiii;;;;;:iiiiiiiiiiiii;11;:i;1;;;;;;;1111111 ;;11;1;11;:iiiiiiiiiiiiii;1;;;;;;1;self;;;;;;;1;1;:iiiiiiiiiiiii;;;;;;;;;;;:iiiiiii;1;:ii;1;;;nil;11111111;; ;;11111111;:iiiiiiiiii;1;;;;;;;1;false;;1;;;1;;1;;;;;;:iiii;1;;;;;;1;;;1;;;;;;11;:ii;11;;;;;;nil;111;;self;; ;;;;;11111111;;;;;;;;;;;;;;;;self;nil;self;false;;;;;;;;;:ii;111;;1;;;;;1;;:iiii;1;;;self;self;nil;nil;;self ;;;;;;;;;;;;;;;;;;;false;;1;self;self;;self;nil;;;nil;;11;;nil;;11;:iiiiiii;;;;1;false;;;;;;;;111111;nil;nil ;;;;false;;;nil;;1;;;false;self;;1;;1;false;:ii;;;;;111;111;1;nil;;;;;;;;;;;;;;;;;;self;111111111;false;;111 ;;;;;;;;nil;nil;1;;1;;nil;;1;;self;self;;;111;:i;111;;;;11111111;nil;self;self;11111;111111111;;;;;;;;;;;;;; ;;;;1;nil;11;;11;false;;false;;false;self;;11111;:iiiii;;;;;1111111;nil;11111;111111111111;;;false;1111111;; ;;11;nil;1111;nil;nil;nil;;1;;nil;1;;false;;;11111;:iiiiiiiiiiiiii;11111111;11111111111;;;;;;;;;;;;;nil;1111 ;11111;1111111;1;11;111;;;false;;;;;11111;1;;;;111111;:iiiiiiiiiiiiiiiiiiiiiiiiii;;;;;nil;111111111111111111 ;11111111111111111111111;;;;;;11;;;11;;;1111;1;;;;;111111;:iiiiiiiiiiiiiiii;;;;;1111111111111111;;;;;;;;;;;; ;;111111111111111111111;;;;false;;;self;;;;111;self;;;;;;;;;;;;;;;false;self;nil;nil;false;false;false;false :iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiii;;;;:iiiiiiiiiiiiiiiiiiiiiiiii;111111;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiii; ;;:iiiiiiiiiiiiiiiiii;11111;;;;;;;;;;111;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiii;; ;:iiiiiiiiiiiiii;11;;;;;;;;;;;;;self;nil;11;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiii; ;;:iiiiiiiiii;11;;;;;nil;;;false;false;nil;;11;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiii;; ;:iiiiiii;11;;;;;;;;;self;self;1;false;;nil;;;;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiii; ;;:iiiii;1;;;;;;;;self;;;;11;;;1111;self;nil;;;11;;1;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiii;;;;:ii;11;;;;;;;;;self;1;;111;;;;1111;nil;self;;;;;;;1;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiiiiiiiii;1;;;;;;;;;;;11111;;;;11111;;;;11111;false;;1;;;;;1;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :iiiiiii;11;;;;;;;;;;;;;;1111111111111111111;nil;false;nil;nil;1;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii ;false;1;;;;;;;;nil;;;;;;;;;;;;1111111111;;;;;:i;;self;;nil;;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii nil;1;;;;;;;;false;;;;;;nil;;;111;;1111;nil;:iiii;111;;;1;;;;1;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii ;;;;;;;;;;;self;nil;nil;;false;;;;11111111;:iiiiiiiiiiii;111;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii;11 ;;;;false;111;;;self;;;false;;;;;;nil;1111;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii;11;;; ;;;nil;nil;11111;;false;;11111111;;;;11111;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii;1;;;;; nil;:i;;;;;;;;111;nil;nil;nil;;11111111111;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii;11;;;;;; ;;;;:i;111111111;;;1;;1;nil;;11111111111111;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii;1;;;1;;;;;nil ;;;;self;11111111;1111111;1;111111;;;;;;1111;:iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii;11;;;1;;;;;nil;1 ;;;self;;;:i;11111111111111111111;;;;;;;;;;111;:iiiiiiiiiiiiiiiiiiii;;;:iiiiiiiiiiiiiiii;11;:i;1;;;;;;;;;;11 ;false;;;;;:iiiii;111111111111;;;;;;;;;;;;;;;11;:iiiiiiiiiiiiiiiiii;;;;;:iiiiiiiiiiiii;11;:i;1;;;;;;;1111111 ;;11;1;11;:iiiiiiiiiiiiii;1;;;;;;1;self;;;;;;;1;1;:iiiiiiiiiiiii;;;;;;;;;;;:iiiiiii;1;:ii;1;;;nil;11111111;; ;;11111111;:iiiiiiiiii;1;;;;;;;1;false;;1;;;1;;1;;;;;;:iiii;1;;;;;;1;;;1;;;;;;11;:ii;11;;;;;;nil;111;;self;; ;;;;;11111111;;;;;;;;;;;;;;;;self;nil;self;false;;;;;;;;;:ii;111;;1;;;;;1;;:iiii;1;;;self;self;nil;nil;;self ;;;;;;;;;;;;;;;;;;;false;;1;self;self;;self;nil;;;nil;;11;;nil;;11;:iiiiiii;;;;1;false;;;;;;;;111111;nil;nil ;;;;false;;;nil;;1;;;false;self;;1;;1;false;:ii;;;;;111;111;1;nil;;;;;;;;;;;;;;;;;;self;111111111;false;;111 ;;;;;;;;nil;nil;1;;1;;nil;;1;;self;self;;;111;:i;111;;;;11111111;nil;self;self;11111;111111111;;;;;;;;;;;;;; ;;;;1;nil;11;;11;false;;false;;false;self;;11111;:iiiii;;;;;1111111;nil;11111;111111111111;;;false;1111111;; ;;11;nil;1111;nil;nil;nil;;1;;nil;1;;false;;;11111;:iiiiiiiiiiiiii;11111111;11111111111;;;;;;;;;;;;;nil;1111 ;11111;1111111;1;11;111;;;false;;;;;11111;1;;;;111111;:iiiiiiiiiiiiiiiiiiiiiiiiii;;;;;nil;111111111111111111 ;11111111111111111111111;;;;;;11;;;11;;;1111;1;;;;;111111;:iiiiiiiiiiiiiiii;;;;;1111111111111111;;;;;;;;;;;; ;;111111111111111111111;;;;false;;;self;;;;111;self;;;;;;;;;;;;;;;false;self;nil;nil;false;false;false;false input text output

Slide 42

Slide 42 text

mame2.rb • A key idea: Abusing IRB syntax highlighting • The following characters are converted to: – B(lue): Integers – R(ed): String literals – G(reen): Global variables – Y(ellow): Symbol literals – M(agenta): Floats – C(yan): nil/true/false – Others(white): semicolons flagitious award “Best Bonus” 11111111111111111111111 ";;;;;;;;;;;;;;;;;;;;;" $iiiiiiiiiiiiiiiiiiiiii :iiiiiiiiiiiiiiiiiiiiii 1e111111111111111111111 false;false;false;false ;;;;;;;;;;;;;;;;;;;;;;;

Slide 43

Slide 43 text

mame2.rb • Bonus: The code is not a boring blob; it's colorable! – Due to this bonus, this program's use of literals and keywords is constrained – This program was meticulously crafted by hand flagitious award “Best Bonus” o=j=u=-~hash-hash;w=u+v=u+u;t=n=w*v*v;f=->b,a=[]{b>w+v+v ?f[b-w-i=b==n-u||+ b>n+w ?w:v,a<a=:TR,h=((2025_04)),z,&b{s=a.size;h&&s-=u;b[s,s-v]+z };t+="nilselfalse/((";;g=:IC[(t<<050<<+98;j=false ||->x{t[x*w+v+w,v+x]};u)] t<<")|(c|(m))|r|(g|(y)"++:K![u+u,235711r];pp nil+fork unless(l,d,*a=t.chars );t+='))\2*)(($)|[^y'+g;!:"";a=a[013& +17..];nil;t+=(def+;end;u+0e1||2e3;b, e,*a=a;'brgm\n]|()');q,o,*a=(z=t[+19..+23*w];nil||a);not y=d+b;(4.5-6.7);z, s=eval(z+')|\S/i'),eval(y).read;p,_,i=a||se|false|f;;END{(not w-890e+9+w);s .display &&`\/`};s.gsub!(z){_,a,x,b,c,m,g,y,_,z,h=*(p!unless(u);8.7*6.5;;[* eval(t[u,v])]);a ?k.[](a,h,z||o){|s,a|s<(b ?u:(c)?w:v)?o*s:(g)?(4e3;;2e1 || !_TRICK_2025_!;y ?p:d)+i*(s-u):b ?l*s:m ?l+e+l*a:c ?f[s]*o:x ?q+o*a+q:o}:o}

Slide 44

Slide 44 text

Honorable mentions

Slide 45

Slide 45 text

Honorable mentions(選外佳作) “Most Musical” – Yutaka HARA “Worst Bug Report” – Zeroichi Arakawa “Least Truthful” – Kensuke Imamura (@nsfisis) “Lowest Entropy” – Koichi Sasada “Most Cerebral” – Kensuke Imamura (@nsfisis) “Best Shapeshifter” – Kota Noda “Best Repetition” – chobishiba “Most International” – osatoh “Most Visual” – Mari Imaizumi “Most Adaptive” – Yoh Osaki

Slide 46

Slide 46 text

Top five awards

Slide 47

Slide 47 text

Winner » eto shinh yhara matz leonid flagitious mame tompng score “Most Maintainable” 『最もメンテナンスしやすいで賞』 Tomoya Ishida (tompng) 7 9 6 7 9 N/A 10 8.00 8

Slide 48

Slide 48 text

“Most Maintainable” tompng1.rb module ReadableFizzBuzz module Chain end end include ReadableFizzBuzz Chain::Itself = Chain module Chain::Itself module Void A = B = C = D = E = F = G = H = I = J = K = L = M = Void N = O = P = Q = R = S = T = U = V = W = X = Y = Z = Void module Set end module Put end module WriteBack end module Not include Void end end module Off include Void end module Nil A = B = C = D = E = F = G = H = I = J = K = L = M = Off N = O = P = Q = R = S = T = U = V = W = X = Y = Z = Off end module Next include Nil end module Current include Nil Not = Off Set = Put = Next WriteBack = Current end True = If = Current On = Next module On INT = 1 FIZZ = 'Fizz' BUZZ = 'Buzz' PREFIX = '0b' FORMAT = "%d%s%s\n" NEXT = __FILE__ end module Off INT = 0 FIZZ = BUZZ = nil PREFIX = '0b1' FORMAT = "%2$s%3$s\n" NEXT = '/dev/null' Not = True end module Initial C = D = True end module ReadableFizzBuzz::Chain::Current include Initial end If::C::Set::E = If::E::Set::F = If::F::Set::C = On If::D::Set::G = If::G::Set::H = If::H::Set::I = If::I::Set::J = If::J::Set::D = On If::F::Not::J::Not::Set::B = On If::K::Not::Set::K = On If::K::WriteBack::L = True If::L::Not::M::Set::M = On If::L::M::Not::Put::M = On If::L::M::WriteBack::N = True If::N::Not::O::Set::O = On If::N::O::Not::Put::O = On If::N::O::WriteBack::P = True If::P::Not::Q::Set::Q = On If::P::Q::Not::Put::Q = On If::P::Q::WriteBack::R = True If::R::Not::S::Set::S = On If::R::S::Not::Put::S = On If::R::S::WriteBack::T = True If::T::Not::U::Set::U = On If::T::U::Not::Put::U = On If::T::U::WriteBack::V = True If::V::Not::W::Set::W = On If::V::W::Not::Put::W = On If::V::W::WriteBack::X = True If::X::Not::Y::Set::Y = On If::X::Y::Not::Put::Y = On If::X::Y::WriteBack::Z = True If::Z::Not::Set::A = On end module Chain::Chain Current = Chain::Next end include Chain module Chain::Current NUMBER = A::PREFIX, Y::INT, W::INT, U::INT, S::INT, Q::INT, O::INT, M::INT, K::INT printf B::FORMAT, NUMBER.join, C::FIZZ, D::BUZZ load A::NEXT end … If::F::Not::J::Not::Set::B = On If::K::Not::Set::K = On If::L::Not::M::Set::M = On If::L::M::Not::Put::M = On …

Slide 49

Slide 49 text

• The module State represents one bit by constant existence “Most Maintainable” tompng1.rb module State include AllOffModule A = On end State::A #=> On State::B #=> Off There is no State::B; Ruby searches for included modules AllOffModule::A = Off AllOffModule::B = Off Ruby finds State::A

Slide 50

Slide 50 text

• The main TRICK for conditional assignment “Most Maintainable” tompng1.rb On::Set #=> NextStateModule Off::Set #=> GargageModule State::A::Set::B = On # Will be one of these: NextStateModule::B = On GarbageModule::B = On if State::A is Off, the assignment is discarded if State::A is On, the assignment is to the next state

Slide 51

Slide 51 text

Winner » eto shinh yhara matz leonid flagitious mame tompng score “Best ASMR” 『最高のASMRで賞』 Tomoya Ishida (tompng) 9 8 8 7 7 8 9 8.00 8

Slide 52

Slide 52 text

"Best ASMR" tompng2.rb $c=%q@E=" \e[4%d;37m%s\e[m" ;n=32.chr;pu ts"\e [H\e[J#{$c=n*54+' $c=% q'+[64.chr]*2*$c+';e val$ c.'+n*10+"\n"+n*57+"spl it*' '"+n*15}";n=l=0;R=->y=0 {n+=1 ;l=$c.lines. map{|m|m=(0..79).chunk{380-n+ 36*Math.sin(0.04.*it-n )<9*y}.map{a=_2.map{m[it]}*'' ;_1&&E%[6,a]||a}*'';m!=l[~-y +=1]&&$><<"\e[#{y}H#{m}\e[37H ";m}};N=(Integer$* [-1]resc ue+30)*H=44100;alias:r:rand ;F=->e,w=1{a=b=c=0;d=( 1-e)**0 .5*20;->v=r-0.5{a=a*w*e+v ;b=b*w*e*e+v;d.*a-2*b+c=c*w *e**3+ v}};A=->u,n,t{(0..n). map{|i|u=u.shuffle.map{|w|R[]; a=u.s ample;b,c,d=[[0.5 ,(0.2+r)*H/3*1.1**i,[[1+r/10,1+r/ 10]][ i]||[1.2+ r/10,1.3+r/5]],[0.3,r*H/2,[1,1+r/5 ]]][t ];e,f=d.shuffle;g=b+r;h=b+r;(0..[w. size/e, a.size/f +c].max).map{g*(w[it*e]||0)+h*(a[[it-c,0].ma x*f]||0)}}}};j=A[A [(0..9).map{a=F[0.998,1i**0.02];(0..28097).m ap{a[].real.*0.1**(8.0*i t/H)-8e-6}},14,0].transpose.map{|d|a=[0]*3e3 ;15.times{|i|R [];b=r (3e3);d[i].each_with_index{a[c=_2+b]=(a[c] ||0)+_1*0.63**i}} ;a},9, 1][4..].flatten(1).shuffle;y=(0..3).map{F[ 1-1e-5]};m=[-1,1].map {[F[1 -1e-4],F[1-5e-5],it]};u=v=w=0;k=[],[],[] ;z=F[0.7,1i**0.5];File.o pen($ *.grep(/[^\d]/)[0]||'output.wav','wb') {|f|f<<'RIFF'+[N*4+36,'WA VEfmt ',32,16,1,2,H,H*4,4,16,'data',N*4].p ack('Va7cVvvVVvva4V');N.tim es{| i|$><

Slide 53

Slide 53 text

"Best ASMR" tompng2.rb

Slide 54

Slide 54 text

• This program generates a sound wave of ocean waves "Best ASMR" tompng2.rb

Slide 55

Slide 55 text

• Combining the same sound doubles the number of sounds – repeat this 15 times "Best ASMR" tompng2.rb

Slide 56

Slide 56 text

• Combining all these sounds creates a complex sound "Best ASMR" tompng2.rb

Slide 57

Slide 57 text

eto shinh yhara matz leonid flagitious mame tompng score Winner » “Most Arithmetic” 『最も算数で賞』 Tomoya Ishida (tompng) 7 9 7 6 9 10 9 8.14 9

Slide 58

Slide 58 text

“Most Arithmetic” tompng3.rb eval->{%w[u=*? a..?i;l=*?j..? r;o=*?s..?z,?_ ;m='#-*&|^`!@$ '.chars;s=[[3] ,[0,1,3,4,6],[ 1,5],[1,4],[0, 4,6],[2,4],[2] ,[1,3,4,6],[], [4], ];a= (0.. 7).m ap{[ ?;*_ 1+'a 4',: a1,? x*(_ 1+2) ]*"T /#{? x.*6 7-_1 }/x; "};v =([c =[?x *150 ]*4, a.reverse,[[6, 3,0].map{"a#{_ 1}T/ #{?x*15}/x"}*( ?;*42)+';xx']* 30,a .map{_1.tr'14' ,'25'},c,]*n=$ /).g sub( /(^| ;)(; *);/ ){$1 +?x* $2.s ize+ ?;}; p,e= [0,1 ].ma p{|t |g=( ["(m fT/' /;#{a=(0..9).m ap{"f#{_1}T/l# {_1} =1./"}*?;};C"' ;#{a.tr'l',?u} ;?C" ",(0..9).map{| i|a="l#{i}T/'/ ;C"' ;";b ="#{o[i-1]+?=i fTi>0}%+";(1.. 9).m ap{a <10?' ca='+o[d-11]:d >9?' ca': o[d- 1]}= %"+c };a+ b+[m [1.. ],?+ ,?"] *';? '}," caT/ '/;C "';" +(1. .8).map{u[8-_1 ]+"T/#{u[9-_1] }=1./;"}*''+u[ 0]+h='=1;?"',( 1..9).map{|i|" u#{i}T/'/;C"'; "+(0..8-i).map {u[8-i-_1]+"T/ #{u[8-_1]}=1./ ;"}* ''+u [i-1 ]+h} ]*?; ).sp lit( /([^ ;]+; )/); ((0. .43) .map {|y| c='' ;q=- >{a= (y-22).abs;b=( c.size+_1-78). abs; [a<7&&b<59||b< 15,(b-30).abs< 14][ t]};110.times{ c+=q[8]?g.shif t||? ;:q[-t]??;:'T' };c.gsub(';T', 'TT' ).rstrip}*n).g sub(/(;|T)(;;+ )(;| $)/){$1+'/'+?x *($2.size-2)+' /'+$ 3}}; F=Fi le;1 0.ti mes{ |i|a ="(n fT/m f=l# {i}= '/;n f=f# {i}=?';def/("+ s[i].map!{"a#{ _1}" }*','+')=(';F. write"#{i}",a+ ?x*( 150-a.size)+n+ v[..-5]+'))&&' +n}; a,*b ="/) &&de f((C nCn<

Slide 59

Slide 59 text

• This program generates files named "+", "0", "1", … “Most Arithmetic” tompng3.rb $ ls entry.rb remarks.markdown $ ruby entry.rb $ ls + 0 1 2 3 4 5 6 7 8 9 '=' entry.rb remarks.markdown

Slide 60

Slide 60 text

“Most Arithmetic” tompng3.rb $ cat 0 (nf /mf=l0='/;nf=f0=?';def/(a3)=(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxx;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxxxxx xxxxx;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxxxx xxxx;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxxx xxx;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxx xx;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxx x;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxx ;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxx a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xx ;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxx x;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxx xx;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxx xxx;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxx xxxx;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxxx xxxxx;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxxxx xxxxxx;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx))&&

Slide 61

Slide 61 text

“Most Arithmetic” tompng3.rb $ cat 0 | ruby -run -e colorize (nf /mf=l0='/;nf=f0=?';def/(a3)=(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxx;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxxxxx xxxxx;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxxxx xxxx;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxxx xxx;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxx xx;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxx x;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxx ;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxx a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xx ;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxx x;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxx xx;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxx xxx;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxx xxxx;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxxx xxxxx;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxxxx xxxxxx;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx))&&

Slide 62

Slide 62 text

“Most Arithmetic” tompng3.rb $ cat 1 | ruby -run -e colorize (nf /mf=l1='/;nf=f1=?';def/(a0,a1,a3,a4,a6)=(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxx;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxxxxx xxxxx;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxxxx xxxx;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxxx xxx;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxx xx;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxx x;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxx ;a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxx a4 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a1 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a6 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a3 /xxxxxxxxxxxxxxx/x;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;a0 /xxxxxxxxxxxxxxx/x;xx a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xx ;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxx x;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxx xx;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxx xxx;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxx xxxx;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxxx xxxxx;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxxxx xxxxxx;a5 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;a2 /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/x;xxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx))&&

Slide 63

Slide 63 text

“Most Arithmetic” tompng3.rb $ cat 1 + 2 = | ruby -run -e colorize $ cat 1 0 + 2 0 = | ruby -run -e colorize

Slide 64

Slide 64 text

• A 2-digit calculator that leverages IRB's syntax highlighting • Parsing differs between local variables or methods “Most Arithmetic” tompng3.rb foo = 1 foo /xxxxx/x bar /xxxxx/x Divisions: "foo / xxxxx / x" Call with a Regexp: "bar(/xxxxx/x)" A Regexp literal is colored as red

Slide 65

Slide 65 text

• This program performs the addition at the syntax level • This code above: – defines x as a local variable if neither a or b is defined – defines y as a local variable if a is defined – defines z as a local variable if b is defined “Most Arithmetic” tompng3.rb a %(<

Slide 66

Slide 66 text

eto shinh yhara matz leonid flagitious mame tompng score Winner » “Most Useful” 『最も便利で賞』 Yusuke Endoh 7 10 8 9 9 9 10 8.86 10

Slide 67

Slide 67 text

“Most Useful” mame3.rb From:pd (`) Date:Wed,01 Jan 2025 00:00:00 +0000 Subject:[PATCH] +an(/.{40}/));exit].gsub(/X.*X|\n(\h+\s)?\+?/,E=""))#TRICK2025]} --- /dev/null +++ pd.rb @@ -0,0 +1,27 @@ +%;`);;BEGIN{eval$s=%q[eval(%q[F=File;puts((dup)?(q="%;`);;BEGIN +{eval$s=%q[#$s]}";U,*,V=R=(0..33.0).map{|t|q.gsub(/./){i=$`.siz +e;c=(i/64*2i-26i+i%64-31)*1i**(t/16.5);x,y=c.rect;r=c.abs;r<13? +4<=r&&r<6&&x>-4||-5|(`)\nD +ate:%a,%d|%b|%Y|%T|%z\nSubject:[PATCH]|".tr(?|,z="\s")[/@.*\n/] +,$`;(i=R.index(q))?(S,T=i<33?R[i,(f=->i{(Time.gm(2025)+86400*i) +.strftime$'};o=f[i+1]+(fXXXXXXXXXXXXXXX[0]+q[/.*\z/]+?\n*2+A%[" +/dev/null",v="pd.rb"]+XXXXXXXXXXXXXXXXXXXB%[0,0,1,27]+U.gsub(/^ +/,?+)).lines[-i-2],EXXXXXXXXXXXXXXXXXXXXXXX,a=A%[v,v];V<<"\n(`\ +n#{a+B%[0,0,1,1]}+dXXXXXXXXXXXXXXXXXXXXXXXXXup=(`)";2)]:($*.siz +e!=2&&abort(["usagXXXXXXXXX.........XXXXXXXXXe:",$0,F,F]*z);$*. +map{o=A%$*;F.read(XXXXXXXXX..XXXXXX..XXXXXXXX_1)});a=[i=0]*v=(s +=[s]+S.lines).sizeXXXXXXXXX..XXXXXX..XXXXXXXX;c=b=s.map{c=_1&&[ +c,?-+_1,i+=1]||0};XXXXXXXXX..XXXXXX..XXXXXXXXT.lines{|t|s.map{| +s|a<<((s)?[x=a[-1]XXXXXXXXX.........XXXXXXXXX,y=a[-v]].max+((f= +s==t)?1:0):0);c,d=(XXXXXXXX..XXXXXXXXXXXXXXXf)?[v+1,z+t]:s&&(x> +y)?[1,?-+s]:[v,?++t]XXXXXXX..XXXXXXXXXXXXXX;b<<[b[-c],d,i+=1]}} +;c=b[-1].flatten;b=c[(XXXXX..XXXXXXXXXXXX1..)%2];(b.map{_1[0]}* +E).scan(/\s{,3}([-+]\s{,XXXXXXXXXXXXXXX6})*[-+]\s{,3}/){n=c[2*i +=$`.size];o=o,B%[n%v+1-1/v,(m=c[2.*i+j=$&.size]-n)%v,T>""?n/v+1 +:0,m/v],b[i,j]}):(o=[];a,b=[A,B].map{_1.sub(?+){'\+'}%(['(\S+)' +]*4)};$<.read=~//;F.write$2,(s=F.readlines$1;o<<[:patching,F,$2 +]*z;(*,n,i,m=[*$~].map{_1.to_i};n+=m;($'=~/\A((-)|\+)?(.*\n)/;$ +2?s[i-=1,1]=[]:$1?s[i-1,0]=$3:n-=1;i+=1;n-=1)while+n>0)while/\A +#{b}/=~$';s*E)while$'=~/^#{a}/);o):([*[?l]*799,1].shuffle*E).sc +an(/.{40}/));exit].gsub(/X.*X|\n(\h+\s)?\+?/,E=""))#TRICK2025]}

Slide 68

Slide 68 text

• This program works as "patch" command “Most Useful” mame3.rb abc def ghi --- test.txt +++ test.txt @@ -1,3 +1,3 @@ abc -def +hello ghi From:pd (`) Date:Wed,01 Jan 2025 00:00:00 +0000 Subject:[PATCH] +an(/.{40}/));exit].gsub(/X.*X|\n(\h+\s)?\+?/,E=""))#TRICK2025]} --- /dev/null +++ pd.rb @@ -0,0 +1,27 @@ +%;`);;BEGIN{eval$s=%q[eval(%q[F=File;puts((dup)?(q="%;`);;BEGIN +{eval$s=%q[#$s]}";U,*,V=R=(0..33.0).map{|t|q.gsub(/./){i=$`.siz +e;c=(i/64*2i-26i+i%64-31)*1i**(t/16.5);x,y=c.rect;r=c.abs;r<13? +4<=r&&r<6&&x>-4||-5|(`)\nD +ate:%a,%d|%b|%Y|%T|%z\nSubject:[PATCH]|".tr(?|,z="\s")[/@.*\n/] +,$`;(i=R.index(q))?(S,T=i<33?R[i,(f=->i{(Time.gm(2025)+86400*i) +.strftime$'};o=f[i+1]+(fXXXXXXXXXXXXXXX[0]+q[/.*\z/]+?\n*2+A%[" +/dev/null",v="pd.rb"]+XXXXXXXXXXXXXXXXXXXB%[0,0,1,27]+U.gsub(/^ +/,?+)).lines[-i-2],EXXXXXXXXXXXXXXXXXXXXXXX,a=A%[v,v];V<<"\n(`\ +n#{a+B%[0,0,1,1]}+dXXXXXXXXXXXXXXXXXXXXXXXXXup=(`)";2)]:($*.siz +e!=2&&abort(["usagXXXXXXXXX.........XXXXXXXXXe:",$0,F,F]*z);$*. +map{o=A%$*;F.read(XXXXXXXXX..XXXXXX..XXXXXXXX_1)});a=[i=0]*v=(s +=[s]+S.lines).sizeXXXXXXXXX..XXXXXX..XXXXXXXX;c=b=s.map{c=_1&&[ +c,?-+_1,i+=1]||0};XXXXXXXXX..XXXXXX..XXXXXXXXT.lines{|t|s.map{| +s|a<<((s)?[x=a[-1]XXXXXXXXX.........XXXXXXXXX,y=a[-v]].max+((f= +s==t)?1:0):0);c,d=(XXXXXXXX..XXXXXXXXXXXXXXXf)?[v+1,z+t]:s&&(x> +y)?[1,?-+s]:[v,?++t]XXXXXXX..XXXXXXXXXXXXXX;b<<[b[-c],d,i+=1]}} +;c=b[-1].flatten;b=c[(XXXXX..XXXXXXXXXXXX1..)%2];(b.map{_1[0]}* +E).scan(/\s{,3}([-+]\s{,XXXXXXXXXXXXXXX6})*[-+]\s{,3}/){n=c[2*i +=$`.size];o=o,B%[n%v+1-1/v,(m=c[2.*i+j=$&.size]-n)%v,T>""?n/v+1 +:0,m/v],b[i,j]}):(o=[];a,b=[A,B].map{_1.sub(?+){'\+'}%(['(\S+)' +]*4)};$<.read=~//;F.write$2,(s=F.readlines$1;o<<[:patching,F,$2 +]*z;(*,n,i,m=[*$~].map{_1.to_i};n+=m;($'=~/\A((-)|\+)?(.*\n)/;$ +2?s[i-=1,1]=[]:$1?s[i-1,0]=$3:n-=1;i+=1;n-=1)while+n>0)while/\A +#{b}/=~$';s*E)while$'=~/^#{a}/);o):([*[?l]*799,1].shuffle*E).sc +an(/.{40}/));exit].gsub(/X.*X|\n(\h+\s)?\+?/,E=""))#TRICK2025]} abc hello ghi test.patch entry.rb test.txt

Slide 69

Slide 69 text

• This program IS a patch file “Most Useful” mame3.rb rom:pd (`) Date:Wed,01 Jan 2025 00:00:00 +0000 Subject:[PATCH] +an(/.{40}/));exit].gsub(/X.*X|\n(\h+\s)?\+?/,E=""))#TRIC --- /dev/null +++ pd.rb @@ -0,0 +1,27 @@ +%;`);;BEGIN{eval$s=%q[eval(%q[F=File;puts((dup)?(q="%;`);;BEGIN +{eval$s=%q[#$s]}";U,*,V=R=(0..33.0).map{|t|q.gsub(/./){i=$`.siz +e;c=(i/64*2i-26i+i%64-31)*1i**(t/16.5);x,y=c.rect;r=c.abs;r<13? +4<=r&&r<6&&x>-4||-5|(`)\nD +ate:%a,%d|%b|%Y|%T|%z\nSubject:[PATCH]|".tr(?|,z="\s")[/@.*\n/] creates "pd.rb"

Slide 70

Slide 70 text

• pd.rb “Most Useful” mame3.rb %;`);;BEGIN{eval$s=%q[eval(%q[F=File;puts((dup)?(q="%;`);;BEGIN {eval$s=%q[#$s]}";U,*,V=R=(0..33.0).map{|t|q.gsub(/./){i=$`.siz e;c=(i/64*2i-26i+i%64-31)*1i**(t/16.5);x,y=c.rect;r=c.abs;r<13? 4<=r&&r<6&&x>-4||-5|(`)\nD ate:%a,%d|%b|%Y|%T|%z\nSubject:[PATCH]|".tr(?|,z="\s")[/@.*\n/] ,$`;(i=R.index(q))?(S,T=i<33?R[i,(f=->i{(Time.gm(2025)+86400*i) .strftime$'};o=f[i+1]+(fXXXXXXXXXXXXXXX[0]+q[/.*\z/]+?\n*2+A%[" /dev/null",v="pd.rb"]+XXXXXXXXXXXXXXXXXXXB%[0,0,1,27]+U.gsub(/^ /,?+)).lines[-i-2],EXXXXXXXXXXXXXXXXXXXXXXX,a=A%[v,v];V<<"\n(`\ n#{a+B%[0,0,1,1]}+dXXXXXXXXXXXXXXXXXXXXXXXXXup=(`)";2)]:($*.siz e!=2&&abort(["usagXXXXXXXXX.........XXXXXXXXXe:",$0,F,F]*z);$*. map{o=A%$*;F.read(XXXXXXXXX..XXXXXX..XXXXXXXX_1)});a=[i=0]*v=(s =[s]+S.lines).sizeXXXXXXXXX..XXXXXX..XXXXXXXX;c=b=s.map{c=_1&&[ c,?-+_1,i+=1]||0};XXXXXXXXX..XXXXXX..XXXXXXXXT.lines{|t|s.map{| s|a<<((s)?[x=a[-1]XXXXXXXXX.........XXXXXXXXX,y=a[-v]].max+((f= s==t)?1:0):0);c,d=(XXXXXXXX..XXXXXXXXXXXXXXXf)?[v+1,z+t]:s&&(x> y)?[1,?-+s]:[v,?++t]XXXXXXX..XXXXXXXXXXXXXX;b<<[b[-c],d,i+=1]}} ;c=b[-1].flatten;b=c[(XXXXX..XXXXXXXXXXXX1..)%2];(b.map{_1[0]}* E).scan(/\s{,3}([-+]\s{,XXXXXXXXXXXXXXX6})*[-+]\s{,3}/){n=c[2*i =$`.size];o=o,B%[n%v+1-1/v,(m=c[2.*i+j=$&.size]-n)%v,T>""?n/v+1 :0,m/v],b[i,j]}):(o=[];a,b=[A,B].map{_1.sub(?+){'\+'}%(['(\S+)' ]*4)};$<.read=~//;F.write$2,(s=F.readlines$1;o<<[:patching,F,$2 ]*z;(*,n,i,m=[*$~].map{_1.to_i};n+=m;($'=~/\A((-)|\+)?(.*\n)/;$ 2?s[i-=1,1]=[]:$1?s[i-1,0]=$3:n-=1;i+=1;n-=1)while+n>0)while/\A #{b}/=~$';s*E)while$'=~/^#{a}/);o):([*[?l]*799,1].shuffle*E).sc an(/.{40}/));exit].gsub(/X.*X|\n(\h+\s)?\+?/,E=""))#TRICK2025]}

Slide 71

Slide 71 text

“Most Useful” mame3.rb $ ruby pd.rb From:pd (`) Date:Thu,02 Jan 2025 00:00:00 +0000 Subject:[PATCH] +#{b}/=~$';s*E)while$'=~/^#{a}/);o):([*[?l]*799,1].shuffle*E).sc --- pd.rb +++ pd.rb @@ -8,13 +8,13 @@ .strftime$'};o=f[i+1]+(fXXXXXXXXXXXXXXX[0]+q[/.*\z/]+?\n*2+A%[" /dev/null",v="pd.rb"]+XXXXXXXXXXXXXXXXXXXB%[0,0,1,27]+U.gsub(/^ /,?+)).lines[-i-2],EXXXXXXXXXXXXXXXXXXXXXXX,a=A%[v,v];V<<"\n(`\ -n#{a+B%[0,0,1,1]}+dXXXXXXXXXXXXXXXXXXXXXXXXXup=(`)";2)]:($*.siz -e!=2&&abort(["usagXXXXXXXXX.........XXXXXXXXXe:",$0,F,F]*z);$*. -map{o=A%$*;F.read(XXXXXXXXX..XXXXXX..XXXXXXXX_1)});a=[i=0]*v=(s -=[s]+S.lines).sizeXXXXXXXXX..XXXXXX..XXXXXXXX;c=b=s.map{c=_1&&[ +n#{a+B%[0,0,1,1]}+dXXXXXXXXXXXX.XXXXXXXXXXXXup=(`)";2)]:($*.siz +e!=2&&abort(["usagXXXXXXXX..........XXXXXXXXXe:",$0,F,F]*z);$*. … a patch for "pd.rb" "pd.rb" produces…

Slide 72

Slide 72 text

• pd.rb (v1) “Most Useful” mame3.rb %;`);;BEGIN{eval$s=%q[eval(%q[F=File;puts((dup)?(q="%;`);;BEGIN {eval$s=%q[#$s]}";U,*,V=R=(0..33.0).map{|t|q.gsub(/./){i=$`.siz e;c=(i/64*2i-26i+i%64-31)*1i**(t/16.5);x,y=c.rect;r=c.abs;r<13? 4<=r&&r<6&&x>-4||-5|(`)\nD ate:%a,%d|%b|%Y|%T|%z\nSubject:[PATCH]|".tr(?|,z="\s")[/@.*\n/] ,$`;(i=R.index(q))?(S,T=i<33?R[i,(f=->i{(Time.gm(2025)+86400*i) .strftime$'};o=f[i+1]+(fXXXXXXXXXXXXXXX[0]+q[/.*\z/]+?\n*2+A%[" /dev/null",v="pd.rb"]+XXXXXXXXXXXXXXXXXXXB%[0,0,1,27]+U.gsub(/^ /,?+)).lines[-i-2],EXXXXXXXXXXXXXXXXXXXXXXX,a=A%[v,v];V<<"\n(`\ n#{a+B%[0,0,1,1]}+dXXXXXXXXXXXXXXXXXXXXXXXXXup=(`)";2)]:($*.siz e!=2&&abort(["usagXXXXXXXXX.........XXXXXXXXXe:",$0,F,F]*z);$*. map{o=A%$*;F.read(XXXXXXXXX..XXXXXX..XXXXXXXX_1)});a=[i=0]*v=(s =[s]+S.lines).sizeXXXXXXXXX..XXXXXX..XXXXXXXX;c=b=s.map{c=_1&&[ c,?-+_1,i+=1]||0};XXXXXXXXX..XXXXXX..XXXXXXXXT.lines{|t|s.map{| s|a<<((s)?[x=a[-1]XXXXXXXXX.........XXXXXXXXX,y=a[-v]].max+((f= s==t)?1:0):0);c,d=(XXXXXXXX..XXXXXXXXXXXXXXXf)?[v+1,z+t]:s&&(x> y)?[1,?-+s]:[v,?++t]XXXXXXX..XXXXXXXXXXXXXX;b<<[b[-c],d,i+=1]}} ;c=b[-1].flatten;b=c[(XXXXX..XXXXXXXXXXXX1..)%2];(b.map{_1[0]}* E).scan(/\s{,3}([-+]\s{,XXXXXXXXXXXXXXX6})*[-+]\s{,3}/){n=c[2*i =$`.size];o=o,B%[n%v+1-1/v,(m=c[2.*i+j=$&.size]-n)%v,T>""?n/v+1 :0,m/v],b[i,j]}):(o=[];a,b=[A,B].map{_1.sub(?+){'\+'}%(['(\S+)' ]*4)};$<.read=~//;F.write$2,(s=F.readlines$1;o<<[:patching,F,$2 ]*z;(*,n,i,m=[*$~].map{_1.to_i};n+=m;($'=~/\A((-)|\+)?(.*\n)/;$ 2?s[i-=1,1]=[]:$1?s[i-1,0]=$3:n-=1;i+=1;n-=1)while+n>0)while/\A #{b}/=~$';s*E)while$'=~/^#{a}/);o):([*[?l]*799,1].shuffle*E).sc an(/.{40}/));exit].gsub(/X.*X|\n(\h+\s)?\+?/,E=""))#TRICK2025]} From:pd (`) Date:Thu,02 Jan 2025 00:00:00 +0000 Subject:[PATCH] +#{b}/=~$';s*E)while$'=~/^#{a}/);o):([*[?l]*799,1].shuffle*E).sc --- pd.rb +++ pd.rb @@ -8,13 +8,13 @@ .strftime$'};o=f[i+1]+(fXXXXXXXXXXXXXXX[0]+q[/.*\z/]+?\n*2+A%[" /dev/null",v="pd.rb"]+XXXXXXXXXXXXXXXXXXXB%[0,0,1,27]+U.gsub(/^ /,?+)).lines[-i-2],EXXXXXXXXXXXXXXXXXXXXXXX,a=A%[v,v];V<<"\n(`\ -n#{a+B%[0,0,1,1]}+dXXXXXXXXXXXXXXXXXXXXXXXXXup=(`)";2)]:($*.siz -e!=2&&abort(["usagXXXXXXXXX.........XXXXXXXXXe:",$0,F,F]*z);$*. -map{o=A%$*;F.read(XXXXXXXXX..XXXXXX..XXXXXXXX_1)});a=[i=0]*v=(s -=[s]+S.lines).sizeXXXXXXXXX..XXXXXX..XXXXXXXX;c=b=s.map{c=_1&&[ +n#{a+B%[0,0,1,1]}+dXXXXXXXXXXXX.XXXXXXXXXXXXup=(`)";2)]:($*.siz +e!=2&&abort(["usagXXXXXXXX..........XXXXXXXXXe:",$0,F,F]*z);$*. +map{o=A%$*;F.read(XXXXXXXX..XXXXXXX..XXXXXXXX_1)});a=[i=0]*v=(s +=[s]+S.lines).sizeXXXXXXXX..XXXXXXX...XXXXXXX;c=b=s.map{c=_1&&[ c,?-+_1,i+=1]||0};XXXXXXXXX..XXXXXX..XXXXXXXXT.lines{|t|s.map{| s|a<<((s)?[x=a[-1]XXXXXXXXX.........XXXXXXXXX,y=a[-v]].max+((f= -s==t)?1:0):0);c,d=(XXXXXXXX..XXXXXXXXXXXXXXXf)?[v+1,z+t]:s&&(x> +s==t)?1:0):0);c,d=(XXXXXXXX..XX.XXXXXXXXXXXXf)?[v+1,z+t]:s&&(x> y)?[1,?-+s]:[v,?++t]XXXXXXX..XXXXXXXXXXXXXX;b<<[b[-c],d,i+=1]}} ;c=b[-1].flatten;b=c[(XXXXX..XXXXXXXXXXXX1..)%2];(b.map{_1[0]}* E).scan(/\s{,3}([-+]\s{,XXXXXXXXXXXXXXX6})*[-+]\s{,3}/){n=c[2*i produced patch apply run

Slide 73

Slide 73 text

• pd.rb (v2) “Most Useful” mame3.rb %;`);;BEGIN{eval$s=%q[eval(%q[F=File;puts((dup)?(q="%;`);;BEGIN {eval$s=%q[#$s]}";U,*,V=R=(0..33.0).map{|t|q.gsub(/./){i=$`.siz e;c=(i/64*2i-26i+i%64-31)*1i**(t/16.5);x,y=c.rect;r=c.abs;r<13? 4<=r&&r<6&&x>-4||-5|(`)\nD ate:%a,%d|%b|%Y|%T|%z\nSubject:[PATCH]|".tr(?|,z="\s")[/@.*\n/] ,$`;(i=R.index(q))?(S,T=i<33?R[i,(f=->i{(Time.gm(2025)+86400*i) .strftime$'};o=f[i+1]+(fXXXXXXXXXXXXXXX[0]+q[/.*\z/]+?\n*2+A%[" /dev/null",v="pd.rb"]+XXXXXXXXXXXXXXXXXXXB%[0,0,1,27]+U.gsub(/^ /,?+)).lines[-i-2],EXXXXXXXXXXXXXXXXXXXXXXX,a=A%[v,v];V<<"\n(`\ n#{a+B%[0,0,1,1]}+dXXXXXXXXXXXX.XXXXXXXXXXXXup=(`)";2)]:($*.siz e!=2&&abort(["usagXXXXXXXX..........XXXXXXXXXe:",$0,F,F]*z);$*. map{o=A%$*;F.read(XXXXXXXX..XXXXXXX..XXXXXXXX_1)});a=[i=0]*v=(s =[s]+S.lines).sizeXXXXXXXX..XXXXXXX...XXXXXXX;c=b=s.map{c=_1&&[ c,?-+_1,i+=1]||0};XXXXXXXXX..XXXXXX..XXXXXXXXT.lines{|t|s.map{| s|a<<((s)?[x=a[-1]XXXXXXXXX.........XXXXXXXXX,y=a[-v]].max+((f= s==t)?1:0):0);c,d=(XXXXXXXX..XX.XXXXXXXXXXXXf)?[v+1,z+t]:s&&(x> y)?[1,?-+s]:[v,?++t]XXXXXXX..XXXXXXXXXXXXXX;b<<[b[-c],d,i+=1]}} ;c=b[-1].flatten;b=c[(XXXXX..XXXXXXXXXXXX1..)%2];(b.map{_1[0]}* E).scan(/\s{,3}([-+]\s{,XXXXXXXXXXXXXXX6})*[-+]\s{,3}/){n=c[2*i =$`.size];o=o,B%[n%v+1-1/v,(m=c[2.*i+j=$&.size]-n)%v,T>""?n/v+1 :0,m/v],b[i,j]}):(o=[];a,b=[A,B].map{_1.sub(?+){'\+'}%(['(\S+)' ]*4)};$<.read=~//;F.write$2,(s=F.readlines$1;o<<[:patching,F,$2 ]*z;(*,n,i,m=[*$~].map{_1.to_i};n+=m;($'=~/\A((-)|\+)?(.*\n)/;$ 2?s[i-=1,1]=[]:$1?s[i-1,0]=$3:n-=1;i+=1;n-=1)while+n>0)while/\A #{b}/=~$';s*E)while$'=~/^#{a}/);o):([*[?l]*799,1].shuffle*E).sc an(/.{40}/));exit].gsub(/X.*X|\n(\h+\s)?\+?/,E=""))#TRICK2025]} From:pd (`) Date:Fri,03 Jan 2025 00:00:00 +0000 Subject:[PATCH] +2?s[i-=1,1]=[]:$1?s[i-1,0]=$3:n-=1;i+=1;n-=1)while+n>0)while/\A --- pd.rb +++ pd.rb @@ -8,15 +8,15 @@ .strftime$'};o=f[i+1]+(fXXXXXXXXXXXXXXX[0]+q[/.*\z/]+?\n*2+A%[" /dev/null",v="pd.rb"]+XXXXXXXXXXXXXXXXXXXB%[0,0,1,27]+U.gsub(/^ /,?+)).lines[-i-2],EXXXXXXXXXXXXXXXXXXXXXXX,a=A%[v,v];V<<"\n(`\ -n#{a+B%[0,0,1,1]}+dXXXXXXXXXXXX.XXXXXXXXXXXXup=(`)";2)]:($*.siz +n#{a+B%[0,0,1,1]}+dXXXXXXXXXXXXXXXXXXXXXXXXXup=(`)";2)]:($*.siz e!=2&&abort(["usagXXXXXXXX..........XXXXXXXXXe:",$0,F,F]*z);$*. map{o=A%$*;F.read(XXXXXXXX..XXXXXXX..XXXXXXXX_1)});a=[i=0]*v=(s -=[s]+S.lines).sizeXXXXXXXX..XXXXXXX...XXXXXXX;c=b=s.map{c=_1&&[ +=[s]+S.lines).sizeXXXXXXXX..XXXXXXX..XXXXXXXX;c=b=s.map{c=_1&&[ c,?-+_1,i+=1]||0};XXXXXXXXX..XXXXXX..XXXXXXXXT.lines{|t|s.map{| s|a<<((s)?[x=a[-1]XXXXXXXXX.........XXXXXXXXX,y=a[-v]].max+((f= -s==t)?1:0):0);c,d=(XXXXXXXX..XX.XXXXXXXXXXXXf)?[v+1,z+t]:s&&(x> -y)?[1,?-+s]:[v,?++t]XXXXXXX..XXXXXXXXXXXXXX;b<<[b[-c],d,i+=1]}} -;c=b[-1].flatten;b=c[(XXXXX..XXXXXXXXXXXX1..)%2];(b.map{_1[0]}* +s==t)?1:0):0);c,d=(XXXXXXXXX..XXXXXXXXXXXXXXf)?[v+1,z+t]:s&&(x> +y)?[1,?-+s]:[v,?++t]XXXXXXXX..XXXXXXXXXXXXX;b<<[b[-c],d,i+=1]}} +;c=b[-1].flatten;b=c[(XXXXXX..XXXXXXXXXXX1..)%2];(b.map{_1[0]}* E).scan(/\s{,3}([-+]\s{,XXXXXXXXXXXXXXX6})*[-+]\s{,3}/){n=c[2*i =$`.size];o=o,B%[n%v+1-1/v,(m=c[2.*i+j=$&.size]-n)%v,T>""?n/v+1 :0,m/v],b[i,j]}):(o=[];a,b=[A,B].map{_1.sub(?+){'\+'}%(['(\S+)' produced patch apply run

Slide 74

Slide 74 text

• pd.rb (v3) “Most Useful” mame3.rb %;`);;BEGIN{eval$s=%q[eval(%q[F=File;puts((dup)?(q="%;`);;BEGIN {eval$s=%q[#$s]}";U,*,V=R=(0..33.0).map{|t|q.gsub(/./){i=$`.siz e;c=(i/64*2i-26i+i%64-31)*1i**(t/16.5);x,y=c.rect;r=c.abs;r<13? 4<=r&&r<6&&x>-4||-5|(`)\nD ate:%a,%d|%b|%Y|%T|%z\nSubject:[PATCH]|".tr(?|,z="\s")[/@.*\n/] ,$`;(i=R.index(q))?(S,T=i<33?R[i,(f=->i{(Time.gm(2025)+86400*i) .strftime$'};o=f[i+1]+(fXXXXXXXXXXXXXXX[0]+q[/.*\z/]+?\n*2+A%[" /dev/null",v="pd.rb"]+XXXXXXXXXXXXXXXXXXXB%[0,0,1,27]+U.gsub(/^ /,?+)).lines[-i-2],EXXXXXXXXXXXXXXXXXXXXXXX,a=A%[v,v];V<<"\n(`\ n#{a+B%[0,0,1,1]}+dXXXXXXXXXXXXXXXXXXXXXXXXXup=(`)";2)]:($*.siz e!=2&&abort(["usagXXXXXXXX..........XXXXXXXXXe:",$0,F,F]*z);$*. map{o=A%$*;F.read(XXXXXXXX..XXXXXXX..XXXXXXXX_1)});a=[i=0]*v=(s =[s]+S.lines).sizeXXXXXXXX..XXXXXXX..XXXXXXXX;c=b=s.map{c=_1&&[ c,?-+_1,i+=1]||0};XXXXXXXXX..XXXXXX..XXXXXXXXT.lines{|t|s.map{| s|a<<((s)?[x=a[-1]XXXXXXXXX.........XXXXXXXXX,y=a[-v]].max+((f= s==t)?1:0):0);c,d=(XXXXXXXXX..XXXXXXXXXXXXXXf)?[v+1,z+t]:s&&(x> y)?[1,?-+s]:[v,?++t]XXXXXXXX..XXXXXXXXXXXXX;b<<[b[-c],d,i+=1]}} ;c=b[-1].flatten;b=c[(XXXXXX..XXXXXXXXXXX1..)%2];(b.map{_1[0]}* E).scan(/\s{,3}([-+]\s{,XXXXXXXXXXXXXXX6})*[-+]\s{,3}/){n=c[2*i =$`.size];o=o,B%[n%v+1-1/v,(m=c[2.*i+j=$&.size]-n)%v,T>""?n/v+1 :0,m/v],b[i,j]}):(o=[];a,b=[A,B].map{_1.sub(?+){'\+'}%(['(\S+)' ]*4)};$<.read=~//;F.write$2,(s=F.readlines$1;o<<[:patching,F,$2 ]*z;(*,n,i,m=[*$~].map{_1.to_i};n+=m;($'=~/\A((-)|\+)?(.*\n)/;$ 2?s[i-=1,1]=[]:$1?s[i-1,0]=$3:n-=1;i+=1;n-=1)while+n>0)while/\A #{b}/=~$';s*E)while$'=~/^#{a}/);o):([*[?l]*799,1].shuffle*E).sc an(/.{40}/));exit].gsub(/X.*X|\n(\h+\s)?\+?/,E=""))#TRICK2025]} From:pd (`) Date:Sat,04 Jan 2025 00:00:00 +0000 Subject:[PATCH] +]*z;(*,n,i,m=[*$~].map{_1.to_i};n+=m;($'=~/\A((-)|\+)?(.*\n)/;$ --- pd.rb +++ pd.rb @@ -9,14 +9,14 @@ /dev/null",v="pd.rb"]+XXXXXXXXXXXXXXXXXXXB%[0,0,1,27]+U.gsub(/^ /,?+)).lines[-i-2],EXXXXXXXXXXXXXXXXXXXXXXX,a=A%[v,v];V<<"\n(`\ n#{a+B%[0,0,1,1]}+dXXXXXXXXXXXXXXXXXXXXXXXXXup=(`)";2)]:($*.siz -e!=2&&abort(["usagXXXXXXXX..........XXXXXXXXXe:",$0,F,F]*z);$*. +e!=2&&abort(["usagXXXXXXX...........XXXXXXXXXe:",$0,F,F]*z);$*. map{o=A%$*;F.read(XXXXXXXX..XXXXXXX..XXXXXXXX_1)});a=[i=0]*v=(s =[s]+S.lines).sizeXXXXXXXX..XXXXXXX..XXXXXXXX;c=b=s.map{c=_1&&[ c,?-+_1,i+=1]||0};XXXXXXXXX..XXXXXX..XXXXXXXXT.lines{|t|s.map{| s|a<<((s)?[x=a[-1]XXXXXXXXX.........XXXXXXXXX,y=a[-v]].max+((f= s==t)?1:0):0);c,d=(XXXXXXXXX..XXXXXXXXXXXXXXf)?[v+1,z+t]:s&&(x> -y)?[1,?-+s]:[v,?++t]XXXXXXXX..XXXXXXXXXXXXX;b<<[b[-c],d,i+=1]}} -;c=b[-1].flatten;b=c[(XXXXXX..XXXXXXXXXXX1..)%2];(b.map{_1[0]}* +y)?[1,?-+s]:[v,?++t]XXXXXXXXX..XXXXXXXXXXXX;b<<[b[-c],d,i+=1]}} +;c=b[-1].flatten;b=c[(XXXXXXX..XXXXXXXXXX1..)%2];(b.map{_1[0]}* E).scan(/\s{,3}([-+]\s{,XXXXXXXXXXXXXXX6})*[-+]\s{,3}/){n=c[2*i =$`.size];o=o,B%[n%v+1-1/v,(m=c[2.*i+j=$&.size]-n)%v,T>""?n/v+1 :0,m/v],b[i,j]}):(o=[];a,b=[A,B].map{_1.sub(?+){'\+'}%(['(\S+)' produced patch apply run

Slide 75

Slide 75 text

• pd.rb (v4) “Most Useful” mame3.rb %;`);;BEGIN{eval$s=%q[eval(%q[F=File;puts((dup)?(q="%;`);;BEGIN {eval$s=%q[#$s]}";U,*,V=R=(0..33.0).map{|t|q.gsub(/./){i=$`.siz e;c=(i/64*2i-26i+i%64-31)*1i**(t/16.5);x,y=c.rect;r=c.abs;r<13? 4<=r&&r<6&&x>-4||-5|(`)\nD ate:%a,%d|%b|%Y|%T|%z\nSubject:[PATCH]|".tr(?|,z="\s")[/@.*\n/] ,$`;(i=R.index(q))?(S,T=i<33?R[i,(f=->i{(Time.gm(2025)+86400*i) .strftime$'};o=f[i+1]+(fXXXXXXXXXXXXXXX[0]+q[/.*\z/]+?\n*2+A%[" /dev/null",v="pd.rb"]+XXXXXXXXXXXXXXXXXXXB%[0,0,1,27]+U.gsub(/^ /,?+)).lines[-i-2],EXXXXXXXXXXXXXXXXXXXXXXX,a=A%[v,v];V<<"\n(`\ n#{a+B%[0,0,1,1]}+dXXXXXXXXXXXXXXXXXXXXXXXXXup=(`)";2)]:($*.siz e!=2&&abort(["usagXXXXXXX...........XXXXXXXXXe:",$0,F,F]*z);$*. map{o=A%$*;F.read(XXXXXXXX..XXXXXXX..XXXXXXXX_1)});a=[i=0]*v=(s =[s]+S.lines).sizeXXXXXXXX..XXXXXXX..XXXXXXXX;c=b=s.map{c=_1&&[ c,?-+_1,i+=1]||0};XXXXXXXXX..XXXXXX..XXXXXXXXT.lines{|t|s.map{| s|a<<((s)?[x=a[-1]XXXXXXXXX.........XXXXXXXXX,y=a[-v]].max+((f= s==t)?1:0):0);c,d=(XXXXXXXXX..XXXXXXXXXXXXXXf)?[v+1,z+t]:s&&(x> y)?[1,?-+s]:[v,?++t]XXXXXXXXX..XXXXXXXXXXXX;b<<[b[-c],d,i+=1]}} ;c=b[-1].flatten;b=c[(XXXXXXX..XXXXXXXXXX1..)%2];(b.map{_1[0]}* E).scan(/\s{,3}([-+]\s{,XXXXXXXXXXXXXXX6})*[-+]\s{,3}/){n=c[2*i =$`.size];o=o,B%[n%v+1-1/v,(m=c[2.*i+j=$&.size]-n)%v,T>""?n/v+1 :0,m/v],b[i,j]}):(o=[];a,b=[A,B].map{_1.sub(?+){'\+'}%(['(\S+)' ]*4)};$<.read=~//;F.write$2,(s=F.readlines$1;o<<[:patching,F,$2 ]*z;(*,n,i,m=[*$~].map{_1.to_i};n+=m;($'=~/\A((-)|\+)?(.*\n)/;$ 2?s[i-=1,1]=[]:$1?s[i-1,0]=$3:n-=1;i+=1;n-=1)while+n>0)while/\A #{b}/=~$';s*E)while$'=~/^#{a}/);o):([*[?l]*799,1].shuffle*E).sc an(/.{40}/));exit].gsub(/X.*X|\n(\h+\s)?\+?/,E=""))#TRICK2025]} "p" is rotating

Slide 76

Slide 76 text

• pd.rb (v33) “Most Useful” mame3.rb %;`);;BEGIN{eval$s=%q[eval(%q[F=File;puts((dup)?(q="%;`);;BEGIN {eval$s=%q[#$s]}";U,*,V=R=(0..33.0).map{|t|q.gsub(/./){i=$`.siz e;c=(i/64*2i-26i+i%64-31)*1i**(t/16.5);x,y=c.rect;r=c.abs;r<13? 4<=r&&r<6&&x>-4||-5|(`)\nD ate:%a,%d|%b|%Y|%T|%z\nSubject:[PATCH]|".tr(?|,z="\s")[/@.*\n/] ,$`;(i=R.index(q))?(S,T=i<33?R[i,(f=->i{(Time.gm(2025)+86400*i) .strftime$'};o=f[i+1]+(fXXXXXXXXXXXXXXX[0]+q[/.*\z/]+?\n*2+A%[" /dev/null",v="pd.rb"]+XXXXXXXXXXXX..XXXXXB%[0,0,1,27]+U.gsub(/^ /,?+)).lines[-i-2],EXXXXXXXXXXXXXX..XXXXXXX,a=A%[v,v];V<<"\n(`\ n#{a+B%[0,0,1,1]}+dXXXXXXXXXXXXXXX..XXXXXXXXup=(`)";2)]:($*.siz e!=2&&abort(["usagXXXXXXXXX.........XXXXXXXXXe:",$0,F,F]*z);$*. map{o=A%$*;F.read(XXXXXXXX..XXXXXX..XXXXXXXXX_1)});a=[i=0]*v=(s =[s]+S.lines).sizeXXXXXXXX..XXXXXX..XXXXXXXXX;c=b=s.map{c=_1&&[ c,?-+_1,i+=1]||0};XXXXXXXX..XXXXXX..XXXXXXXXXT.lines{|t|s.map{| s|a<<((s)?[x=a[-1]XXXXXXXXX.........XXXXXXXXX,y=a[-v]].max+((f= s==t)?1:0):0);c,d=(XXXXXXXXXXXXXXXXXXXXXXXXXf)?[v+1,z+t]:s&&(x> y)?[1,?-+s]:[v,?++t]XXXXXXXXXXXXXXXXXXXXXXX;b<<[b[-c],d,i+=1]}} ;c=b[-1].flatten;b=c[(XXXXXXXXXXXXXXXXXXX1..)%2];(b.map{_1[0]}* E).scan(/\s{,3}([-+]\s{,XXXXXXXXXXXXXXX6})*[-+]\s{,3}/){n=c[2*i =$`.size];o=o,B%[n%v+1-1/v,(m=c[2.*i+j=$&.size]-n)%v,T>""?n/v+1 :0,m/v],b[i,j]}):(o=[];a,b=[A,B].map{_1.sub(?+){'\+'}%(['(\S+)' ]*4)};$<.read=~//;F.write$2,(s=F.readlines$1;o<<[:patching,F,$2 ]*z;(*,n,i,m=[*$~].map{_1.to_i};n+=m;($'=~/\A((-)|\+)?(.*\n)/;$ 2?s[i-=1,1]=[]:$1?s[i-1,0]=$3:n-=1;i+=1;n-=1)while+n>0)while/\A #{b}/=~$';s*E)while$'=~/^#{a}/);o):([*[?l]*799,1].shuffle*E).sc an(/.{40}/));exit].gsub(/X.*X|\n(\h+\s)?\+?/,E=""))#TRICK2025]} (` --- pd.rb +++ pd.rb "p" is now "d"

Slide 77

Slide 77 text

• pd.rb (v33) works as "diff" command “Most Useful” mame3.rb %;`);;BEGIN{eval$s=%q[eval(%q[F=File;puts((dup)?(q="%;`);;BEGIN {eval$s=%q[#$s]}";U,*,V=R=(0..33.0).map{|t|q.gsub(/./){i=$`.siz e;c=(i/64*2i-26i+i%64-31)*1i**(t/16.5);x,y=c.rect;r=c.abs;r<13? 4<=r&&r<6&&x>-4||-5|(`)\nD ate:%a,%d|%b|%Y|%T|%z\nSubject:[PATCH]|".tr(?|,z="\s")[/@.*\n/] ,$`;(i=R.index(q))?(S,T=i<33?R[i,(f=->i{(Time.gm(2025)+86400*i) .strftime$'};o=f[i+1]+(fXXXXXXXXXXXXXXX[0]+q[/.*\z/]+?\n*2+A%[" /dev/null",v="pd.rb"]+XXXXXXXXXXXX..XXXXXB%[0,0,1,27]+U.gsub(/^ /,?+)).lines[-i-2],EXXXXXXXXXXXXXX..XXXXXXX,a=A%[v,v];V<<"\n(`\ n#{a+B%[0,0,1,1]}+dXXXXXXXXXXXXXXX..XXXXXXXXup=(`)";2)]:($*.siz e!=2&&abort(["usagXXXXXXXXX.........XXXXXXXXXe:",$0,F,F]*z);$*. map{o=A%$*;F.read(XXXXXXXX..XXXXXX..XXXXXXXXX_1)});a=[i=0]*v=(s =[s]+S.lines).sizeXXXXXXXX..XXXXXX..XXXXXXXXX;c=b=s.map{c=_1&&[ c,?-+_1,i+=1]||0};XXXXXXXX..XXXXXX..XXXXXXXXXT.lines{|t|s.map{| s|a<<((s)?[x=a[-1]XXXXXXXXX.........XXXXXXXXX,y=a[-v]].max+((f= s==t)?1:0):0);c,d=(XXXXXXXXXXXXXXXXXXXXXXXXXf)?[v+1,z+t]:s&&(x> y)?[1,?-+s]:[v,?++t]XXXXXXXXXXXXXXXXXXXXXXX;b<<[b[-c],d,i+=1]}} ;c=b[-1].flatten;b=c[(XXXXXXXXXXXXXXXXXXX1..)%2];(b.map{_1[0]}* E).scan(/\s{,3}([-+]\s{,XXXXXXXXXXXXXXX6})*[-+]\s{,3}/){n=c[2*i =$`.size];o=o,B%[n%v+1-1/v,(m=c[2.*i+j=$&.size]-n)%v,T>""?n/v+1 :0,m/v],b[i,j]}):(o=[];a,b=[A,B].map{_1.sub(?+){'\+'}%(['(\S+)' ]*4)};$<.read=~//;F.write$2,(s=F.readlines$1;o<<[:patching,F,$2 ]*z;(*,n,i,m=[*$~].map{_1.to_i};n+=m;($'=~/\A((-)|\+)?(.*\n)/;$ 2?s[i-=1,1]=[]:$1?s[i-1,0]=$3:n-=1;i+=1;n-=1)while+n>0)while/\A #{b}/=~$';s*E)while$'=~/^#{a}/);o):([*[?l]*799,1].shuffle*E).sc an(/.{40}/));exit].gsub(/X.*X|\n(\h+\s)?\+?/,E=""))#TRICK2025]} (` --- pd.rb +++ pd.rb @@ -0,0 +1,1 @@ +dup=(`) abc def ghi abc hello ghi test1.txt test2.txt pd.rb (v33) --- test.txt +++ test.txt @@ -1,3 +1,3 @@ abc -def +hello ghi

Slide 78

Slide 78 text

• All patches are "mailbox" format – Using "git am" instead of "patch" will produce the original code in "git log --oneline" – You can do: “Most Useful” mame3.rb $ git log --oneline d77817b (HEAD -> master) From:pd (`) ae46910 Date:Wed,01 Jan 2025 00:00:00 +0000 2997cd8 Subject:[PATCH] an(/.{40}/));exit].gsub(/X.*X|\n(\h+\s)?\+?/,E=""))#TRICK2025]} 8383371 e71b7f3 --- /dev/null 2aa09dd +++ pd.rb 8fa9da6 @@ -0,0 +1,27 @@ fb6524d +%;`);;BEGIN{eval$s=%q[eval(%q[F=File;puts((dup)?(q="%;`);;BEGIN 300148a +{eval$s=%q[#$s]}";U,*,V=R=(0..33.0).map{|t|q.gsub(/./){i=$`.siz a41075b +e;c=(i/64*2i-26i+i%64-31)*1i**(t/16.5);x,y=c.rect;r=c.abs;r<13? 035bf0e +4<=r&&r<6&&x>-4||-5|(`)\nD cefd736 +ate:%a,%d|%b|%Y|%T|%z\nSubject:[PATCH]|".tr(?|,z="\s")[/@.*\n/] 9ce0664 +,$`;(i=R.index(q))?(S,T=i<33?R[i,(f=->i{(Time.gm(2025)+86400*i) b338242 +.strftime$'};o=f[i+1]+(fXXXXXXXXXXXXXXX[0]+q[/.*\z/]+?\n*2+A%[" 57cd356 +/dev/null",v="pd.rb"]+XXXXXXXXXXXXXXXXXXXB%[0,0,1,27]+U.gsub(/^ 99eb94a +/,?+)).lines[-i-2],EXXXXXXXXXXXXXXXXXXXXXXX,a=A%[v,v];V<<"\n(`\ d06adef +n#{a+B%[0,0,1,1]}+dXXXXXXXXXXXXXXXXXXXXXXXXXup=(`)";2)]:($*.siz 5997548 +e!=2&&abort(["usagXXXXXXXXX.........XXXXXXXXXe:",$0,F,F]*z);$*. 3eb0da7 +map{o=A%$*;F.read(XXXXXXXXX..XXXXXX..XXXXXXXX_1)});a=[i=0]*v=(s 17b62bc +=[s]+S.lines).sizeXXXXXXXXX..XXXXXX..XXXXXXXX;c=b=s.map{c=_1&&[ 15b482a +c,?-+_1,i+=1]||0};XXXXXXXXX..XXXXXX..XXXXXXXXT.lines{|t|s.map{| 7051c79 +s|a<<((s)?[x=a[-1]XXXXXXXXX.........XXXXXXXXX,y=a[-v]].max+((f= 5db51d9 +s==t)?1:0):0);c,d=(XXXXXXXX..XXXXXXXXXXXXXXXf)?[v+1,z+t]:s&&(x> 930bc4a +y)?[1,?-+s]:[v,?++t]XXXXXXX..XXXXXXXXXXXXXX;b<<[b[-c],d,i+=1]}} e80feef +;c=b[-1].flatten;b=c[(XXXXX..XXXXXXXXXXXX1..)%2];(b.map{_1[0]}* 5c77bf8 +E).scan(/\s{,3}([-+]\s{,XXXXXXXXXXXXXXX6})*[-+]\s{,3}/){n=c[2*i 9cb8e4c +=$`.size];o=o,B%[n%v+1-1/v,(m=c[2.*i+j=$&.size]-n)%v,T>""?n/v+1 7f12d23 +:0,m/v],b[i,j]}):(o=[];a,b=[A,B].map{_1.sub(?+){'\+'}%(['(\S+)' dce2324 +]*4)};$<.read=~//;F.write$2,(s=F.readlines$1;o<<[:patching,F,$2 b297086 +]*z;(*,n,i,m=[*$~].map{_1.to_i};n+=m;($'=~/\A((-)|\+)?(.*\n)/;$ cb2076f +2?s[i-=1,1]=[]:$1?s[i-1,0]=$3:n-=1;i+=1;n-=1)while+n>0)while/\A 4635125 +#{b}/=~$';s*E)while$'=~/^#{a}/);o):([*[?l]*799,1].shuffle*E).sc 1e32693 +an(/.{40}/));exit].gsub(/X.*X|\n(\h+\s)?\+?/,E=""))#TRICK2025]} The original entry.rb $ git log --oneline | ruby – test.patch patching File sample.rb

Slide 79

Slide 79 text

• One more thing “Most Useful” mame3.rb $ tail pd.rb ]*4)};$<.read=~//;F.write$2,(s=F.readlines$1;o<<[:patching,F,$2 ]*z;(*,n,i,m=[*$~].map{_1.to_i};n+=m;($'=~/\A((-)|\+)?(.*\n)/;$ 2?s[i-=1,1]=[]:$1?s[i-1,0]=$3:n-=1;i+=1;n-=1)while+n>0)while/\A #{b}/=~$';s*E)while$'=~/^#{a}/);o):([*[?l]*799,1].shuffle*E).sc an(/.{40}/));exit].gsub(/X.*X|\n(\h+\s)?\+?/,E=""))#TRICK2025]} (` --- pd.rb +++ pd.rb @@ -0,0 +1,1 @@ +dup=(`) $ ruby entry.rb pd.rb patching File pd.rb pd.rb is also a patch for itself by applying it…

Slide 80

Slide 80 text

• One more thing “Most Useful” mame3.rb $ ruby pd.rb llllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllll lllllllllllllllllllllllllllll1llllllllll llllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllll Spot the "difference"!

Slide 81

Slide 81 text

eto shinh yhara matz leonid flagitious mame tompng score Winner » “Most Revolutionary” 『最も転回的で賞』 Don Yang (omoikane) 7 9 10 9 10 8 10 9.00 9

Slide 82

Slide 82 text

“Most Revolutionary” omoikane.rb a=+Math::PI/13 #Z---z';#za-mRUBY #A-ZaA-Mn--\[+>+>++ '"N-Z(\++\[->++++@" b=\[->+> +>+>\[h_ p%{} eact zoraq ;%{ GF. rin); %{eb} r A R p *""\] <<<{{{ }<\]++[ ->+>>>>>[40v .tr(= ' ;eval(%w{r=u=b= y =0;%{ (ct;c ) ; ] <<->--<<< < < ] >>[>, exi}; a * = A RGV.siz e > 0 ? -1:1; z=[] ; A R G F .ea c h _ l i n e{|i |i.eac h _ g r aph e m e _ c l u ster {|j|i f ( k = j.o r d ) < 3 3 ; r+=k< 32?k==9? 8 - r%8 : k = = 1 0 | |k==13 ?[u+=1,-r][ 1]: 0 : 1 ; e lse;z+=[[u, r,j]];b+=r;y+=u;r+=1;end;}};if(s=z.si ze)>0;b/=s;y/=s;m,n=z[0];i=Math::tan( a/2);j=Math::sin(a);z.map!{|d|p=d[1]- b;q=d[0]-y;p-=(i*q).round;m=[m,q+=(j* p).round].min;n=[n,p-=(i*q).round]. min;[q,p,d[2]]};r=n;u=m;z.sort.eac h{|d|p,b=d;r=(u "tyvuts(}}.--.>--.>+.<++' )b\40"gena.(c)2025<<< #)#ehol""+a*.^_^

Slide 83

Slide 83 text

• This program is a ROT13 filter – ROT13: A simple cipher • Example: "hello" is encoded to "uryyb" –ROT13 = rotate by pi/13 “Most Revolutionary” omoikane.rb A B C D E F G H I J K M O L N P Q R S T U V W X Y Z A B C D E F G H I J K M O L N P Q R S T U V W X Y Z INCORRECT

Slide 84

Slide 84 text

• This program rotates a text file “Most Revolutionary” omoikane.rb * * * * * * * * * * * * * + ! * * * * * * * * * * * * a=+Math::PI/13 #Z---z';#za-mRUBY #A-ZaA-Mn--\[+>+>++ '"N-Z(\++\[->++++@" b=\[->+> +>+>\[h_ p%{} eact zoraq ;%{ GF. rin); %{eb} r A R p *""\] <<<{{{ }<\]++[ ->+>>>>>[40v .tr(= ' ;eval(%w{r=u=b= y =0;%{ (ct;c ) ; ] <<->--<<< < < ] >>[>, exi}; a * = A RGV.siz e > 0 ? -1:1; z=[] ; A R G F .ea c h _ l i n e{|i |i.eac h _ g r aph e m e _ c l u ster {|j|i f ( k = j.o r d ) < 3 3 ; r+=k< 32?k==9? 8 - r%8 : k = = 1 0 | |k==13 ?[u+=1,-r][ 1]: 0 : 1 ; e lse;z+=[[u, r,j]];b+=r;y+=u;r+=1;end;}};if(s=z.si ze)>0;b/=s;y/=s;m,n=z[0];i=Math::tan( a/2);j=Math::sin(a);z.map!{|d|p=d[1]- b;q=d[0]-y;p-=(i*q).round;m=[m,q+=(j* p).round].min;n=[n,p-=(i*q).round]. min;[q,p,d[2]]};r=n;u=m;z.sort.eac h{|d|p,b=d;r=(u "tyvuts(}}.--.>--.>+.<++' )b\40"gena.(c)2025<<< #)#ehol""+a*.^_^ * * * * * * * * * * * ! * + * * * * * * * * * * * * * Rotated $ ruby entry.rb test.txt

Slide 85

Slide 85 text

• This program rotates a text from stdin “Most Revolutionary” omoikane.rb * * * * * * * * * * * * * + ! * * * * * * * * * * * * a=+Math::PI/13 #Z---z';#za-mRUBY #A-ZaA-Mn--\[+>+>++ '"N-Z(\++\[->++++@" b=\[->+> +>+>\[h_ p%{} eact zoraq ;%{ GF. rin); %{eb} r A R p *""\] <<<{{{ }<\]++[ ->+>>>>>[40v .tr(= ' ;eval(%w{r=u=b= y =0;%{ (ct;c ) ; ] <<->--<<< < < ] >>[>, exi}; a * = A RGV.siz e > 0 ? -1:1; z=[] ; A R G F .ea c h _ l i n e{|i |i.eac h _ g r aph e m e _ c l u ster {|j|i f ( k = j.o r d ) < 3 3 ; r+=k< 32?k==9? 8 - r%8 : k = = 1 0 | |k==13 ?[u+=1,-r][ 1]: 0 : 1 ; e lse;z+=[[u, r,j]];b+=r;y+=u;r+=1;end;}};if(s=z.si ze)>0;b/=s;y/=s;m,n=z[0];i=Math::tan( a/2);j=Math::sin(a);z.map!{|d|p=d[1]- b;q=d[0]-y;p-=(i*q).round;m=[m,q+=(j* p).round].min;n=[n,p-=(i*q).round]. min;[q,p,d[2]]};r=n;u=m;z.sort.eac h{|d|p,b=d;r=(u "tyvuts(}}.--.>--.>+.<++' )b\40"gena.(c)2025<<< #)#ehol""+a*.^_^ * * * * * * * * * * * * * + * * ! * * * * * * * * * * Clockwise $ ruby entry.rb < test.txt

Slide 86

Slide 86 text

• This program works even if it rotates “Most Revolutionary” omoikane.rb a=+Math::PI/13 #Z---z';#za-mRUBY #A-ZaA-Mn--\[+>+>++ '"N-Z(\++\[->++++@" b=\[->+> +>+>\[h_ p%{} eact zoraq ;%{ GF. rin); %{eb} r A R p *""\] <<<{{{ }<\]++[ ->+>>>>>[40v .tr(= ' ;eval(%w{r=u=b= y =0;%{ (ct;c ) ; ] <<->--<<< < < ] >>[>, exi}; a * = A RGV.siz e > 0 ? -1:1; z=[] ; A R G F .ea c h _ l i n e{|i |i.eac h _ g r aph e m e _ c l u ster {|j|i f ( k = j.o r d ) < 3 3 ; r+=k< 32?k==9? 8 - r%8 : k = = 1 0 | |k==13 ?[u+=1,-r][ 1]: 0 : 1 ; e lse;z+=[[u, r,j]];b+=r;y+=u;r+=1;end;}};if(s=z.si ze)>0;b/=s;y/=s;m,n=z[0];i=Math::tan( a/2);j=Math::sin(a);z.map!{|d|p=d[1]- b;q=d[0]-y;p-=(i*q).round;m=[m,q+=(j* p).round].min;n=[n,p-=(i*q).round]. min;[q,p,d[2]]};r=n;u=m;z.sort.eac h{|d|p,b=d;r=(u "tyvuts(}}.--.>--.>+.<++' )b\40"gena.(c)2025<<< #)#ehol""+a*.^_^ a= ##Z--+Math 'A-Za-z';#::PI b="N-ZA-Mn-za-m/13 p%{\[->(\++\-\[+RUBY zora} +> [->+>+>+ <%{ebq ; +>+++@+ ]<<<{{} r %{ +>\[" eval(%w{ A RGF. each_ char{|c| p rint (c.tr(a,b))} } *""); exit;c = ' ]>++ <][; }<\\] z=[}; a) ; ;eva[ a;a]+#pgn=%Y/ {|j|ac hA R A R->-->>>y\W{ 32?ki f _ gG F GV.si<< [40f ?[u+==9?( k r a.ea cz e < ] =0;v r,j]=1,- 8 -= j.ph e h _> 0 >>[%{ aze)>];b+r][ r%8o r dm e l i? -1>, b/2);0;b/=r;y1]: : k ) <_ c n e:1; ;q=dj=Ma=s;y+=u;0 : 1= = 3 3l u {|i p).r[0]-th::/=s;r+=1; ; e1 0 ; rster minoundy;p-sin(m,n=zend; lse| |k+=k< h{;[q,].mi=(i*a);z.[0];}};i;z+===13 *|d|pp,d[n;n=q).romap!i=Maf(s=[[u, (p-u,b=d2]]}[n,p-und;{|d|th::z.si b+1}),"\;r=(;r=n;=(i*m=[mp=d[tan( "t;pri40"*ud}*"];u=t"\nac ehola.(c)--.>");%p;r=" ""+a*2025+.<+(]> .^_^<<< +' a=+Math::PI/13 #Z---z';#za-mRUBY #A-ZaA-Mn--\[+>+>++ '"N-Z(\++\[->++++@" b=\[->+> +>+>\[h_ p%{} eact zoraq ;%{ GF. rin); %{eb} r A R p *""\] <<<{{{ }<\]++[ ->+>>>>>[40v .tr(= ' ;eval(%w{r=u=b= y =0;%{ (ct;c ) ; ] <<->--<<< < < ] >>[>, exi}; a * = A RGV.siz e > 0 ? -1:1; z=[] ; A R G F .ea c h _ l i n e{|i |i.eac h _ g r aph e m e _ c l u ster {|j|i f ( k = j.o r d ) < 3 3 ; r+=k< 32?k==9? 8 - r%8 : k = = 1 0 | |k==13 ?[u+=1,-r][ 1]: 0 : 1 ; e lse;z+=[[u, r,j]];b+=r;y+=u;r+=1;end;}};if(s=z.si ze)>0;b/=s;y/=s;m,n=z[0];i=Math::tan( a/2);j=Math::sin(a);z.map!{|d|p=d[1]- b;q=d[0]-y;p-=(i*q).round;m=[m,q+=(j* p).round].min;n=[n,p-=(i*q).round]. min;[q,p,d[2]]};r=n;u=m;z.sort.eac h{|d|p,b=d;r=(u "tyvuts(}}.--.>--.>+.<++' )b\40"gena.(c)2025<<< #)#ehol""+a*.^_^ $ ruby entry.rb < entry.rb $ echo uryyb | ruby rot13.rb hello This program is a ROT13 filter rot13.rb entry.rb

Slide 87

Slide 87 text

• This program works even if it rotates “Most Revolutionary” omoikane.rb a=+Math::PI/13 #Z---z';#za-mRUBY #A-ZaA-Mn--\[+>+>++ '"N-Z(\++\[->++++@" b=\[->+> +>+>\[h_ p%{} eact zoraq ;%{ GF. rin); %{eb} r A R p *""\] <<<{{{ }<\]++[ ->+>>>>>[40v .tr(= ' ;eval(%w{r=u=b= y =0;%{ (ct;c ) ; ] <<->--<<< < < ] >>[>, exi}; a * = A RGV.siz e > 0 ? -1:1; z=[] ; A R G F .ea c h _ l i n e{|i |i.eac h _ g r aph e m e _ c l u ster {|j|i f ( k = j.o r d ) < 3 3 ; r+=k< 32?k==9? 8 - r%8 : k = = 1 0 | |k==13 ?[u+=1,-r][ 1]: 0 : 1 ; e lse;z+=[[u, r,j]];b+=r;y+=u;r+=1;end;}};if(s=z.si ze)>0;b/=s;y/=s;m,n=z[0];i=Math::tan( a/2);j=Math::sin(a);z.map!{|d|p=d[1]- b;q=d[0]-y;p-=(i*q).round;m=[m,q+=(j* p).round].min;n=[n,p-=(i*q).round]. min;[q,p,d[2]]};r=n;u=m;z.sort.eac h{|d|p,b=d;r=(u "tyvuts(}}.--.>--.>+.<++' )b\40"gena.(c)2025<<< #)#ehol""+a*.^_^ /13 h::PIRUBY+ +Mat#za-m>+>+" a=-z';--\[++++@h_ #Z--A-Mn\[->++>\[act A-Za(\++ +> ein); #"N-Z+> . r""\]b '\[-> GF p *<\]>>[0;%{>, %{{{{ }<][ >+>> y = >>[:1; <<<%w| -u=b= < ]? -1{|i ] 0 n ester var{b)]>val(->-- ze)>);j=]-y;min;]};r=)?n:[2];;%(] a/2=d[0nd].d[2]=(u+.<<< p)in;[|p,b"\40"\n";.>--2025 mh{|d-u),rint}}.--.(c).^_^ *(p1};puts("gena"+a* b+"tyvb\40ehol" ) #)# a=+Math::PI/13 #Z---z';#za-mRUBY #A-ZaA-Mn--\[+>+>++ '"N-Z(\++\[->++++@" b=\[->+> +>+>\[h_ p%{} eact zoraq ;%{ GF. rin); %{eb} r A R p *""\] <<<{{{ }<\]++[ ->+>>>>>[40v .tr(= ' ;eval(%w{r=u=b= y =0;%{ (ct;c ) ; ] <<->--<<< < < ] >>[>, exi}; a * = A RGV.siz e > 0 ? -1:1; z=[] ; A R G F .ea c h _ l i n e{|i |i.eac h _ g r aph e m e _ c l u ster {|j|i f ( k = j.o r d ) < 3 3 ; r+=k< 32?k==9? 8 - r%8 : k = = 1 0 | |k==13 ?[u+=1,-r][ 1]: 0 : 1 ; e lse;z+=[[u, r,j]];b+=r;y+=u;r+=1;end;}};if(s=z.si ze)>0;b/=s;y/=s;m,n=z[0];i=Math::tan( a/2);j=Math::sin(a);z.map!{|d|p=d[1]- b;q=d[0]-y;p-=(i*q).round;m=[m,q+=(j* p).round].min;n=[n,p-=(i*q).round]. min;[q,p,d[2]]};r=n;u=m;z.sort.eac h{|d|p,b=d;r=(u "tyvuts(}}.--.>--.>+.<++' )b\40"gena.(c)2025<<< #)#ehol""+a*.^_^ $ ruby entry.rb entry.rb $ ruby msg.rb genafpraqragny vzoebtyvb ehol $ ruby msg.rb | ruby rot13.rb transcendental imbroglio ruby This program produces an encrypted message msg.rb entry.rb

Slide 88

Slide 88 text

• One more thing – This program also works as a Brainf*ck program “Most Revolutionary” omoikane.rb a=+Math::PI/13 #Z---z';#za-mRUBY #A-ZaA-Mn--\[+>+>++ '"N-Z(\++\[->++++@" b=\[->+> +>+>\[h_ p%{} eact zoraq ;%{ GF. rin); %{eb} r A R p *""\] <<<{{{ }<\]++[ ->+>>>>>[40v .tr(= ' ;eval(%w{r=u=b= y =0;%{ (ct;c ) ; ] <<->--<<< < < ] >>[>, exi}; a * = A RGV.siz e > 0 ? -1:1; z=[] ; A R G F .ea c h _ l i n e{|i |i.eac h _ g r aph e m e _ c l u ster {|j|i f ( k = j.o r d ) < 3 3 ; r+=k< 32?k==9? 8 - r%8 : k = = 1 0 | |k==13 ?[u+=1,-r][ 1]: 0 : 1 ; e lse;z+=[[u, r,j]];b+=r;y+=u;r+=1;end;}};if(s=z.si $ ruby bf.rb entry.rb TRICK Brainf*ck code fragments

Slide 89

Slide 89 text

• Judges' comments? “Most Revolutionary” omoikane.rb

Slide 90

Slide 90 text

Conclusion

Slide 91

Slide 91 text

Honorable mentions(選外佳作) “Most Musical” – Yutaka HARA “Worst Bug Report” – Zeroichi Arakawa “Least Truthful” – Kensuke Imamura (@nsfisis) “Lowest Entropy” – Koichi Sasada “Most Cerebral” – Kensuke Imamura (@nsfisis) “Best Shapeshifter” – Kota Noda “Best Repetition” – chobishiba “Most International” – osatoh “Most Visual” – Mari Imaizumi “Most Adaptive” – Yoh Osaki

Slide 92

Slide 92 text

Judges’ awards flagitious award: “Best Bonus” – Yusuke Endoh shinh award: “Most it-tensive” – Koichi Sasada yhara award: “Most Natural” – beta_chelsea tompng award: “Most Uncovered” – Yusuke Endoh eto award: “Most Ruby-on-Ruby” – Kensuke Imamura (@nsfisis) matz award: “Best Fadeaway” – Shinichiro Hamaji mame award: “Most Shifted” – Yutaka HARA leonid award: “Most Harmful” – yoshi-taka

Slide 93

Slide 93 text

Dishonorable Top 5 “Most Revolutionary” – Don Yang “Most Useful” – Yusuke Endoh “Most Arithmetic” – Tomoya Ishida 4th “Best ASMR” – Tomoya Ishida “Most Maintainable” – Tomoya Ishida 5th

Slide 94

Slide 94 text

Prize? • Top five entries will be added into the "sample" directory of the official Ruby repository – They will be included in the Ruby 3.5.0 package

Slide 95

Slide 95 text

Conclusion • The winning entries will be published soon at: • Thank you for all participants! No k! http://github.com/tric /trick2025/