Une représentation en double précision d'une décimale ne peut garantir qu'une précision de 15 décimales, donc pi est approximé comme:
3.141592653589793
Vous pouvez voir que le chiffre 3
est en position 1, 10, 16
, le chiffre 1
est en position, 2, 4
etc.
Défi
Votre tâche consiste à créer un programme ou une fonction qui crée un double aléatoire entre 0 et 1 et mappe les valeurs de ce nombre sur la valeur de pi. Pour ce faire, placez les différents chiffres dans les nombres aléatoires à la position que le chiffre a dans pi. Si le chiffre n'est pas trouvé dans pi, vous le sauterez, et chaque chiffre dans pi qui n'est pas dans le nombre aléatoire sera représenté par un x
. Chaque valeur ne peut être utilisée qu'une seule fois, en commençant par la gauche.
Quelques exemples le rendront probablement plus clair. Dans les exemples suivants, le premier nombre est pi, le second est le nombre aléatoire et le dernier est la sortie souhaitée.
3.141592653589793
0.111111111111111
x.1x1xxxxxxxxxxxx
3.141592653589793
0.531000000000000
3.1xx5xxxxxxxxxxx
3.141592653589793
0.123456789123456
3.141592653x8x7xx
3.141592653589793
0.967552381459391
3.14159265358979x
Règles:
- La fonction ne doit prendre aucune entrée (une exception possible est expliquée au point 3)
- La sortie doit être constituée uniquement de la chaîne de sortie, avec une nouvelle ligne facultative (un seul espace de fin est également accepté)
- Si votre programme n'a pas de valeur Pi intégrée et / ou de RNG, vous pouvez coder en dur Pi et prendre le nombre aléatoire en entrée. Vous ne pouvez pas coder en dur le nombre aléatoire ou prendre Pi comme entrée.
- La valeur codée en dur pour Pi et les 15 chiffres aléatoires (vous pouvez ignorer
0.
car vous savez que ce sera entre 0 et 1) seront inclus dans le nombre d'octets. - Si votre langue n'a pas la précision requise, vous pouvez utiliser moins de précision sous les restrictions suivantes
- Les chiffres de Pi doivent être précis jusqu'à la précision que vous avez
- Vous ne pouvez pas produire plus de valeurs que ce qui est garanti, c'est-à-dire que vous ne pouvez pas produire 15 chiffres si la précision ne permet que 8 décimales précises.
- La valeur codée en dur de Pi comptera comme 16 octets (vous n'avez pas besoin du point décimal), même si votre programme ne prend en charge que 8 chiffres.
- La valeur d'entrée pour le nombre aléatoire comptera comme 15 octets (vous n'avez pas besoin
0.
. C'est parce que les langues avec une faible précision ne devraient pas avoir un avantage injuste. - Le programme doit prendre en charge une précision de 5 décimales (au moins).
- Modifier: Pour valider la réponse: Le nombre aléatoire doit être imprimé d'une manière ou d'une autre, mais cette opération ne doit pas être incluse dans le nombre d'octets. Ainsi, par exemple, s'il est possible d'insérer un
print r
à la fin du script, cette partie n'augmentera pas le score. - Vous ne pouvez pas soustraire les octets s'il fait partie d'une autre opération nécessaire. C'est à dire si le code est
print pi, r
, alors vous ne pouvez que soustraire, r
. - Si vous devez insérer des pièces à plusieurs endroits dans le code, veuillez inclure les deux versions (celle qui imprime le nombre aléatoire et celle qui ne le fait pas avec un commentaire tel que:
_p
et_oNo
sont nécessaires pour imprimer le nombre aléatoire._p
Fait xxx et_oNo
fait yyy._p
et_oNo
ne sera pas inclus dans le nombre d'octets.
Le code le plus court en octets gagne.
Classement
L'extrait de pile au bas de cet article génère le catalogue à partir des réponses a) en tant que liste des solutions les plus courtes par langue et b) en tant que classement général.
Pour vous assurer que votre réponse apparaît, veuillez commencer votre réponse avec un titre, en utilisant le modèle Markdown suivant:
## Language Name, N bytes
où N
est la taille de votre soumission. Si vous améliorez votre score, vous pouvez conserver les anciens scores dans le titre, en les barrant. Par exemple:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Si vous souhaitez inclure plusieurs nombres dans votre en-tête (par exemple, parce que votre score est la somme de deux fichiers ou que vous souhaitez répertorier les pénalités de drapeau d'interprète séparément), assurez-vous que le score réel est le dernier numéro de l'en-tête:
## Perl, 43 + 2 (-p flag) = 45 bytes
Vous pouvez également faire du nom de la langue un lien qui apparaîtra ensuite dans l'extrait de code:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
0 < random < 1
ou 0 <= random <= 1
?