LL Deccadeの「君ならどう書く」でEnumerable

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要らないんじゃね、ということに気付いた。
まあいいや。