Una representación de doble precisión de un decimal solo puede garantizar una precisión de 15 decimales, por lo que pi se aproxima como:
3.141592653589793
Puede ver que el dígito 3
está en posiciones 1, 10, 16
, el dígito 1
está en posiciones, 2, 4
etc.
Reto
Su tarea es crear un programa o función que cree un número doble aleatorio entre 0 y 1, y asigne los valores de ese número al valor de pi. Para ello, coloca los diferentes dígitos en los números aleatorios en la posición que ese dígito tiene en pi. Si el dígito no se encuentra en pi, lo omitirá, y cada dígito en pi que no esté en el número aleatorio estará representado por un x
. Cada valor solo se puede usar una vez, comenzando desde la izquierda.
Algunos ejemplos probablemente aclararán esto. En los siguientes ejemplos, el primer número es pi, el segundo es el número aleatorio y el último es el resultado deseado.
3.141592653589793
0.111111111111111
x.1x1xxxxxxxxxxxx
3.141592653589793
0.531000000000000
3.1xx5xxxxxxxxxxx
3.141592653589793
0.123456789123456
3.141592653x8x7xx
3.141592653589793
0.967552381459391
3.14159265358979x
Reglas:
- La función no debe tomar ninguna entrada (una posible excepción se explica en el punto 3)
- La salida consistirá solo en la cadena de salida, con una nueva línea opcional (también se acepta un espacio final simple)
- Si su programa no tiene un valor Pi incorporado y / o un RNG, puede codificar Pi y tomar el número aleatorio como entrada. No puede codificar el número aleatorio o tomar Pi como entrada.
- Tanto el valor codificado para Pi como los 15 dígitos aleatorios (puede omitir
0.
ya que sabe que estará entre 0 y 1) se incluirán en el recuento de bytes. - Si su idioma no tiene la precisión requerida, puede usar menos precisión bajo las siguientes restricciones
- Los dígitos de Pi deben ser precisos hasta la precisión que tenga
- No puede generar más valores de los que se garantiza que tiene la correcta, es decir, no puede generar 15 dígitos si la precisión solo permite 8 decimales precisos.
- El valor codificado de Pi contará como 16 bytes (no necesita el punto decimal), incluso si su programa solo admite 8 dígitos.
- El valor de entrada para el número aleatorio contará como 15 bytes (no es necesario
0.
. Esto se debe a que los idiomas con baja precisión no deberían tener una ventaja injusta. - El programa debe admitir 5 decimales de precisión (al menos).
- Editar: Para validar la respuesta: el número aleatorio debe imprimirse de alguna manera, pero esta operación no tiene que incluirse en el recuento de bytes. Entonces, por ejemplo, si es posible insertar un
print r
al final del guión, esa parte no aumentará la puntuación. - No puede restar los bytes si es parte de otra operación necesaria. Es decir, si el código es
print pi, r
, entonces solo puedes restar, r
. - Si tiene que insertar partes en varios lugares del código, incluya ambas versiones (la que imprime el número aleatorio y la que no lo hace con un comentario como:
_p
y_oNo
son necesarios para imprimir el número aleatorio._p
Does xxx and_oNo
does aaa._p
y_oNo
no se incluirán en el recuento de bytes.
El código más corto en bytes gana.
Tabla de clasificación
El Fragmento de pila al final de esta publicación genera el catálogo a partir de las respuestas a) como una lista de la solución más corta por idioma yb) como una tabla de clasificación general.
Para asegurarse de que su respuesta se muestre, comience con un título, utilizando la siguiente plantilla de Markdown:
## Language Name, N bytes
¿Dónde N
está el tamaño de su envío? Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Si desea incluir varios números en su encabezado (por ejemplo, porque su puntaje es la suma de dos archivos o desea enumerar las penalizaciones de la bandera del intérprete por separado), asegúrese de que el puntaje real sea el último número en el encabezado:
## Perl, 43 + 2 (-p flag) = 45 bytes
También puede hacer que el nombre del idioma sea un enlace que luego aparecerá en el fragmento:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
0 < random < 1
o 0 <= random <= 1
?