2012/8/4に開催された、LL Decadeに参加してきました。
LLイベントの記念すべき10年目。
私が初めて参加したのは、2年前のLL Tigerだったかな。
そのころは、コミュニティへの参加や勉強会への出席も無く、
かなりぼっちだったので、無理矢理同僚誘って行ってましたが、
今年は一人で行っても大丈夫でした。成長してるってことなんだろうか。
10年前と言えば、私はAoEシリーズのAoCをひたすらやりまくったおかげで、
見事に大学受験に失敗した年です。
もうそんなに経つのかと衝撃を覚えるばかり。
その頃は、まだPCを使って遊んでただけで、
プログラミングとか全然やったことが無かったですね。
簡単なCGIとかDelphiちょっと触ったことがあったぐらい。
本題
今回のLL Decadeでこんな企画がありました。
君ならどう書く Online 問題文
http://ll.jus.or.jp/2012/doukaku-online-main.html
締切時間の確認忘れてて、回答に間に合いませんでしたが、
とりあえず書いてみたので、Gistにアップしてみた。
(恥ずかしいコードなので、こっちには貼らないw)
全体的に、何も考えてない微妙なコードですが、
最後のイテレーションの部分で、メソッドチェインがいい感じに決まったので、
Rubyをキメると気持ちいい、という感覚が味わえたので良かった。
こんな感じ。
puts STDIN.each_line.each_slice(4).inject("") {|output, lines_4| decryptor = Decryptor.new crypt_bin = lines_4.inject("") {|bin, line| bin + line.chomp.to_bin } output + decryptor.bin2str(crypt_bin) }
ここの、標準入力をEnumeratorで取得して4行づつinjectする感じが、
いい感じにEnumerable, Enumeratorな感じで、
気持ち良く書けました。
each_sliceは素晴らしく便利です。
というわけで、Ruby気持ちいいよね、という中身のない話でした。
今見直したら、これeach_line要らないんじゃね、ということに気付いた。
まあいいや。