Um número biquadrático é um número que é a quarta potência de outro número inteiro, por exemplo: 3^4 = 3*3*3*3 = 81
Dado um número inteiro como entrada, imprima o número biquadrático mais próximo.
Aqui estão os primeiros 15 quadrados duplos:
1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000, 14641, 20736, 28561, 38416, 50625
Isso é código-golfe, e o menor número de bytes em cada idioma ganha
Este é o OEIS A000583
code-golf
sequence
number-theory
integer
Skidsdev
fonte
fonte
n^4
en
alterna no sinal.2 x n²
números: 2, 8, 18, 32, 50, 72, 98, ...Respostas:
Python 3 , 35 bytes
Experimente online!
Como funciona
O valor n no qual a saída muda de ( k - 1) 4 para k 4 satisfaz √ (√n - 3/4) + 1/2 = k , ou n = ((k - 1/2) 2 + 3 / 4) 2 = ( k 2 - k + 1) 2 = (( k - 1) 4 + k 4 + 1) / 2, que é exatamente o primeiro número inteiro mais próximo de k 4 .
(Funciona para todos n ≤ 4504699340341245 = (8192 4 + 8193 4 - 7) / 2> 2 52 , após o qual o arredondamento de ponto flutuante começa a quebrá-lo, mesmo que funcione matematicamente para todos os n .)
fonte
round
se mudar para o Python 2, que arredonda todos os 0,5.Oitava , 35 bytes
Esse desafio precisava de uma abordagem baseada em convolução.
Experimente online!
Explicação
A expressão
(1:n).^4
produz o vetor de linha[1 16 81 256 ... n^4]
.Esse vetor é então convolvido
[1 1]/2
, o que equivale a calcular a média deslizante dos blocos de tamanho2
. Isso implica implicitamente que o vetor é preenchido à esquerda e à direita0
. Portanto, o primeiro valor no resultado é0.5
(média de um implícito0
e1
), o segundo é8.5
(média de1
e16
), etc.Como exemplo, para
n = 9
o resultado deconv((1:n).^4,[1 1]/2)
éA comparação
n>...
então gerae aplicar
sum(...)
dá2
. Isso significa quen
excede exatamente2
os pontos médios entre os números biquadráticos (incluindo o ponto médio adicional0.5
). Finalmente,^4
levanta isso4
para produzir o resultado16
,.fonte
Haskell ,
5149 bytesFunção monad ftw!
Experimente online!
Explicação:
fonte
MATL , 6 bytes
Experimente online!
Explicação
Considere a entrada
9
como um exemplo.fonte
Neim , 5 bytes
Explicação:
Experimente online!
fonte
Excel, 25 bytes
O Excel atualiza isso para
=INT((A1^0.5-3/4)^0.5+0.5)^4
fonte
Excel.ActiveSheet
objeto levá-los a partir de célulasA1
Mathematica, 21 bytes
fonte
Braquilog , 9 bytes
Experimente online!
Explicação
fonte
JavaScript (ES7), 42 bytes
Versão recursiva, 44 bytes
Demo
Mostrar snippet de código
fonte
Oitava , 37 bytes
Função anônima que usa interpolação do vizinho mais próximo.
Experimente online!
fonte
conv
:(05AB1E , 6 bytes
Experimente online!
Explicação
fonte
APL, 22 bytes
Experimente online!
Quão?
o←4*⍨⍳⍵
-o
= intervalo (⍵
) 4 [vetorizar]p←|⍵-⍨o
-p
= abs (o
-⍵
) [vetorizar]o/⍨
- pegue oo
elemento no índice em que ...p=⌊/p
- op
elemento mínimo éfonte
Gelatina , 6 bytes
Um link monádico retornando uma lista de um item ou um programa completo que imprime o resultado (usando um método ineficiente).
Experimente online!
Quão?
fonte
PHP , 33 bytes
Experimente online!
PHP , 56 bytes
Experimente online!
fonte
C ++, 96 bytes
Versão completa:
LINK para tentar
fonte
Haskell, 35 bytes
Resposta Python do Port of Anders3 .
fonte
R ,
47443735 bytesExperimente online!
fonte
f=
) e em vez dex[which.min((x-n)^2)]
usowhich.min((x-n)^2)^4
, e depois colocarf=
no cabeçalho da ligação TIO para testar como aqui :)x
nada. Obrigado!n=scan();which.min(((1:n)^4-n)^2)^4
e entrar na seção de rodapé no TIO.Pitão , 9 bytes
Experimente online!
Pitão , 17 bytes
Um programa completo que usa a mesma abordagem aritêmica da resposta do @ AndersKaseorg :
Experimente online!
fonte
Japonês , 20 bytes
Parece demais!
Teste-o
fonte
QBIC , 38 bytes
Explicação
fonte
Java (OpenJDK 8) , 64 bytes
Experimente online!
fonte
Lisp comum, 50 bytes
Experimente online!
fonte
C #, 95 bytes
Usamos 940 como um valor definido, pois qualquer valor maior excederá o valor int.
Versão completa / formatada:
fonte
Ruby ,
2334 bytesNão tenho idéia do porquê de
0.75
um número tão importante para isso, mas ei, o que quer que funcione.Experimente online!
fonte