定義
連結された自然数(1から始まる正の整数)の無限の行があります。
1234567891011121314151617181920212223...
チャレンジ
- 入力として位置番号を受け入れ、上記で定義された行のその位置から数字を出力する任意の言語でプログラムを作成します。
- 位置番号は、任意のサイズの正の整数です。つまり、最初の位置は1であり、出力数字「1」が生成されます。
- 入力は、10進数(例:13498573249827349823740000191)、または正の整数に対応するe表記(例:1.2e789)のいずれかです。
- 非常に大きなインデックスを入力として指定すると、プログラムは妥当な時間(最新のPC / Macでは10秒)で終了する必要があります(たとえば、1e123456-123456ゼロの1)。したがって、単純な反復ループは受け入れられません。
- 無効な入力が与えられた場合、プログラムは1秒以内にエラーで終了する必要があります。例えば。1.23e(無効)、または1.23e1(12.3に等しい-整数ではない)
- パブリックBigNumライブラリを使用して数値を解析/保存し、それらに対して単純な数学演算を実行しても問題ありません(+-* / exp)。バイトペナルティは適用されません。
- 最短のコードが優先されます。
TL; DR
- 入力:bignum整数
- 出力:無限行のその位置の数字
123456789101112131415...
いくつかの受け入れテストケース
「入力:出力」という表記で。それらはすべて合格するはずです。
- 1:1
- 999:9
- 10000000:7
- 1e7:7(上記の行と同じ)
- 13498573249827349823740000191:6
- 1.1e10001:5
- 1e23456:5
- 1.23456e123456:4
- 1e1000000:0
- 1.23e:エラー(無効な構文)
- 0:エラー(範囲外)
- 1.23e1:エラー(整数ではない)
ボーナス!
数字内の桁位置番号を出力し、数字自体を出力します。例えば:
13498573249827349823740000191: 6 24 504062383738461516105596714
- 番号「50406238373846151610559 6 714」の位置24の数字「6」です。
1e1000000: 0 61111 1000006111141666819445...933335777790000
- 999995桁の長い数字の位置61111の数字「0」ここには含めません。
ボーナスタスクを実行する場合、コードのサイズに0.75を掛けます
クレジット
このタスクは、2012年のdevclub.euの集まりの1つで、多数の要件なしで行われました。したがって、提出された回答のほとんどは些細なループでした。
楽しむ!
1.23456e123456
任意の入力を処理するための要件は、そのような値をネイティブに処理できない言語を罰し、チャレンジに接する文字列処理を行うことを要求します。