るびまゴルフ

2009年09月15日

最近恒例になったゴルフ挑戦。

Rubyist Magazine - るびまゴルフ 【第 7 回】

一行の英単語が標準入力から与えられて、その末尾から 1Byte ずつ伸ばしていく形で文字数分の行を出力して下さい。具体的には

hoge

という入力に対して

e
ge
oge
hoge

と出力して下さい。入力は末尾に改行があるとしても無いとしても構いません。両方別々に解いていただいても良いですし、両方同時に解けるコードを考えていただくのも良いかと思います。入力の一行にはアルファベットや数値しか含まれないと仮定して良いことにします。例えば、入力末尾に改行が無いとすると

l=gets
l.size.times{|i|puts l[-i-1,i+1]}

が解答例となります。パーは 35Bytes とします。

今回は、パーに辿り着くのがやっとだった。

続きを読む

maraigue at 17:45コメント(0)トラックバック(0) 

2009年07月01日

久しぶりのゴルフに挑戦。

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 とします。

また余力があれば、入力が

3 5

と空白区切りで与えられる場合、 seq のように引数として与えられる場合、つまり ARGV を使う場合も考えてみて下さい。

(以下、私の回答)

続きを読む

maraigue at 12:07コメント(0)トラックバック(0) 

2009年03月09日

前回のるびまゴルフに続き、今回も挑戦。

Rubyist Magazine - るびまゴルフ 【第 5 回】

今回のコードゴルフ(指定された処理を行う、なるべく短いプログラムを書く)の問題は以下の通りである。
1 問目は、標準入力から複数の行を受け取って、同じ内容の行は捨てつつ標準出力に出力するプログラムです。具体的には、

hoge fuga hige
foo
bar
hoge fuga hige
baz
bar
fuga hoge

という入力に対して、

hoge fuga hige
foo
bar
baz
fuga hoge

を出力して下さい。ただし出力順は不問とします。また、入出力ともに末尾に改行がついているとしても、ついていないとしても構いません。

(中略)

2 問目は、出現した単語を同じ単語を捨てつつ出力するプログラムです。 1 つ目の問題と同じ入力に対して

hoge
fuga
hige
foo
bar
baz

を出力して下さい。こちらも出力順は不問で、末尾の改行は都合の良いようにして良い、とします。
(以下、私の回答)続きを読む

maraigue at 15:50コメント(0)トラックバック(0) 

2008年10月04日

Rubyist Magazine(るびま)で最近連載されている、コードゴルフ(指定された処理を行う、なるべく短いプログラムを書く問題)に挑戦してみた。

10月1日発行のるびまに掲載されたコードゴルフの問題は以下のようなものであった。
整数 n に対して、 0 ならば 1 、そうでないなら 0 をかえすような表現が欲しいことは多々あります。 Perl や C などでは、 !n とすれば簡単に得られますが、 Ruby ではあまり簡単ではありません。まず思いつくのは、三項演算子 ?: を用いた、
n==0?1:0
というようなコードでは無いでしょうか。この表現を縮めてみて下さい。また、少し改変した、
1+(n==0?1:0)
というコードも同様に縮めてみて下さい。必要なら、 n が負でないことを仮定したり、 n を破壊するコードも OK としますが、なるべく使わない方法も考えてみて下さい。パーは後者で 9Bytes です。
以下が私の回答である。nが負でないことを仮定した場合しか解けなかったが一応。

※19:40追記
某氏の発言で、かなりすごい回答があることに気付きました。私の回答なんて見る価値もないような回答です。てか私の回答は見ないほうがいいかも…。続きを読む

maraigue at 17:27コメント(0)トラックバック(0) 
livedoor プロフィール

H. Hiro

  • ライブドアブログ