Eine biquadratische Zahl ist eine Zahl, die die vierte Potenz einer anderen Ganzzahl ist, zum Beispiel: 3^4 = 3*3*3*3 = 81
Geben Sie bei einer Ganzzahl als Eingabe die nächstliegende biquadratische Zahl aus.
Hier sind die ersten 15 Doppelquadrate:
1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000, 14641, 20736, 28561, 38416, 50625
Dies ist Code-Golf, so dass die wenigsten Bytes in jeder Sprache gewinnen
Dies ist OEIS A000583
code-golf
sequence
number-theory
integer
Skidsdev
quelle
quelle
n^4
undn
wechselt im Vorzeichen.2 x n²
Antworten:
Python 3 , 35 Bytes
Probieren Sie es online!
Wie es funktioniert
Der Wert n, bei dem der Ausgang von ( k - 1) 4 auf k 4 umschaltet, erfüllt √ (√n - 3/4) + 1/2 = k oder n = ((k - 1/2) 2 + 3 / 4) 2 = ( k 2 - k + 1) 2 = (( k - 1) 4 + k 4 + 1) / 2, was genau die erste ganze Zahl ist, die näher an k 4 ist .
(Funktioniert für alle n ≤ 4504699340341245 = (8192 4 + 8193 4 - 7) / 2> 2 52 , wonach die Gleitkommarundung beginnt, sie aufzubrechen, obwohl sie für alle n mathematisch funktioniert .)
quelle
round
wenn Sie zu Python 2 wechseln, wodurch alle .5-Werte aufgerundet werden.Oktave , 35 Bytes
Diese Herausforderung erforderte einen faltungsbasierten Ansatz.
Probieren Sie es online!
Erläuterung
Der Ausdruck
(1:n).^4
erzeugt den Zeilenvektor[1 16 81 256 ... n^4]
.Dieser Vektor wird dann mit gefaltet
[1 1]/2
, was der Berechnung des gleitenden Durchschnitts der Größenblöcke entspricht2
. Dies setzt implizit voraus, dass der Vektor mit links und rechts aufgefüllt ist0
. Der erste Wert im Ergebnis ist also0.5
(Durchschnitt eines impliziten0
und1
), der zweite ist8.5
(Durchschnitt von1
und16
) usw.Als Beispiel für
n = 9
das Ergebnis vonconv((1:n).^4,[1 1]/2)
istDer Vergleich
n>...
ergibt dannund bewerben
sum(...)
gibt2
. Dies bedeutet, dassn
genau2
der Mittelpunkt zwischen zwei Zahlen (einschließlich des zusätzlichen Mittelpunkts0.5
) überschritten wird . Schließlich wird dies^4
erhöht4
, um das Ergebnis zu erhalten16
.quelle
Haskell ,
5149 BytesFunktion monad ftw!
Probieren Sie es online!
Erläuterung:
quelle
MATL , 6 Bytes
Probieren Sie es online!
Erläuterung
Betrachten Sie die Eingabe
9
als Beispiel.quelle
Neim , 5 Bytes
Erläuterung:
Probieren Sie es online!
quelle
Excel, 25 Bytes
Excel aktualisiert dies auf
=INT((A1^0.5-3/4)^0.5+0.5)^4
quelle
Excel.ActiveSheet
Objekt entgegennehmen, diese aus der Zelle übernehmenA1
Mathematica, 21 Bytes
quelle
Brachylog , 9 Bytes
Probieren Sie es online!
Erläuterung
quelle
JavaScript (ES7), 42 Byte
Rekursive Version, 44 Bytes
Demo
Code-Snippet anzeigen
quelle
Oktave , 37 Bytes
Anonyme Funktion, die die Nächste-Nachbarn-Interpolation verwendet.
Probieren Sie es online!
quelle
conv
:(05AB1E , 6 Bytes
Probieren Sie es online!
Erläuterung
quelle
APL, 22 Bytes
Probieren Sie es online!
Wie?
o←4*⍨⍳⍵
-o
= range (⍵
) 4 [vektorisieren]p←|⍵-⍨o
-p
= abs (o
-⍵
) [vektorisieren]o/⍨
- nehmen Sie dieo
Element am Index, wo ...p=⌊/p
- Dasp
minimale Element istquelle
Gelee , 6 Bytes
Ein monadischer Link, der eine Liste mit einem Element zurückgibt, oder ein vollständiges Programm, das das Ergebnis druckt (unter Verwendung einer ineffizienten Methode).
Probieren Sie es online!
Wie?
quelle
PHP , 33 Bytes
Probieren Sie es online!
PHP , 56 Bytes
Probieren Sie es online!
quelle
C ++, 96 Bytes
Vollversion:
LINK zum Ausprobieren
quelle
Haskell, 35 Bytes
Port of Anders 'Python3 Antwort .
quelle
R ,
47443735 BytesProbieren Sie es online!
quelle
f=
) und anstatt sie zux[which.min((x-n)^2)]
verwendenwhich.min((x-n)^2)^4
, und sie dann wie hierf=
in den Header des TIO-Links zum Testen einfügen :)x
. Vielen Dank!n=scan();which.min(((1:n)^4-n)^2)^4
und die Eingabe geht in den Fußzeilenabschnitt von TIO.Pyth , 9 Bytes
Probieren Sie es online!
Pyth , 17 Bytes
Ein vollständiges Programm, das denselben arithmetischen Ansatz wie in @ AndersKaseorgs Antwort verwendet :
Probieren Sie es online!
quelle
Japt , 20 Bytes
Das fühlt sich viel zu lang an!
Probier es aus
quelle
QBIC , 38 Bytes
Erläuterung
quelle
Java (OpenJDK 8) , 64 Byte
Probieren Sie es online!
quelle
Common Lisp, 50 Bytes
Probieren Sie es online!
quelle
95 Bytes
Wir verwenden 940 als Einstellwert, da jeder größere Wert den int überläuft.
Voll / Formatierte Version:
quelle
Ruby ,
2334 BytesIch habe keine Ahnung, warum dies
0.75
eine so wichtige Zahl ist, aber hey, was auch immer funktioniert.Probieren Sie es online!
quelle