Gegeben eine positive quadratische Zahl als Eingabe. Geben Sie die Anzahl der Werte zwischen der Eingabe und dem nächsthöheren Quadrat aus.
Beispiel
Eingabe: 1
Ausgabe: 2
Grund: Die Zahlen 2 und 3 liegen zwischen 1 und 4, dem nächsthöheren Quadrat
Eingabe: 4
Ausgabe: 4
Grund: Die Zahlen 5, 6, 7, 8 liegen zwischen 4 und 9
Antworten:
Gelee , 2 Bytes
Probieren Sie es online aus!
Port meiner Mathematica-Antwort (Quadratwurzel ziehen, dann verdoppeln). Dies ist auf Eingaben beschränkt, die genau als Gleitkommazahl dargestellt werden können. Wenn dies ein Problem ist,
ƽḤ
funktioniert die Drei-Byte-Lösung für beliebige Quadrate (die Dennis zuerst gepostet, dann aber gelöscht hat).quelle
Brain-Flak ,
38, 22 BytesProbieren Sie es online aus!
Ich bin sehr stolz auf diese Antwort. IMO, einer meiner besten Brain-Flak-Golfplätze.
Wie funktioniert es?
Wie viele andere Benutzer bereits betont haben, lautet die Antwort einfach sqrt (n) * 2 . Die Berechnung der Quadratwurzel in Brain-Flak ist jedoch sehr, sehr nicht trivial. Da wir wissen, dass die Eingabe immer ein Quadrat sein wird, können wir optimieren. Also schreiben wir eine Schleife, die subtrahiert
von der Eingabe und verfolgen Sie, wie oft es ausgeführt wird. Sobald es 0 erreicht, ist die Antwort einfach die letzte Zahl, die wir abgezogen haben, minus eins.
Ursprünglich hatte ich einen Zähler auf den anderen Stapel geschoben. Wir können jedoch den Hauptstapel selbst als Zähler verwenden, indem wir die Stapelhöhe erhöhen.
Im Python-y-Pseudocode ist dies im Grunde der folgende Algorithmus:
quelle
Mathematica, 8 Bytes
Probieren Sie es online aus!(Mit Mathematik.)
Der Unterschied zwischen n 2 und (n + 1) 2 ist immer 2n + 1, aber wir wollen nur die Werte zwischen ihnen ohne beide Enden, was 2n ist .
Dies kann möglicherweise in
2#^.5&
Abhängigkeit von den Genauigkeitsanforderungen verkürzt werden.quelle
Julia 0,5 , 8 Bytes
Probieren Sie es online aus!
quelle
dc, 5
Probieren Sie es online aus .
Zuvor habe ich die Frage falsch verstanden. Diese Version funktioniert für jede positive Ganzzahl-Eingabe, nicht nur für perfekte Quadrate:
dc, 12
Probieren Sie es online aus .
quelle
Gelee ,
76 BytesIch habe die Einschränkung "Eingabe wird quadratisch sein" verpasst, aber dies funktioniert für alle nicht negativen Ganzzahlen ... Martin Ender hat bereits die 2-Byte-Lösung angegeben .
Eine monadische Verbindung, die die Zählung zurückgibt.
Probieren Sie es online aus!
quelle
Japt ,
53 BytesProbieren Sie es online aus!
Quadratwurzel der Eingabe, dann mit 2 multiplizieren.
quelle
Brain-Flak , 20 Bytes
Shout out zu DJMcMayhem ist erstaunlich (albiet etwas länger) Antwort hier
Probieren Sie es online aus!
Erläuterung
Dieser Code zählt in ungeraden Schritten von der quadratischen Zahl herunter. Da jedes Quadrat die Summe aufeinanderfolgender ungerader Zahlen ist, wird dies in n 1/2 Schritten 0 erreichen . Der Trick dabei ist, dass wir unsere Schritte tatsächlich in einer geraden Zahl verfolgen und eine Statik verwenden
()
, um sie auf die entsprechende ungerade Zahl zu versetzen. Da die Antwort 2n 1/2 ist , wird diese gerade Zahl unsere Antwort sein. Wenn wir also 0 erreichen, entfernen wir die Null und unsere Antwort liegt dort auf dem Stapel.quelle
Mathematica, 17 Bytes
Probieren Sie es online aus!
quelle
Oktave ,
2510 BytesProbieren Sie es online aus!
Durch die Verwendung von Martins viel besserem Ansatz wurden 15 Bytes eingespart. Der Bereich besteht aus
2*sqrt(n)
Elementen. Die Funktion macht genau das: Multipliziert2
mit der Wurzel der Eingabe.quelle
Gelee , 7 Bytes
Probieren Sie es online aus!
Erläuterung:
quelle
Python 3 , 16 Bytes
Probieren Sie es online aus!
quelle
Ohm , 2 Bytes
Probieren Sie es online aus!
quelle
JavaScript ES6, 10 Bytes
Probieren Sie es online aus!
Math.sqrt
ist ziemlich lang, weshalb wir verwenden**.5
quelle
TI-Basic, 3 Bytes
Einfachster Ansatz ...
quelle
05AB1E , 2 Bytes
Probieren Sie es online aus!
Ein weiterer Hafen von Martin Enders Einreichung ...
quelle
Add ++ ,
2220 BytesProbieren Sie es online aus!
Möchten Sie wissen, wie es funktioniert? Nun, fürchte dich nicht! Ich bin hier, um dich zu erziehen!
quelle
MATL (
87 Bytes)Ich bin sicher, dass dies erheblich reduziert werden kann (bearbeiten: danke Luis), aber eine naive Lösung ist:
Probieren Sie es online aus!
Erläuterung:
quelle
2^
durchU
(und dies funktionierte in Version 20.1.1 , die zum Zeitpunkt der Herausforderung die neueste war, sodass die Antwort auch nach unserem alten Standard zulässig wäre)Pari / GP , 9 Bytes
Probieren Sie es online aus!
quelle
PHP , 44 Bytes
Probieren Sie es online aus!
quelle
Alice , 10 Bytes
Probieren Sie es online aus!
Erläuterung
Berechnet erneut 2 sqrt (n) . Das Layout spart zwei Bytes gegenüber der Standardlösung:
Aufschlüsselung des Codes ohne Umleitung der IP:
quelle
Los , 56 Bytes
Probieren Sie es online aus!
quelle
QBIC ,
199 BytesDurch Kopieren des Ansatzes von @ MartinEnder wurde ein Haufen gespart.
Leider kein TIO-Link für QBIC.
Erläuterung
quelle
Eigentlich 3 Bytes
Probieren Sie es online aus!
quelle
05AB1E ,
43 BytesDurchgestrichen 4 ist immer noch 4: c
Probieren Sie es online aus!
quelle
Netzhaut , 21 Bytes
Probieren Sie es online aus! Erläuterung: Nimmt die Quadratwurzel der Zahl basierend auf dem dreieckigen Zahlenlöser von @ MartinEnder. Nach dem Abgleichen der Quadratzahl
$1
ist die Differenz zwischen der Quadratnummer und der vorherigen Quadratnummer unär. Wir wollen den nächsten Unterschied, aber exklusiv, der nur noch 1 ist. Um dies zu erreichen, zählen wir die Anzahl der Nullzeichenfolgen in$1
.quelle
T-SQL, 22 Bytes
Die Eingabe erfolgt über eine bereits vorhandene Tabelle gemäß unseren Standards .
quelle
Java (OpenJDK 9) / JShell, 17 Byte
Probieren Sie es online aus!
Hinweis: Dies würde erfordern
import java.util.function.*;
, umIntFunction<T>
in Java 8 oder Java 9 zu erhalten, aber dasjava.util.function
Paket wird standardmäßig in JShell importiert.quelle
Haskell, 9 Bytes
Probieren Sie es online aus
Eingabe und Ausgabe werden als Float-Werte behandelt.
quelle
Noether, 7 Bytes
Probieren Sie es hier aus!
Genau wie bei jeder anderen Antwort: Gibt die doppelte Quadratwurzel aus.
quelle