original page : http://ja.doukaku.org/202/
与えられたバイト数を読みやすくしてください。読みやすくとは、いわゆる human readable
な表記とします(詳しくはサンプルのコードを参考にしてください)。与えるバイト数についてはリテラルで与える、標準入力で与える、引数で与えるなどは自由とします。
余力のあるものはこのプログラムを短くしてください。
※ LL Future実行委員の高野光弘です。この出題は LL Future公式の出題であり、優れたものについてはLL Golfのセッションでご紹介させていただくかもしれません。ご理解の上、ご投稿ください。また、LL
Futureのチケットは現在も発売中です。よろしければ、メインイベントの方にもぜひご参加ください。
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
#7326
original page : http://ja.doukaku.org/comment/7326/
R的にはループを使わない方向で。
bytes.pretty <- function(n){ u <- c('', 'k', 'M', 'G', 'T') r <- 1024^(1:length(u)-1) i <- which.min(abs(512-n/r)) sprintf("%.1f%s", n/r[i], u[i]) }