RubyKaigi 2019に参加された方もそうでない方もお疲れ様でした。あと数日で到達するゴールデンウィークを指折り数えるowlです。
RubyKaigiでは多彩なセッションにより豊富な知見が得られた他に、Rubyist同士の交流も商店街を貸し切ってのパーティや無料屋台などのイベントによるところもあって例年にないほどの賑わいでした。
さて、そんなRubyKaigiの様子やセッションの知見をみなさんに共有するのは他の参加者による才筆へ委ねることにして、この記事では弊ブースで自分が三日間日替わりに出題していた難読Rubyコードクイズの紹介と解説をしていきます。
毎日このクイズを解きに足を運んでくださった方には感謝しております。お目汚しですが自分が考えたクイズをMatzさん始めコミッターの方にまでご覧頂けたのは光栄です。
<!-- 儀礼的でちょっと退屈な口上はここまで -->
出題
まずRubyKaigiへ参加できなかった方にも楽しんで頂くために出題リストだけを先にお見せします。ぜひ答えを想像してから解説をお読み下さい。
原則としてどの問題もirb上で提示されたコードを実行した際に何が評価値になるかを答えます。
Day1 - 1
難易度:★☆☆
irb> !????!:!?!
=> ?
選択肢:「false」 「“?”」 「:!」 「SyntaxError」
Day2 - 1
難易度:★★★
irb> %%%%%%..%%[0].size[0]
=> ?
選択肢:「1」 「0」 「""」
(お詫び: 掲載当初は問題文がRubyKaigiで出題されたものと異なっていました)
Day3 - 1
難易度:★★☆
irb> puts = :puts
irb> puts = send(puts, puts) || puts(puts) { puts = “puts” }
irb> puts
=> ?
選択肢:「"puts"」 「:puts」 「nil」
Day3 - 2
難易度:★★☆
irb> %%%%%%%%?????:??
=> ?
選択肢:「""」 「"%"」 「"?"」 「":"」
Day3 - 3
難易度:★★★
irb> a = 0.0/0; a == a ? a : irb.quit
直後に何が発生しますか?
選択肢:「ZeroDivisionError」 「undefined local variable」 「irbが終了する」 「irbが起動する」
続きを読む