Una rappresentazione a doppia precisione di un decimale può garantire solo un'accuratezza di 15 cifre decimali, quindi pi è approssimato come:
3.141592653589793
Puoi vedere che la cifra 3
è in posizioni 1, 10, 16
, la cifra 1
è in posizioni 2, 4
ecc.
Sfida
Il tuo compito è creare un programma o una funzione che crei un doppio numero casuale compreso tra 0 e 1 e mappi i valori di quel numero sul valore di pi. Puoi farlo posizionando le diverse cifre nei numeri casuali nella posizione che la cifra ha in pi. Se la cifra non viene trovata in pi, la salterai e ogni cifra in pi che non è nel numero casuale verrà rappresentata da un x
. Ogni valore può essere utilizzato una sola volta, a partire da sinistra.
Alcuni esempi probabilmente lo renderanno più chiaro. Negli esempi seguenti, il primo numero è pi, il secondo è il numero casuale e l'ultimo è l'output desiderato.
3.141592653589793
0.111111111111111
x.1x1xxxxxxxxxxxx
3.141592653589793
0.531000000000000
3.1xx5xxxxxxxxxxx
3.141592653589793
0.123456789123456
3.141592653x8x7xx
3.141592653589793
0.967552381459391
3.14159265358979x
Regole:
- La funzione non deve accettare alcun input (una possibile eccezione è spiegata nel punto 3)
- L'output deve consistere solo della stringa di output, con una nuova riga opzionale (è accettato anche un singolo spazio finale)
- Se il tuo programma non ha un valore Pi incorporato e / o un RNG, allora puoi hardcode Pi e prendere il numero casuale come input. Non è possibile codificare il numero casuale o prendere Pi come input.
- Sia il valore hardcoded per Pi, sia le 15 cifre casuali (puoi saltare
0.
poiché sai che sarà compreso tra 0 e 1), saranno inclusi nel conteggio dei byte. - Se la tua lingua non ha la precisione richiesta, puoi usare meno precisione con le seguenti restrizioni
- Le cifre di Pi devono essere accurate fino alla precisione che hai
- Non è possibile generare più valori di quanti ne siano garantiti, ovvero non è possibile emettere 15 cifre se la precisione consente solo 8 decimali accurati.
- Il valore hardcoded di Pi verrà conteggiato come 16 byte (non è necessario il punto decimale), anche se il programma supporta solo 8 cifre.
- Il valore di input per il numero casuale conterà come 15 byte (non è necessario
0.
. Questo perché le lingue con bassa precisione non dovrebbero avere un vantaggio ingiusto. - Il programma deve supportare una precisione di 5 decimali (almeno).
- Modifica: per convalidare la risposta: il numero casuale deve essere stampato in qualche modo, ma questa operazione non deve essere inclusa nel conteggio dei byte. Ad esempio, se è possibile inserire un carattere
print r
alla fine dello script, quella parte non aumenterà il punteggio. - Non è possibile sottrarre i byte se fa parte di un'altra operazione necessaria. Cioè se il codice è
print pi, r
, allora puoi solo sottrarre, r
. - Se devi inserire parti diverse posizioni nel codice, includi entrambe le versioni (quella che stampa il numero casuale e quella che non ha un commento come:
_p
e_oNo
sono necessarie per stampare il numero casuale._p
Fa xxx e_oNo
non yyy._p
e_oNo
non saranno inclusi nel conteggio dei byte.
Il codice più corto in byte vince.
Classifica
Lo snippet di stack nella parte inferiore di questo post genera il catalogo dalle risposte a) come elenco della soluzione più breve per lingua eb) come classifica generale.
Per assicurarti che la tua risposta venga visualizzata, ti preghiamo di iniziare la risposta con un titolo, utilizzando il seguente modello Markdown:
## Language Name, N bytes
dov'è N
la dimensione del tuo invio. Se si migliora il punteggio, è possibile mantenere i vecchi punteggi nel titolo, colpendoli. Per esempio:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Se si desidera includere più numeri nell'intestazione (ad es. Perché il punteggio è la somma di due file o si desidera elencare separatamente le penalità del flag dell'interprete), assicurarsi che il punteggio effettivo sia l' ultimo numero nell'intestazione:
## Perl, 43 + 2 (-p flag) = 45 bytes
Puoi anche rendere il nome della lingua un collegamento che verrà quindi visualizzato nello snippet:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
0 < random < 1
o 0 <= random <= 1
?