From e613cdd53d16327dccf8237f8d5b672804a69eca Mon Sep 17 00:00:00 2001 From: mame Date: Sat, 21 Jul 2018 13:07:50 +0000 Subject: [PATCH] sample/trick2018/: adds the top-five entries of TRICK 2018 See https://github.com/tric/trick2018 for TRICK 2018. Fixes #14930. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64008 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- sample/trick2018/01-kinaba/authors.markdown | 3 + sample/trick2018/01-kinaba/entry.rb | 8 +++ sample/trick2018/01-kinaba/remarks.markdown | 55 ++++++++++++++++ sample/trick2018/02-mame/authors.markdown | 3 + sample/trick2018/02-mame/entry.rb | 15 +++++ sample/trick2018/02-mame/remarks.markdown | 16 +++++ sample/trick2018/03-tompng/Gemfile | 2 + sample/trick2018/03-tompng/Gemfile.lock | 15 +++++ sample/trick2018/03-tompng/authors.markdown | 3 + sample/trick2018/03-tompng/entry.rb | 31 +++++++++ sample/trick2018/03-tompng/output.txt | 44 +++++++++++++ sample/trick2018/03-tompng/remarks.markdown | 19 ++++++ sample/trick2018/03-tompng/trick.png | Bin 0 -> 5661 bytes sample/trick2018/04-colin/authors.markdown | 3 + sample/trick2018/04-colin/entry.rb | 2 + sample/trick2018/04-colin/remarks.markdown | 62 ++++++++++++++++++ sample/trick2018/05-tompng/authors.markdown | 3 + sample/trick2018/05-tompng/entry.rb | 41 ++++++++++++ .../trick2018/05-tompng/preview_of_output.png | Bin 0 -> 66800 bytes sample/trick2018/05-tompng/remarks.markdown | 31 +++++++++ sample/trick2018/README.md | 16 +++++ 21 files changed, 372 insertions(+) create mode 100644 sample/trick2018/01-kinaba/authors.markdown create mode 100644 sample/trick2018/01-kinaba/entry.rb create mode 100644 sample/trick2018/01-kinaba/remarks.markdown create mode 100644 sample/trick2018/02-mame/authors.markdown create mode 100644 sample/trick2018/02-mame/entry.rb create mode 100644 sample/trick2018/02-mame/remarks.markdown create mode 100644 sample/trick2018/03-tompng/Gemfile create mode 100644 sample/trick2018/03-tompng/Gemfile.lock create mode 100644 sample/trick2018/03-tompng/authors.markdown create mode 100644 sample/trick2018/03-tompng/entry.rb create mode 100644 sample/trick2018/03-tompng/output.txt create mode 100644 sample/trick2018/03-tompng/remarks.markdown create mode 100644 sample/trick2018/03-tompng/trick.png create mode 100644 sample/trick2018/04-colin/authors.markdown create mode 100644 sample/trick2018/04-colin/entry.rb create mode 100644 sample/trick2018/04-colin/remarks.markdown create mode 100644 sample/trick2018/05-tompng/authors.markdown create mode 100644 sample/trick2018/05-tompng/entry.rb create mode 100644 sample/trick2018/05-tompng/preview_of_output.png create mode 100644 sample/trick2018/05-tompng/remarks.markdown create mode 100644 sample/trick2018/README.md diff --git a/sample/trick2018/01-kinaba/authors.markdown b/sample/trick2018/01-kinaba/authors.markdown new file mode 100644 index 0000000000..d0df0b379d --- /dev/null +++ b/sample/trick2018/01-kinaba/authors.markdown @@ -0,0 +1,3 @@ +* kinaba + * twitter.com/kinaba + * cctld: jp diff --git a/sample/trick2018/01-kinaba/entry.rb b/sample/trick2018/01-kinaba/entry.rb new file mode 100644 index 0000000000..eb8284d5ab --- /dev/null +++ b/sample/trick2018/01-kinaba/entry.rb @@ -0,0 +1,8 @@ +alias BEGIN for unless def class +super true or return defined? next +break while begin undef do end +rescue then retry else undef module +nil ensure case if yield __LINE__ +self and redo elsif not __FILE__ +alias END in end when __ENCODING__ +end until false end diff --git a/sample/trick2018/01-kinaba/remarks.markdown b/sample/trick2018/01-kinaba/remarks.markdown new file mode 100644 index 0000000000..a1a05bfd73 --- /dev/null +++ b/sample/trick2018/01-kinaba/remarks.markdown @@ -0,0 +1,55 @@ +### Remarks + +Just run it with no argument: + + ruby entry.rb + +(Anyway it is just a no-op program. The above command only verifies +that entry.rb is a valid Ruby program.) + +I confirmed the following implementations/platforms: + +* ruby 2.5.0p0 (2017-12-25 revision 61468) [x64-mingw32] + +### Description + +First, look at + +https://docs.ruby-lang.org/ja/latest/doc/spec=2flexical.html#reserved + +and then, look at entry.rb. + +The source code of entry.rb consists only of reserved words of Ruby, +and all the reserved words are used in the code, in a way that the code +forms a valid Ruby program. No compile error, no warning, or no runtime error. + + +### Internals + +Difficult (and interesting) points of the theme are: + +* Since many of the reserved words define program structures, we cannot + use them independently. For instance, `retry` must be inside `rescue`, + or `break`/`next`/`redo` must be inside a looping construct. + Or, jump-out statements cannot occur at a position that requires a + value; `if return then true end` is a "void value expression" syntax error. +* Inserting newlines for each 6 word (to match with the spec html) is also + an interseting challenge, since Ruby is sensitive to newlines. + +Tricks used in the code are: + +* def/alias/undef can take even reserved words as parameters. + That is, `def class ... end` defines a method named `class`. + The feature is crucial since otherwise `BEGIN` etc inevitably + introduces non-reserved tokens (like `{}`). +* `defined?` can take some reserved words too (which I didn't know + until trying to write this program.) +* "void value expression" can be avoided by using `or` or `and`. + `if begin return end then true end` is a syntax error, but + `if begin false or return end then true end` is not. + + +### Limitation + +Sad to say that it's not a "perfect pangram". +It uses 'alias' and 'undef' twice, and 'end' 4 times. diff --git a/sample/trick2018/02-mame/authors.markdown b/sample/trick2018/02-mame/authors.markdown new file mode 100644 index 0000000000..0e420fdf5d --- /dev/null +++ b/sample/trick2018/02-mame/authors.markdown @@ -0,0 +1,3 @@ +* Yusuke Endoh + * mame@ruby-lang.org + * cctld: jp diff --git a/sample/trick2018/02-mame/entry.rb b/sample/trick2018/02-mame/entry.rb new file mode 100644 index 0000000000..cc4ef9cbc4 --- /dev/null +++ b/sample/trick2018/02-mame/entry.rb @@ -0,0 +1,15 @@ +'';eval(r=%q(->z{r="'';eval(r=\ +%q(#{r}))[%q`#{z}`]";i=-040;30. +times{|n|(15+n%2*15-n/2).times{ +r<["t]];};o[1,?\n*8];ex"-}eac +1Hl<1[-1]*2*t=n%2];o[14-n,0)mvk +8M$<4,?\n];15.times{|n|;o[35ie2 +!Pss.slice!(0,1)+x;sleep(0.0t;0 +'W=%q"<<95<<$s<<95;o=->n,x{n.'1 +;@[2]}|\e../,%@s="'%trick2018!8 +eval$s=%q_eval($s.gsub!(/#{%@`] diff --git a/sample/trick2018/02-mame/remarks.markdown b/sample/trick2018/02-mame/remarks.markdown new file mode 100644 index 0000000000..88b32c205a --- /dev/null +++ b/sample/trick2018/02-mame/remarks.markdown @@ -0,0 +1,16 @@ +This program quines with animation. + +``` +$ ruby entry.rb +``` + +Of course, the output is executable. + +``` +$ ruby entry.rb > output +$ ruby output +``` + +Note, we don't cheat. This program uses escape sequences just for moving the cursor. It doesn't use attribution change nor overwrite to hide any code. + +The program is crafted so that it works in two ways; it works as a normal program text, and, it also works when it is rearranged in a spiral order. Some parts of the code are actually overlapped. diff --git a/sample/trick2018/03-tompng/Gemfile b/sample/trick2018/03-tompng/Gemfile new file mode 100644 index 0000000000..983f2f3bd4 --- /dev/null +++ b/sample/trick2018/03-tompng/Gemfile @@ -0,0 +1,2 @@ +ruby '2.5.0' +gem 'chunky_png' diff --git a/sample/trick2018/03-tompng/Gemfile.lock b/sample/trick2018/03-tompng/Gemfile.lock new file mode 100644 index 0000000000..6f54c44066 --- /dev/null +++ b/sample/trick2018/03-tompng/Gemfile.lock @@ -0,0 +1,15 @@ +GEM + specs: + chunky_png (1.3.8) + +PLATFORMS + ruby + +DEPENDENCIES + chunky_png + +RUBY VERSION + ruby 2.5.0p0 + +BUNDLED WITH + 1.16.1 diff --git a/sample/trick2018/03-tompng/authors.markdown b/sample/trick2018/03-tompng/authors.markdown new file mode 100644 index 0000000000..26ebe24da6 --- /dev/null +++ b/sample/trick2018/03-tompng/authors.markdown @@ -0,0 +1,3 @@ +* Tomoya Ishida (tompng) + * tomoyapenguin@gmail.com + * cctld: jp diff --git a/sample/trick2018/03-tompng/entry.rb b/sample/trick2018/03-tompng/entry.rb new file mode 100644 index 0000000000..f6de44b6be --- /dev/null +++ b/sample/trick2018/03-tompng/entry.rb @@ -0,0 +1,31 @@ +X=[];class String def-@;replace ?-+self end;def-a;X.reject!{|x|x. +__id__==__id__};a.replace(self+?-+a) end end;at_exit{eval C=(Zlib +.inflate Integer((X*?-).tr(?-,'').tr('q-z','0-9'),26).digits(256) +.pack'C*')};def method_missing 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 Dh2-jW literal 0 HcmV?d00001 diff --git a/sample/trick2018/04-colin/authors.markdown b/sample/trick2018/04-colin/authors.markdown new file mode 100644 index 0000000000..a846d12535 --- /dev/null +++ b/sample/trick2018/04-colin/authors.markdown @@ -0,0 +1,3 @@ +* Colin Fulton + * justcolin@gmail.com + * cctld: us diff --git a/sample/trick2018/04-colin/entry.rb b/sample/trick2018/04-colin/entry.rb new file mode 100644 index 0000000000..442a8ea3a8 --- /dev/null +++ b/sample/trick2018/04-colin/entry.rb @@ -0,0 +1,2 @@ +# Copyright 2018. Available for use under the terms of the MIT License. +$🚀=0;def 🤔 🏷,🤔=0,&b;puts ' '*$🚀+(🤔 ?"":"🚫 ")+🏷;$🚀+=4;b&.[];$🚀-=4;end diff --git a/sample/trick2018/04-colin/remarks.markdown b/sample/trick2018/04-colin/remarks.markdown new file mode 100644 index 0000000000..8c2dd7067b --- /dev/null +++ b/sample/trick2018/04-colin/remarks.markdown @@ -0,0 +1,62 @@ +### Remarks + +Create a Ruby file that requires entry.rb with a series of test in it the run the file using ruby: + +``` +ruby name_of_test_file.rb +``` + +To create a test, call 🤔 with two arguments. The first is a string describing what this tests, the second argument is the test assertion. If the assertion is truthy, the test passes. If the assertion if falsy, the test fails. + +``` +string_1 = "Hello world!" +string_2 = "This is not the same!" + +🤔 "The two strings are equal", + string_1 == string_2 +``` + +To create a group of tests under a label, call 🤔 with a string describing the group and a block containing the tests in that group. + +``` +🤔 "This is a group of tests" do + # Add other groups and/or tests here. +end +``` + +Here is an example: + +``` +require './entry' + +🤔 "Math" do + 🤔 "Addition" do + 🤔 "One plus one equals two.", + 1+1 == 2 + 🤔 "One plus one equals eleven. (This should fail.)", + 1+1 == 11 + end + + 🤔 "Subtraction" do + 🤔 "One minus one equals zero.", + 1-1 == 0 + 🤔 "Ten minus one equal nine.", + 10-1 == 9 + end +end +``` + +It has been tested with the following Ruby versions: + +* ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17] +* ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15] +* If you replace `b&.[]` with `b&&b[]` it will work with ruby 2.0.0 as well, but it will be one character longer. + + +### Description + +The goal was to create a testing library where the test files looked good and the output looked good in as few characters as possible. The result is 68 characters and has one method to handle everything. + +### Limitation + +Your terminal program must support Unicode characters for the test output to look correct. If your terminal does not support Unicode, simply replace the 🚫 in the code with whatever character you want to prefix failing tests. diff --git a/sample/trick2018/05-tompng/authors.markdown b/sample/trick2018/05-tompng/authors.markdown new file mode 100644 index 0000000000..26ebe24da6 --- /dev/null +++ b/sample/trick2018/05-tompng/authors.markdown @@ -0,0 +1,3 @@ +* Tomoya Ishida (tompng) + * tomoyapenguin@gmail.com + * cctld: jp diff --git a/sample/trick2018/05-tompng/entry.rb b/sample/trick2018/05-tompng/entry.rb new file mode 100644 index 0000000000..31522b6de2 --- /dev/null +++ b/sample/trick2018/05-tompng/entry.rb @@ -0,0 +1,41 @@ + X=[];def self.method_missing n;n.to_s.chars;end + l=[];def l.-a;X<r,z,dr,dz{;r-=w/2.0;z*=2;r2,z2=r+dr,z+dz*2;if r>0||r2> + 0;r=[0,r].max;r2=[0,r2].max;16.times{|i|m=Math;p=m::PI/8;;c,s=m.cos(t=i*p),m.sin(t) + c2,s2=m.cos(t=(i+1)*p),m.sin(t);t-=p/2;[[0,1,2],[0,2,3]].map{|a|b.push [:facet,'n'+ + + 'ormal',dz*m.cos(t),dz*m.sin(t),-dr]*' ','outer loop',a.map{|i|'v'+ + ++ "ertex #{[[r*c,r*s,z],[r*c2,r*s2,z],[r2*c2,r2*s2,z2],[r2* + +c, r2*s,z2]][i]*' '}"},:endloop,:endfacet}}end};(0...h). + map{| y|w.times{|x|[X[y-1][x]||a[x,y,1,0],X[y+1][x]|| + a[x+1,y+ + 1,-1,0],X[ + y][x-+1]||a[ + x,y+1,0,-1],X[y + ][x++1]||a[x+1,y, + 0,1]]if X[y][x]}} + s=[b,'end'+b[0]]* + $/;File.write(f, + s);X.replace( + []);end + +gen3d 'wine_glass.stl' do + l--ww------------------ww--l + l--ww------------------ww--l + l--ww++++++++++++++++++ww--l + l--ww++++++++++++++++++ww--l + l--ww++++++++++++++++++ww--l + l--ww++++++++++++++++++ww--l + l---ww++++++++++++++++ww---l + l----www++++++++++++www----l + l------www++++++++www------l + l--------wwwwwwwwww--------l + l-----------wwww-----------l + l------------ww------------l + l------------ww------------l + l------------ww------------l + l-----------wwww-----------l + l---------wwwwwwww---------l + l----wwwwwwwwwwwwwwwwww----l +end diff --git a/sample/trick2018/05-tompng/preview_of_output.png b/sample/trick2018/05-tompng/preview_of_output.png new file mode 100644 index 0000000000000000000000000000000000000000..db511ee2f3655cc412c90d0c0e600606aac290c6 GIT binary patch literal 66800 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

2V)M%GNOOBb1=h?!zOu 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℞c8_s0) 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 literal 0 HcmV?d00001 diff --git a/sample/trick2018/05-tompng/remarks.markdown b/sample/trick2018/05-tompng/remarks.markdown new file mode 100644 index 0000000000..17be56b61f --- /dev/null +++ b/sample/trick2018/05-tompng/remarks.markdown @@ -0,0 +1,31 @@ +### Remarks + +Just run it with no argument: + + ruby entry.rb + +I confirmed the following implementations/platforms: + +* ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin16] +* ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16] +* ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin16] + +### Description + +This program will generate `wine_glass.stl`, a 3D data file(STL format) of a wine glass. +You can change the shape by modifying the DSL part. +For sake cup: +```ruby +gen3d 'ochoko.stl' do + l------------------------l + l-ww------------------ww-l + l-ww------------------ww-l + l-ww++++++++++++++++++ww-l + l-ww++++++++++++++++++ww-l + l--ww++++++++++++++++ww--l + l---wwww++++++++++wwww---l + l----wwwwwwwwwwwwwwww----l + l----www----------www----l +end +``` +`+` and `-` are the same meaning(just for apperance) diff --git a/sample/trick2018/README.md b/sample/trick2018/README.md new file mode 100644 index 0000000000..8e5729f151 --- /dev/null +++ b/sample/trick2018/README.md @@ -0,0 +1,16 @@ +This directory contains the award-winning entries of +the 3rd Transcendental Ruby Imbroglio Contest for rubyKaigi (TRICK 2018). + +THESE ARE BAD EXAMPLES! You must NOT use them as a sample code. + +* 01-kinaba/entry.rb: "Most reserved" - **Gold award** +* 02-mame/entry.rb: "Best spiral" - **Silver award** +* 03-tompng/entry.rb: "Best png viewer" - **Bronze award** +* 04-colin/entry.rb: "Best one-liner" - 4th prize +* 05-tompng/entry.rb: "Most three-dimentional" - 5th prize + +These files are licensed under MIT license. + +For the contest outline and other winning entries, see: + +https://github.com/tric/trick2018