LL Golf Hole 7 - バイト数を読みやすくする
Posted feedbacks - Ruby
与えられたバイト数を読みやすくしてください。読みやすくとは、いわゆる 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
|
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]'
|
1024ではなく1000でいいのなら、文字列のままでもいけますよね。 ということで、引数を使って57byte
1 | s=$*[0];l=s.size;p s[0,l%3]+"."+s[l%3,1]+" kMGTPE"[l/3,1]
|
う。確かに。 修正して63byte
1 | s=$*[0];l=s.size-1;x=l%3+1;p s[0,x]+"."+s[x,1]+" kMGTPE"[l/3,1]
|



takano32
#7310()
[
Ruby
]
Rating1/1=1.00
与えられたバイト数を読みやすくしてください。読みやすくとは、いわゆる human readable な表記とします(詳しくはサンプルのコードを参考にしてください)。
与えるバイト数についてはリテラルで与える、標準入力で与える、引数で与えるなどは自由とします。
余力のあるものはこのプログラムを短くしてください。
※ LL Future実行委員の高野光弘です。この出題は LL Future公式の出題であり、優れたものについてはLL Golfのセッションでご紹介させていただくかもしれません。ご理解の上、ご投稿ください。また、LL Futureのチケットは現在も発売中です。よろしければ、メインイベントの方にもぜひご参加ください。
Rating1/1=1.00-0+
[ reply ]