O número de Dottie é o ponto fixo da função cosseno ou a solução da equação cos (x) = x . 1
Sua tarefa será criar código que se aproxime dessa constante. Seu código deve representar uma função que recebe um número inteiro como entrada e gera um número real. O limite da sua função à medida que a entrada aumenta deve ser o número Dottie.
Você pode imprimir como uma fração, um decimal ou uma representação algébrica de um número. Sua saída deve ser arbitrariamente precisa, flutuações e duplas não são suficientes para esse desafio. Se seu idioma não for capaz de números de precisão arbitrários, você deverá implementá-los ou escolher um novo idioma.
Esta é uma questão de código-golfe, para que as respostas sejam pontuadas em bytes, com menos bytes sendo melhores.
Dicas
Uma maneira de calcular a constante é pegar qualquer número e aplicar repetidamente o cosseno. Como o número de aplicações tende ao infinito, o resultado tende ao ponto fixo do cosseno.
Aqui está uma aproximação bastante precisa do número.
0.739085133215161
1: Aqui pegaremos cosseno em radianos
fonte
Decimal
?ÆẠȷ¡
percebe que é inválido. Tenta Brachylog; oh não, o Brachylog nem faz carros alegóricos.Respostas:
MATL ,
343019 bytes11 bytes de desconto graças à Sanchises !
Os últimos números decimais na saída podem estar desativados. No entanto, o número de figuras corretas começando da esquerda aumenta com a entrada e o resultado converge para a constante real.
Experimente online!
Explicação
Para a entrada n , e começando em x = 1, isso aplica a função
x ↦ cos ( x )
com n- dígitos de precisão variável aritmética n vezes.
fonte
Python 3 , 58 bytes
Experimente online!
fonte
evalf
em M : oPHP , 50 bytes
Experimente online!
fonte
for($a=$argv[1];$a--;)$j=cos($j);echo$j;
(40 bytes) é suficiente.GNU bc -l, 30
A pontuação inclui +1 para
-l
sinalizar parabc
.A nova linha final é significativa e necessária.
Experimente online .
-l
faz 2 coisas:c()
para cos (x)bc
possui cálculo de precisão arbitrário)Não sou muito claro sobre o requisito de precisão. Como é, este programa calcula até 20 casas decimais. Se uma precisão diferente for necessária, ela
scale=n;
precisará ser inserida no início do programa, onden
é o número de casas decimais. Não sei se devo adicionar isso à minha pontuação ou não.Observe também que, para alguns números de casas decimais (por exemplo, 21, mas não 20), o cálculo oscila em ambos os lados da solução no último dígito. Assim, na comparação das iterações atuais e anteriores, divido os dois lados por 10 (
A
) para apagar o último dígito.fonte
Mathematica, 22 bytes
entrada
resultado
fonte
R (+ Rmpfr), 55 bytes
Dennis agora adicionou Rmpfr ao TIO, para que isso funcione; adicionou alguns casos de teste.
Explicação:
Toma o código que escreveu a partir deste desafio para avaliar
cos
n
vezes a partir de1
, mas primeiro eu especificar a precisão Quero que os valores para a criando um objetob
da classempfr
com o valor1
e precisãon
,n>=2
, então temos mais precisão à medida que avançamos.Experimente online!
fonte
Oitava , 42 bytes
Experimente online!
Praticamente uma duplicata da minha resposta para Número aproximado de plástico , mas um pouco menor devido a requisitos mais relaxados.
fonte
Mathics ou Mathematica, 46 bytes
Experimente online!
fonte
K: 6 bytes
f/
aplicaf
- se até atingir um ponto fixo.fonte
Python - 89 bytes
Usa o módulo decimal.
fonte
Perl 5, 41 bytes
Bignum é necessário para a precisão arbitrária. Define uma função f que aplica recursivamente cosseno a 0 N vezes.
O TIO não parece ter bignum, então não há link :(
fonte
Mathematica 44 Bytes
FindRoot
usa o método de Newton por padrão.fonte
Python 2, 86 bytes
Nova versão usando a dica fornecida.
Python 2, 105 bytes
Usa o método de Newton e a função recursiva para calcular o valor.
x
é o valor inicial en
é o limite de recursão.fonte
Axioma, 174 bytes
ungolfed e comentou
resultados:
Eu usaria o método Newton porque seria mais rápido que o 'método cos (x) repetido'
onde na primeira coluna há o número de dígitos e na segunda coluna há quanto método de Newton é mais rápido do que o método repetido de cos (x), aqui. Bom Dia
fonte