challenge LL Golf Hole 5 - 最上位の桁を数え上げる

与えられた自然数までの数え上げを行います。ただし、繰り上がりが起こったときは最上位の桁のみを数え上げます。また、与えられる自然数には0以外の桁が2回以上登場してはいけません。たとえば、300を入力として与えられた場合は以下のような出力となります。

0
1
2
3
4
5
6
7
8
9
10
20
30
40
50
60
70
80
90
100
200
300

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

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

1
2
3
4
5
6
#!/usr/bin/env ruby
def f(n, m = 0)
    puts m    
    n == m ? return : f(n, m + 10 ** (m.to_s.size - 1) )
end
f(300)

Posted feedbacks - SQL

MySQL と oracle で動作を確認しました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
SELECT DISTINCT t.x*v.y count_up
FROM (
SELECT 0 x FROM DUAL UNION
SELECT 1 FROM dual UNION
SELECT 2 FROM dual UNION
SELECT 3 FROM dual UNION
SELECT 4 FROM dual UNION
SELECT 5 FROM dual UNION
SELECT 6 FROM dual UNION
SELECT 7 FROM dual UNION
SELECT 8 FROM dual UNION
SELECT 9 FROM dual) t
, (SELECT 1 y FROM dual UNION
SELECT 10 FROM dual UNION
SELECT 100 FROM dual UNION
SELECT 1000 FROM dual UNION
SELECT 10000 FROM dual UNION
SELECT 100000 FROM dual UNION
SELECT 1000000 FROM dual UNION
SELECT 10000000 FROM dual UNION
SELECT 100000000 FROM dual UNION
SELECT 1000000000 FROM dual UNION
SELECT 10000000000 FROM dual UNION
SELECT 100000000000 FROM dual UNION
SELECT 1000000000000 FROM dual) v
WHERE t.x*v.y <= 300
ORDER BY t.x*v.y;

Index

Feed

Other

Link

Pathtraq

loading...