æè¡é¨ã®é è¤ã§ããCookpadã®ãã«ã¿ã¤ã Rubyã³ããã¿ã®1人ã§ããRubyKaigiã¾ã§ãã¨1é±éã§ããï¼
ä»å¹´ã®RubyKaigiã§ã¯ã"TRICK"ã®çºè¡¨ããã¾ããTRICKã¨ã¯ä½ããã¾ãã¯ãã®Rubyã³ã¼ããè¦ã¦ãã ããã
->\
&\
w{
a=
?a
b=
?b
c=
?,
d=
?.
e=
?e
g=
?g
h=
?/
i=
?{
l=
?l
m=
?_
n=
?$
o=
?1
q=
?'
r=
?<
s=
?s
t=
?>
u=
?u
v=
?v
x=
?(
y=
?)
z=
?-
_=
""
f=
w[
w,
z+
t+
i+
m+
r+
r+
m+
o+
d+
g+
s+
u+
b+
x+
n+
h+
c+
q+
q+
y+
?}
];
f[
'p
ut
s"
He
ll
o,
']
_\
<<
32
f[
'w
or
ld
!"
']
w[
w,
e+
v+
a+
l+
x+
m+
y]
}[
&[
*(
:\
a\
..
:\
ÃÃ
)%
(0
3\
**
7*
47
;)
][
+1
]]
ããä¸åº¦ããã¾ãããããã¯ãRubyã³ã¼ããã§ããä¿åãã¦å®è¡ããã¨ã"Hello, world!"ã¨åºã¾ãã
$ ruby hello.rb Hello, world!
TRICKã¨ã¯ãããããå¤ãªRubyã³ã¼ãã§ç«¶ãåãããã°ã©ãã³ã°ã³ã³ãã¹ãã§ã *1 ãèªããªãããã©é¢ç½ãæç¨¿ä½åï¼ããã°ã©ã ï¼ãé¸å®ããã表彰ããã¾ãã
TRICKã¯2013å¹´ã2015å¹´ã2018å¹´ã¨ãã£ã¦ãã¦ãä»åã¯4å¹´ã¶ã4åç®ã®éå¬ã«ãªãã¾ããããã¾ã¾ã§ã§ä¸çªã¬ãã«ã®é«ãæ¦ãã«ãªã£ãã¨æãã¾ããã¨ããã®ããä¸ã®ããã°ã©ã ã¯ãTRICK 2022ã«è½é¸ããããã°ã©ã ã§ãã*2
ã¤ã¾ãã彿¥ã¯ãããããããå ¥è³ä½åãã¡ãç´¹ä»ããã¾ããTRICK 2022 Resultsã¯1æ¥ç®ã®å¤æ¹ã§ãããæå¾ ãã ããï¼
ãã¾ã
éçºè ããã°ãªã®ã§ãä¸è¨ã®ããã°ã©ã ã®æè¡è§£èª¬ãè»½ãæ¸ãã¦ããã¾ãã
åºæ¬æ§é ã¯ãããªã£ã¦ã¾ãã
-> &b { b["dummy", "<main code>"] }[&:eval]
ã©ã ãå¼ã«:evalããããã¯ã¨ãã¦æ¸¡ããã¨ã§ã:evalãæé»çã«to_procã§Procã«å¤æããã¾ãããã®Procã«"<main code>"ãæ¸¡ããããã¨ã§ãKernel#evalãå¼ã³åºããã¦ãæçµçã«main codeãå®è¡ããã¾ãã
<main code>ã®ã¨ããã¯ãâã®ãããªæãã§ç¸¦é·ã«ãã¦ãã¾ãã
a = ?p b = ?u c = ?t d = ?s a + b + c + d #=> "puts"
ä¸çªãããããã£ãã®ã:evalã¨ããã·ã³ãã«ãä½ãåºãã¨ããã§ãããã£ãããã¿ãã°ããã¨ã:aããå§ã¾ãã·ã³ãã«ã®Rangeãåæããã¨ã102,789çªç®ã:evalã§ãã
(:a..:ÃÃ).to_a[102789] #=> :eval
:ÃÃã¨ããUnicodeãªã·ã³ãã«ã使ãã¨ãããèã2æååã§ãããªãã4ãã¤ãè¶
ãªã®ã§ãåæãéä¸ã§æã¡åãããã«:aãã:zzzzã¾ã§ã®é
åãå¾ããã¾ãã
ãã¨ã¯èªã¿è§£ãã¦ã¿ã¦ãã ããã
ãªããå®éã«æç¨¿ããã®ã¯Hello, world!ã§ã¯ãªããä»»æã®Rubyã³ã¼ãã縦é·ã«å¤æããã³ã¼ãã§ãããå®å ¨ãªæç¨¿ã¯âã«ç½®ããã®ã§èå³ããã°ã©ããã
ãã¾ãã®ãã¾ã
ããããå¥ã®å®£ä¼ã§ãããRubyKaigi彿¥ã¯ãã²ä¼å ´å ã®ã¯ãã¯ããããã¼ã¹ã«æ¥ã¦ã¿ã¦ãã ããï¼ ä»å¹´ããªããä¼ç»ãç¨æããã¦ããã¯ãã