Definizione
Esiste una fila infinita di numeri naturali concatenati (numeri interi positivi, che iniziano con 1):
1234567891011121314151617181920212223...
Sfida
- Scrivi il programma in qualsiasi lingua, che accetta il numero di posizione come input e produca cifre da quella posizione nella riga sopra definita.
- Il numero di posizione è un numero intero positivo di dimensione arbitraria. Questa è la prima posizione è 1, che fornisce la cifra in uscita '1'
- L'immissione è in decimale (es. 13498573249827349823740000191) o notazione elettronica (es. 1.2e789) corrispondente all'intero positivo.
- Il programma deve terminare in un tempo ragionevole (10 secondi su un moderno PC / Mac), dato un indice molto grande come input (es. 1e123456 - ovvero 1 con 123456 zero). Così, semplice ciclo di iterazione non è accettabile.
- Il programma deve terminare con un errore in 1 s, se viene fornito un input non valido. Per esempio. 1.23e (non valido) o 1.23e1 (uguale a 12.3 - non un numero intero)
- Va bene usare la libreria pubblica BigNum per analizzare / memorizzare numeri e fare semplici operazioni matematiche su di essi (+ - * / exp). Nessuna penalità di byte applicata.
- Il codice più corto vince.
TL; DR
- Input: numero intero bignum
- Output: cifra in quella posizione in fila infinita
123456789101112131415...
Alcuni casi di test di accettazione
nella notazione "Input: Output". Tutti dovrebbero passare.
- 1: 1
- 999: 9
- 10000000: 7
- 1e7: 7 (uguale alla riga sopra)
- 13498573249827349823740000191: 6
- 1.1e10001: 5
- 1e23456: 5
- 1.23456e123456: 4
- 1e1000000: 0
- 1.23e: errore (sintassi non valida)
- 0: errore (fuori limite)
- 1.23e1: errore (non un numero intero)
Bonus!
Numero di posizione della cifra di output all'interno del numero e numero di output stesso. Per esempio:
13498573249827349823740000191: 6 24 504062383738461516105596714
- È la cifra '6' nella posizione 24 del numero '50406238373846151610559 6 714'
1e1000000: 0 61111 1000006111141666819445...933335777790000
- Cifra '0' nella posizione 61111 di un numero lungo di 999995 cifre che non includerò qui.
Se esegui l'attività bonus, moltiplica la dimensione del tuo codice per 0,75
Credito
Questo compito è stato assegnato in una delle riunioni di devclub.eu nel 2012, senza un numero elevato di requisiti. Quindi, la maggior parte delle risposte presentate erano loop banali.
Divertiti!
1.23456e123456
puniscono arbitrariamente i linguaggi che non possono elaborare tali valori in modo nativo e richiedono loro di eseguire l'elaborazione delle stringhe che è tangenziale alla sfida.