La fracción continua de un número n
es una fracción de la siguiente forma:
que converge a n
.
La secuencia a
en una fracción continua se escribe típicamente como: [a 0 ; un 1 , un 2 , un 3 , ... un n ].
Escribiremos el nuestro de la misma manera, pero con la parte repetida entre punto y coma.
Su objetivo es devolver la fracción continua de la raíz cuadrada de n
.
Entrada: un entero, n
. n
Nunca será un cuadrado perfecto.
Salida: La fracción continua de sqrt(n)
.
Casos de prueba:
2 -> [1; 2;]
3 -> [1; 1, 2;]
19 -> [4; 2, 1, 3, 1, 2, 8;]
El código más corto gana. ¡Buena suerte!
Respuestas:
GolfScript (
6660 caracteres)Advertencia: la mayor parte de
?
allí son las variables que representan enfloor(sqrt(input))
lugar de las incorporadas. Pero el primero es el incorporado.Toma entrada en stdin y salidas a stdout.
Psuedocódigo del algoritmo (prueba de corrección que actualmente se deja como ejercicio para el lector):
Una vez más, me encuentro con ganas de un solo operador que toma
a b
la pila y se vaa/b a%b
en la pila.fuente
Python, 95
97(pero correcto ...)Esto usa solo aritmética de enteros y división de piso. Esto producirá resultados correctos para todas las entradas enteras positivas, aunque si se quiere usar un largo, tendrían que agregar un carácter; por ejemplo
m=a=0L
. Y, por supuesto ... espere un millón de años para que termine el piso de mi pobre hombre.Salida:
editar: ahora usando el algoritmo de Peter Taylor. Eso
do...while
fue divertidofuente
*(c*c-n)
?Pitón,
878280Toma un entero y da salida como:
fuente
x-int(x) -> x%1
. Estoy impresionado :)Mathematica
3331La salida está en formato de lista, que es más apropiada para Mathematica. Ejemplos:
fuente
ContinuedFraction@Sqrt@#&
Pitón (
136 13396)El método estándar para fracciones continuas, extremadamente golfizado.
fuente
while 1:
. También podría poner la mayoría de las declaraciones en el ciclo while en una sola línea.8 ;1;
74 y 75; Eso no parece correcto. Se cuelga en 76.C, 137
Incluyendo la nueva línea, suponiendo que no tenga que rodar mi propia raíz cuadrada.
Se rompe para sqrt (139) y contiene el punto y coma extra ocasional en la salida, pero estoy demasiado cansado para trabajar más en él esta noche :)
fuente
Perl, 99 caracteres
No se arruina en 139, 151, etc. Probado con un número que varía de 1 a 9 dígitos.
Nota:
$%
,$=
, y$-
son todas las variables enteras de forzamiento.fuente
APL (NARS), 111 caracteres, 222 bytes
La función f se basa en el algo que se encuentra en la página http://mathworld.wolfram.com/PellEquation.html para resolver la ecuación de Pell. Esa función f tiene su entrada no todos los números negativos (tipo fracción también). Posible que algo salga mal, recuerdo que √ tiene, en mi opinión, un problema para los números de fracciones grandes, como
entonces habría una función sqrti (). Por esta razón, la entrada de fracción (y la entrada entera) tiene que ser <10 ^ 15. prueba:
si el argumento es un cuadrado de un número, devolvería una lista de 1 solo elemento, el sqrt de ese número
Si dependiera de mí, en un ejercicio sin "codegolf" preferiría la edición anterior que usa la función sqrti () ...
fuente
fq
ya0
. también:(a×Q)-P
->P-⍨a×Q
Q←Q÷⍨
- ¿soporta narsQ÷⍨←
?