連続した数列を範囲形式にまとめたい(馬鹿な人間の場合)
Rubyでどう書く?:連続した数列を範囲形式にまとめたい - builder by ZDNet Japan
並んだ数字を確認用にわかりやすくする為に、ソートされた数字の列をハイフンで繋ぐにはどうすればよいでしょうか?
(略)
仕様
* 数値は、半角スペースで区切られた文字列で渡されます。
* 続いている部分は、最初の数値と最後の数値を-(ハイフン)で繋いだ表記にします。
* 連続が1回の場合(前の数も後ろの数も連続でない)は、-(ハイフン)では繋ぎません。
* 出力は、「,」(カンマ)と半角スペースで区切られた文字列でなければなりません。
馬鹿な人間の血が騒ぐ。
ボクの場合。配列なんかいらないよ!injectなんて難しいメソッド使わないよ!正規表現の文字列置換だけで十分さ!
a=$*[0]+'' while a.sub!(/(\d+)\s+(\d+)/){|m|$1.succ==$2?"#{$1}!#{$2}":"#{$1}, #{$2}"};end puts(a.gsub(/(\d+)(!\d+)*!(\d+)/){|m|"#{$1}-#{$3}"})
143バイト
追記:空白が一個足りなかったので修正しました