るびまゴルフになぜか Perl で参戦してみた
Rubyist Magazineのるびまゴルフのお題を Perl でやってみました。
# Ruby だとオイラのウデではアンダーパーも厳しいからね。。。
お題はこんな感じ。
Rubyist Magazine - るびまゴルフ 【第 6 回】
seq という Unix コマンドがあります。このコマンドを使うと、数値を2つ引数にして、その間にある数を出力することができます。例えば 3 と 5 を引数として実行すると
% seq 3 5
3
4
5というような実行結果になります。
今回はこのコマンドを実装してみて下さい。入力はコンマで区切られて標準入力から与えられるものとします。例えば
3,5
という入力に対して
3
4
5と出力するようにして下さい。例えば
a,b=gets.split(',').map{|v|v.to_i}
a.upto(b){|i|puts i}というようなコードと同じ出力が得られるようにして下さい。パーは 50Bytes とします。
と、言うわけでやってみました。ただし Perl で。
最初に1秒で思いついたやつはこんな感じ。
($b,$e)=split(/,/,<>);print"$_\n"for($b..$e)
45B ですね。一応アンダーパー。say が使えるともうちょい楽なんだけどねぇ。
で、たまたま今読んでる、マスタリングPerlで、「正規表現のgオプションをリストコンテキストで評価すると、マッチした文字が配列に入る」ことを知り、それを使ってみる。
$_=<>;($b,$e)=/\d+/g;print"$_\n"for($b..$e)
44B。相変わらずのぎりぎりアンダーパー。
Perl だとこんなもんですかね?
ARGV でいいなら結構短いです。(35B)。コード的にも結構普通な感じ。
print"$_\n"for($ARGV[0]..$ARGV[1])