Escriba un programa para calcular los primeros 500 dígitos de pi, cumpliendo con las siguientes reglas:
- Debe tener menos de 500 caracteres de longitud.
- No puede incluir "pi", "math.pi" o constantes pi similares, ni puede llamar a una función de biblioteca para calcular pi.
- No puede usar los dígitos "3", "1" y "4" consecutivamente.
- Debe ejecutarse en un tiempo razonable (menos de 1 minuto) en una computadora moderna.
El programa más corto gana.
code-golf
restricted-source
pi
Thomas O
fuente
fuente
Respuestas:
Golfscript - 29 caracteres
Publicaré el análisis más tarde
fuente
Mathematica (34 caracteres): (sin "trampa" con trigonometría)
N[2Integrate[[1-x^2]^.5,-1,1],500]
Entonces, para explicar la magia aquí:
Integrate[function, lower, upper]
le da el área bajo la curva "función" de "inferior" a "superior". En este caso, esa función es[1-x^2]^.5
, que es una fórmula que describe la mitad superior de un círculo con radio 1. Debido a que el círculo tiene un radio de 1, no existe para valores de x inferiores a -1 o superiores a 1. Por lo tanto, estamos encontrando el área de la mitad de un círculo. Cuando multiplicamos por 2, obtenemos el área dentro de un círculo de radio 1, que es igual a pi.fuente
sqrt[1-x^2]
a(1-x^2)^.5)
Python (83 caracteres)
fuente
PARI / GP, 14
Puede evitar trigonometría reemplazando la segunda línea con
o
o
o
o
fuente
bc -l (22 = 5 línea de comando + 17 programa)
fuente
Mathematica (17 bytes)
Prueba de validez .
fuente
Python3 136
Utiliza la fórmula de Madhava .
Python3 164
Utiliza esta fórmula.
fuente
Mathematica - 50
fuente
Pyth , 21
Utiliza este algoritmo:
pi = 2 + 1/3*(2 + 2/5*(2 + 3/7*(2 + 4/9*(2 + ...))))
encontrado en los comentarios de la respuesta Golfscript.fuente
r
operación se modificó recientemente de una manera que rompió esta respuesta. Cambie1
a a0
, y funcionará en Pyth actual.Axioma, 80 bytes
para referencia https://tuts4you.com/download.php?view.452 ; sería una aplicación cruzada a 6 * arctg (1 / sqrt (3)) =% pi y usaría la expansión de serie para arctg
fuente
JavaScript, 68 bytes
Pruébalo en línea!
fuente