A fração contínua de um número n
é uma fração da seguinte forma:
que converge para n
.
A sequência a
em uma fração continuada é tipicamente escrita como: [a 0 ; a 1 , a 2 , a 3 , ... a n ].
Escreveremos os nossos da mesma maneira, mas com a parte repetida entre ponto e vírgula.
Seu objetivo é retornar a fração contínua da raiz quadrada de n
.
Entrada: um número inteiro n
,. n
nunca será um quadrado perfeito.
Saída: a fração continuada de sqrt(n)
.
Casos de teste:
2 -> [1; 2;]
3 -> [1; 1, 2;]
19 -> [4; 2, 1, 3, 1, 2, 8;]
O menor código vence. Boa sorte!
Respostas:
GolfScript (
6660 caracteres)Aviso: a maioria das
?
variáveis existentes representa a variávelfloor(sqrt(input))
em vez da incorporada. Mas o primeiro é o embutido.Aceita stdin e gera stdout.
Psuedocode do algoritmo (prova de correção atualmente deixada como um exercício para o leitor):
Mais uma vez, me pego querendo um único operador que assuma
a b
a pilha e a deixea/b a%b
na pilha.fonte
Python, 95
97(mas correto ...)Isso usa apenas aritmética inteira e divisão de piso. Isso produzirá resultados corretos para todas as entradas inteiras positivas, embora se alguém quiser usar um longo, ele precisará adicionar um caractere; por exemplo
m=a=0L
. E, é claro ... espere um milhão de anos até o térreo do meu pobre homem terminar.Resultado:
edit: agora usando o algoritmo de Peter Taylor. Isso
do...while
foi divertido.fonte
*(c*c-n)
?Python,
878280É necessário um número inteiro e fornece uma saída como:
fonte
x-int(x) -> x%1
. Estou impressionado :)Mathematica
3331A saída está no formato de lista, o que é mais apropriado para o Mathematica. Exemplos:
fonte
ContinuedFraction@Sqrt@#&
Python (
13613396)O método padrão para frações contínuas, extremamente golfe.
fonte
while 1:
. Você também pode colocar a maioria das instruções no loop while em uma única linha.8 ;1;
para 74 e para 75; isso não parece certo. Ele trava em 76.C, 137
Incluindo a nova linha, supondo que eu não precise rolar minha própria raiz quadrada.
Ele quebra para o sqrt (139) e contém o ponto-e-vírgula extra ocasional na saída, mas estou cansado demais para continuar trabalhando esta noite :)
fonte
Perl, 99 caracteres
Será não estragar em 139, 151, etc Testado com número que varia de 1 a 9 dígitos.
Nota:
$%
,$=
, e$-
são todas as variáveis-forçando inteiros.fonte
APL (NARS), 111 caracteres, 222 bytes
A função f é baseada no algo encontrado na página http://mathworld.wolfram.com/PellEquation.html para resolver a equação de Pell. Essa função f tem sua entrada com número não negativo (tipo fração também). Possível que algo dê errado, lembro que √ tem, na minha opinião, problema para grandes números de fração, como
então haveria uma função sqrti (). Por esse motivo, a entrada da fração (e a entrada inteira) deve ser <10 ^ 15. teste:
se o argumento é um quadrado de um número, ele retornaria uma lista de 1 único elemento, o sqrt desse número
Se dependesse de mim, em um exercício sem "codegolf" eu preferiria a edição anterior que usa a função sqrti () ...
fonte
fq
ea0
. Também:(a×Q)-P
->P-⍨a×Q
Q←Q÷⍨
- os nars suportamQ÷⍨←
?