Since 14.Jan.2009:08:29
プログラミングと絵のブログ
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
今日は初めてるびまゴルフに挑戦してみた
問題はるびまゴルフ第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 とします。
また余力があれば、入力が
3 5
と空白区切りで与えられる場合、 seq のように引数として与えられる場合、つまり ARGV を使う場合も考えてみて下さい。
自分の解答
この3つ。
とりあえず1時間くらい頑張ってみたけどここまでだった。
とりあえずパーはクリアしたけど
添削タイム
終わった後、他の人のを見てみると、
(a..b).to_a => *a..b
にすると、3問とも6Bytes減らせるらしい。
あと1,2番はなんかうまく動かないからto_iメソッド使ってたんだけど、
getsで受け取ったら"3,5\n"になって、改行が入るみたい。
gets.chopで改行を取り除くとto_iがいらなくなって、
gets.chop=~/,/;puts *$`..$'
の27Bytes。
空白区切りなら28Bytes。
修正は↓の人を参考
http://rubyist.g.hatena.ne.jp/edvakf/20090702/1246522250
最後の詰めが甘かったw
方向性は合ってたんだけどなぁ・・・
次回はもっとがんばります。
evalとか使ってる人もいた。
両方とも26Bytes。
evalは未だに良く分からん
文字列を動的にプログラムとして認識するんだっけか
てか何で
p [3,4,5]
#=> [3,4,5]
なのに、
p *3..5
#=> 3
4
5
なんだ。謎すぐる・・・
*はto_aとは微妙に違うということか・・・
問題はるびまゴルフ第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 とします。
また余力があれば、入力が
3 5
と空白区切りで与えられる場合、 seq のように引数として与えられる場合、つまり ARGV を使う場合も考えてみて下さい。
自分の解答
- gets=~/,/;puts ($`.to_i..$'.to_i).to_a #38Bytes
- gets=~/\s/;puts ($`.to_i..$'.to_i).to_a #39Bytes
- a,b=$*;puts (a..b).to_a #23Bytes
この3つ。
とりあえず1時間くらい頑張ってみたけどここまでだった。
とりあえずパーはクリアしたけど
添削タイム
終わった後、他の人のを見てみると、
(a..b).to_a => *a..b
にすると、3問とも6Bytes減らせるらしい。
あと1,2番はなんかうまく動かないからto_iメソッド使ってたんだけど、
getsで受け取ったら"3,5\n"になって、改行が入るみたい。
gets.chopで改行を取り除くとto_iがいらなくなって、
gets.chop=~/,/;puts *$`..$'
の27Bytes。
空白区切りなら28Bytes。
修正は↓の人を参考
http://rubyist.g.hatena.ne.jp/edvakf/20090702/1246522250
最後の詰めが甘かったw
方向性は合ってたんだけどなぁ・・・
次回はもっとがんばります。
evalとか使ってる人もいた。
- p *(eval"Range.new "+gets)
- eval"p *%d..%d"%gets.split
両方とも26Bytes。
evalは未だに良く分からん
文字列を動的にプログラムとして認識するんだっけか
てか何で
p [3,4,5]
#=> [3,4,5]
なのに、
p *3..5
#=> 3
4
5
なんだ。謎すぐる・・・
*はto_aとは微妙に違うということか・・・
PR
カレンダー
08 | 2024/09 | 10 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
ブログ内検索
プロフィール
HN:
uguisu_an
年齢:
35
性別:
男性
誕生日:
1989/08/20
自己紹介:
基本的にテキトー
カテゴリー
最新記事
(10/30)
(08/12)
(08/12)
(07/05)
(06/29)
最新コメント
[10/01 くゆる]
[09/21 uguisu_an]
[09/17 mayigo]
[07/17 uguisu_an]
[07/15 shinh]
最新トラックバック
アクセス解析
フリーエリア
P R