虫食いコード
def foo(n)
s = n.??????
s.gsub(/./){|c|c.to_i>0?"*":"\n"}
end
上のようなメソッドがあります。
引数nには、数値が渡されることを期待しています。
n.??????では、あるメソッドを呼んでいます。
引数と戻り値
foo 975では、以下の文字列が返ります。
****
****
foo 3006189では、以下の文字列が返ります。
*
**
***
****
***
**
*
foo 8791795956735では、以下の文字列が返ります。
**********
**********
**********
**********
問題
foo 39699650524203608556267005547831588735だと、何て返るんでしょう。
一言
コードゴルフ的なものを解いてたら思いついたのでクイズにしてみました。
Ruby以外では、大きな数値を扱うのが難しいのでRubyにしました。
(gsubの部分はぶっちゃけ少し分かりにくくしてます。素直に書いたらすぐに答え分かるし。)
ヒントのようなもの
-
foo 1では*が返りますが、foo 2でも*が返ります。
おまけ: 別バージョン
コメントでアドバイスをいただき(ありがとうございます!)、別バージョンが出来たのでこちらにも追記します。
def foo(n)
s = n.??????
s.gsub(/./){|c|c=c.to_i;c>0?(c>1?"L"*(c-1):" "):"\n"}
end
n.??????の部分は、上のと少し違います。
foo 221607684358918433469140214100113483789619871671261045176200726322239151137507466750261989293139198188272371638628418943901601268とすると、以下の文字列が返ります。
LLLLLLLL LLL LLL LLLLLLLL LLL LLL
LLL LLL LLL LLL LLL LLL LLL LLL
LLL LLL LLL LLL LLLLLLLL LLL LLL
LLLLLLL LLL LLL LLL LLL LLLLLLL
LLL LLL LLL LLL LLL LLL LLL
LLL LLLL LLLLLLL LLLLLLLL LLL