Dancing Kids, short code #4

久しぶりの空き時間にショートコーディング休憩。
いくつか表現手法を見直して、93Byteまで短くなりました。
これで、ようやく2桁かぁー。70Byte台は遠いなぁー。

いろいろやっている最中に知ったのですが、ヒアドキュメントは $>に渡せないのですね。

# OKなコード.
puts <<EOS
hoge
EOS #=> hoge

# NGなコード.
$> <<EOS
hoge
EOS #=> uninitialized constant EOS (NameError)


そんなこんなで格闘した93Byteのコードを以下に載せておきます。


LF改行で。

$><<"#{(/r/=~i=gets)?'\\':' '}('-')#{'/'if/l/=~i}
 #{i=~/r/?' ':"/"}|_|#{'\\'if/l/!~i}
  | |"

今回のポイントは以下の通り。

  • なるべく変数は使わない。
  • 大きく一つの文字列にしてその中で処理を行うように。
  • /r/, /l/のマッチを調べるように。
  • 正規表現の否定マッチは !~ 。