Language detail: Ruby

Coverage: 97.78%
number of '+' ratings
contribution for coverage

Unsolved challenges

codes

Feed

Used modules

next >>

LL Golf Hole 8 - 横向きのピラミッドを作る (Nested Flatten)
へんなことしたら思惑とは反対にすごく長くなった・・・。
あきらめて改行と空白で整形しとく
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
n=gets.to_i;
i=s=2**n-1;
r=0;
(n*2-1).times{
  r<<=1;
  r|=(s&1);
  s>>=1;
  r&=i;
  puts r.to_s(2).split('').map{|e|['','*'][e.to_i]}.join
}
LL Golf Hole 2 - 文字列に含まれる単語の最初の文字を大文字にする (Nested Flatten)
Rubyが既に8件ありますが,久し振りに投稿.

単語間にタブが…とか細かいことは考えない.

正規表現とか,Rubyの構文とかを見直せばもっと短くなるんじゃないか?
1
2
3
4
puts gets.gsub(/(^.| .)/){$1.upcase}

# $ echo 'LL day and night'|ruby this_answer.rb
#=> LL Day And Night
LL Golf Hole 8 - 横向きのピラミッドを作る (Nested Flatten)

↑括弧が削れる。

1
(n=v gt).w(-n){|i|s ?*.*n-i.a}
LL Golf Hole 3 - 13日の金曜日を数え上げる (Nested Flatten)
yugui さんのコード、どうも動かないと思ったら step のあとに count が繋げられるのは 1.9 からなのですね。 1.8.6 ではエラーになってしまいました。 一応 1.8.6 でも動作する版を作ってみました。 2013年12月31日 まで = 2014年1月1日としてますが、許される?
1
2
3
c=0
(Time.now..Time.gm(14)).step(86400){|d|d.day==13&&d.wday==5&&(c+=1)&&p(d)}
p c
LL Golf Hole 8 - 横向きのピラミッドを作る (Nested Flatten)

44byte。自分の限界の気がする。

1
(-n=gets.to_i).upto(n){|i|puts"*"*(n-i.abs)}

与えられた自然数 n について、横向きで n 段のピラミッドを作ってください。 たとえば、 n に 4 が与えられた場合は以下のようなピラミッドを作ります。

4
*
**
***
****
***
**
*

与える自然数についてはリテラルで与える、標準入力で与える、引数で与えるなどは自由とします。

余力のあるものはこのプログラムを短くしてください。

※LL Future実行委員の高野光弘です。この出題は LL Future公式の出題であり、優れたものについてはLL Golfのセッションでご紹介させていただくかもしれません。ご理解の上、ご投稿ください。また、チケットは現在も発売中のほか、当日券もございます。よろしければ、メインイベントの方にもぜひご参加ください。

1
n=gets.to_i*2;n.times{|i|puts"*"*(i<n/2 ?i:n-i)}
LL Golf Hole 7 - バイト数を読みやすくする (Nested Flatten)
う。確かに。
修正して63byte
1
s=$*[0];l=s.size-1;x=l%3+1;p s[0,x]+"."+s[x,1]+" kMGTPE"[l/3,1]
1024ではなく1000でいいのなら、文字列のままでもいけますよね。
ということで、引数を使って57byte
1
s=$*[0];l=s.size;p s[0,l%3]+"."+s[l%3,1]+" kMGTPE"[l/3,1]
LL Golf Hole 5 - 最上位の桁を数え上げる (Nested Flatten)

もうちょっと縮まった

1
puts ("0"..$*[0]).grep(/^\d0*$/)

同じ発想でRuby

1
"0".upto($*[0]){|$_|puts$_ if/^\d0*$/}
LL Golf Hole 7 - バイト数を読みやすくする (Nested Flatten)

Pまで対応して正味74byte。 他の人と同じやり方。

1
ruby -e'n=gets.to_i;k=0;b=1024;while(n>b&&k<5);n/=b;k+=1;end;print n," KMGTP"[k,1]'

与えられたバイト数を読みやすくしてください。読みやすくとは、いわゆる human readable な表記とします(詳しくはサンプルのコードを参考にしてください)。

与えるバイト数についてはリテラルで与える、標準入力で与える、引数で与えるなどは自由とします。

余力のあるものはこのプログラムを短くしてください。

※ LL Future実行委員の高野光弘です。この出題は LL Future公式の出題であり、優れたものについてはLL Golfのセッションでご紹介させていただくかもしれません。ご理解の上、ご投稿ください。また、LL Futureのチケットは現在も発売中です。よろしければ、メインイベントの方にもぜひご参加ください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
b = gets.to_i
if b < 10**3
    puts b
elsif b < 10**6
    puts "%.1fk" % (b.to_f/10**3)
elsif b < 10**9
    puts "%.1fM" % (b.to_f/10**6)
elsif b < 10**12
    puts "%.1fG" % (b.to_f/10**9)
else
    puts "%.1fT" % (b.to_f/10**12)
end
LL Golf Hole 2 - 文字列に含まれる単語の最初の文字を大文字にする (Nested Flatten)
なるほど。
1
s$<.re.gs /\b./,&:up

1.9でも1.8.6でも動かないと思いますが, 1.8.7ならこんな感じでしょうか?

1
2
#!ruby -p
gsub /\b./,&:upcase
LL Golf Hole 3 - 13日の金曜日を数え上げる (Nested Flatten)

間違い。gorubyだとpが値を返すのでした。

1
p (Ti.no..Ti.gm(2013,12,31)).st(86400).ct{|x|x.my==13&&x.w==5&&p(x)}
LL Golf Hole 6 - 10進数を2進数に基数変換する (Nested Flatten)

pと"の間のスペースは削れますね

1
p"%b"%$*
LL Golf Hole 2 - 文字列に含まれる単語の最初の文字を大文字にする (Nested Flatten)

Ruby1.9用。Perlでも動くんではないかと思われます。

http://d.hatena.ne.jp/ku-ma-me/20080626/p1

http://d.hatena.ne.jp/shinichiro_h/20061107#1162835826

1
2
3
4
$/=' ';%#;$/=~('(?{'.(',  =$  )'^'_@|_
@||').'$&`,'.('/-).+`&/-'^'__@@_@@@_').'<>})');"#;(___=->(_,*__){$.=/./=~_
$><<([*?`...$&][$.]&&[*$&...?{][$.]?[*?@..$&][~(/@./=~[*$/..?@]*''+_)]+$':_)
__[$.]&&___[*__]})[*[*$<]]#"
LL Golf Hole 6 - 10進数を2進数に基数変換する (Nested Flatten)
#7221 のやり方のまま、表現だけ変えて9byteまで縮めてみた
1
p "%b"%$*
LL Golf Hole 3 - 13日の金曜日を数え上げる (Nested Flatten)

goruby版

1
p (Ti.no..Ti.gm(2013,12,31)).st(86400).ct{|x|x.my==13&&x.wy==5&&!p(x)}
時刻が付いてしまうのはまぁ許される?

Fri Feb 13 16:31:21 +0900 2009
Fri Mar 13 16:31:21 +0900 2009
Fri Nov 13 16:31:21 +0900 2009
Fri Aug 13 16:31:21 +0900 2010
Fri May 13 16:31:21 +0900 2011
Fri Jan 13 16:31:21 +0900 2012
Fri Apr 13 16:31:21 +0900 2012
Fri Jul 13 16:31:21 +0900 2012
Fri Sep 13 16:31:21 +0900 2013
Fri Dec 13 16:31:21 +0900 2013
10
1
p (Time.now..Time.gm(2013,12,31)).step(86400).count{|x|x.mday==13&&x.wday==5&&!p(x)}
next >>

Index

Feed

Other

Link

Pathtraq

loading...