正の整数のデジタルルート(繰り返しデジタル合計)は、前の繰り返しの結果を使用して数字の合計を計算する各繰り返しで、数字を合計する反復プロセスによって取得された(1桁の)値です。このプロセスは、1桁の数字に達するまで続きます。
たとえば、65536のデジタルルートは7です。これは、6 + 5 + 5 + 3 + 6 = 25および2 + 5 = 7であるためです。
すべてのデジタルルートを並べ替えるのはあまり意味がありません。無限に1で始まるためです。
代わりに、すべての1桁の整数とそのデジタルルートのリストを作成し、次にすべての2桁の数字とそのデジタルルート、次にトリプル、4倍などのリストを作成します。
次に、これらのリストのそれぞれについて、デジタルルートが1のすべての整数が最初に表示され、次にデジタルルートが2のすべての整数が表示されるようにソートします。ソートは安定しているため、特定のデジタルルートを持つ整数のリストは、ソート後に昇順になります。
最後に、これらのリストを1つのシーケンスに連結します。このシーケンスは、すべて1桁の数字で始まり、次にすべての2桁の数字(デジタルルートでソート)、すべての3桁の数字などになります。
チャレンジ:
入力として正の整数nを取り、上記のシーケンスのn番目の数を出力します。リストが0インデックス付きか1インデックス付きかを選択できます。
シーケンスは次のようになります。
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 19, 28, 37, 46, 55, 64, 73, 82, 91, 11, 20, 29 ...
72, 81, 90, 99, 100, 109, 118, ...
981, 990, 999, 1000, 1009, 1018, 1027, ...
テストケース:
テストケースは1から始まります。
n f(n)
9 9
10 10
11 19
40 13
41 22
42 31
43 40
44 49
45 58
600 105
601 114
602 123
603 132
604 141
605 150
4050 1453
4051 1462
4052 1471
4053 1480
4054 1489
4055 1498
コピーしやすい:
n = 9, 10, 11, 40, 41, 42, 43, 44, 45, 600, 601, 602, 603, 604, 605, 4050, 4051, 4052, 4053, 4054, 4055,
f(n) = 9, 10, 19, 13, 22, 31, 40, 49, 58, 105, 114, 123, 132, 141, 150, 1453, 1462, 1471, 1480, 1489, 1498
明確化:
- n個の最初の要素すべてを出力することはできません。n番目のみを出力します。
- コードは理論的には10 ^ 9までのすべての整数で機能する必要がありますが、999を超える入力に対してTIO(または時間制限のある他のインタープリター)でタイムアウトしても問題ありません。
- 説明が奨励されます。
それはcode-golfなので、各言語で最も短いコードが勝ちます!あなたが管理したいものよりも短くても、あなたがゴルフをしたい言語の他の解決策に落胆しないでください!