Aufgabe
Ihre Aufgabe ist es, eine Struktur mit Würfeln zu bauen . Das Volumen der Würfel folgt der folgenden Reihenfolge (unten -> oben)
Eingang
Das Gesamtvolumen der Struktur ( ).
Ausgabe
Wert von ( ), dh: Die Gesamtzahl der Würfel.
Anmerkungen
- Die Eingabe wird immer eine Ganzzahl sein.
- Manchmal ist es nicht möglich, die Reihenfolge einzuhalten, dh: steht nicht für einen bestimmten Wert für . In diesem Fall geben Sie -1 oder einen falschen Wert Ihrer Wahl zurück (es ist jedoch Konsistenz erforderlich).n
- Dies ist Code-Golf, so dass die kürzeste Antwort in Bytes für jede Sprache gewinnt.
- Aus dem oben genannten Grund wird keine Antwort als angenommen markiert.
Anfragen
- Dies ist meine erste Herausforderung auf der Website. Nehmen Sie sie mit und verzeihen Sie mir alle Fehler, die ich gemacht habe.
- Bitte geben Sie einen Link an, damit Ihr Code getestet werden kann.
- Wenn Sie können, schreiben Sie bitte eine Erklärung, wie Ihr Code funktioniert, damit andere Ihre Arbeit verstehen und wertschätzen können.
Beispiele
input : 4183059834009
output : 2022
input : 2391239120391902
output : -1
input : 40539911473216
output : 3568
Vielen Dank an @Arnauld für den Link dazu:
Ist das nicht schön?
Link zum Original: Link
4183059834009
Output ergibt2022
?Antworten:
JavaScript (ES7), 31 Byte
Eine direkte Formel. Gibt zurück,
0
wenn es keine Lösung gibt.Probieren Sie es online!
Wie?
Wessen positive Lösung ist gegeben durch:
Kommentiert
Rekursive Version,
3635 BytesGibt zurück,
NaN
wenn es keine Lösung gibt.Probieren Sie es online!
Kommentiert
quelle
05AB1E , 6 Bytes
Probieren Sie es online!
Port of Jonathans Gelee Antwort. Nehmen Sie die kumulative Summe von [0 ... n] , quadratisch jeder und finden Sie den Index von V .
05AB1E , 7 Bytes
Probieren Sie es online!
Wie es funktioniert
8-Byte - Alternative:
ÝÝÅΔ3mOQ
.quelle
3mO
undnO
... Erwähne wahrscheinlich auch -1 ist der falsche Wert.R ,
42 -40 Bytes-2 Bytes dank Giuseppe
Probieren Sie es online!
Port of Arnauld's JavaScript Antwort . Gibt auch 0 zurück, wenn es keine Lösung gibt.
quelle
Gelee ,
54 BytesEine monadische Verbindung ergibt sich,
0
wenn nicht möglich.Probieren Sie es online! viel zu ineffizient für die Testfälle! (O (V) Raum: p)
Hier ist eine 8-Byte-Version, die zuerst eine Kubikwurzel von V ausführt, um es stattdessen zu O (V ^ (1/3)) zu machen. In dieser 8-Byte-Version handelt es sich um eine Testsuite
Wie?
quelle
36
IJi
benimmt sich wie²⁼
(Ị
mit anderen Worten).Elixier , 53 Bytes
Probieren Sie es online!
Port of Jonathans Gelee Antwort.
Elixier , 74 Bytes
Probieren Sie es online!
Auf jeden Fall suboptimal. Aber ich bin nur ein Elixier-Neuling! :) Gibt
nil
für "ungültige" Werte von zurückV
.quelle
Japt, 7 Bytes
Versuch es
Erläuterung
Alternative
Versuch es
quelle
Cubix , 27 Bytes (oder Volume 27?)
Scheint der richtige Ort für diese Sprache zu sein.
Probieren Sie es online!
Dies wird wie folgt auf einen 3x3x3-Würfel gewickelt
Schau es dir an
Es ist eine wesentliche rohe Kraft, indem es dem Eingang immer mehr Würfel wegnimmt. Wenn es zu Null kommt, wird es ausgegeben,
n
andernfalls, wenn es ein negatives Ergebnis gibt, wird 0 gedruckt und der Vorgang beendet.quelle
Perl 6 ,
302926 Bytes-4 Bytes dank Jo King
Probieren Sie es online!
Brute-Force-Lösung für n <10000. Verwendet die Gleichung aus Jonathan Allans Antwort.
3736 Byte Lösung für größeres n ( -1 Byte dank Jo King ):Probieren Sie es online!
Gibt zurück,
False
wenn es keine Lösung gibt.Erläuterung
quelle
0..$_
, um für alle Zahlen gültig zu sein, auch wenn es bei größeren Zahlen zu einer Zeitüberschreitung kommt. Für den normalen Golf, können Sie das Entfernen.
von der ersten und der zweiten Wechsel von0>=*
zu1>*
JavaScript (Node.js) , 28 Byte
Probieren Sie es online!
Ich weiß, es ist meine eigene Frage und alles, aber ich hatte eine bessere Antwort (für diese Sprache) als vorhanden, also habe ich gepostet. Hoffe es ist ok
quelle
APL (Dyalog) , 18 Bytes
Probieren Sie es online!
quelle
Matlab, 27 Bytes
Gibt das
n
If-Vorhandensein oder eine leere Matrix zurück, wenn nicht.Wie es funktioniert
Probieren Sie es online!
Hinweis: Es schlägt
v
aufgrund von Speicherbeschränkungen für große fehl .quelle
Python 3 , 60 Bytes
Probieren Sie es online!
-6 danke an Mr. Xcoder .
Probieren Sie es online!
quelle
Perl 6 , 33 Bytes
Probieren Sie es online!
Dies verwendet die Methode von Arnauld . Gibt ein leeres Objekt zurück, wenn die Nummer ungültig ist.
quelle
Gleichstrom , 19 Bytes
Die Eingabe und Ausgabe erfolgt vom Stapel und gibt 0 zurück, wenn keine Lösung vorliegt.
Probieren Sie es online!
Erläuterung
Wenn es eine Lösung gibt, ist die Eingabe
((n^2+n)^2)/4
. Aus diesem Grund berechnen wir eine Probelösungn=sqrt(sqrt(4*input))
mit der Standardgenauigkeit von 0 Dezimalstellen für Quadratwurzeln von dc und vergleichen(n^2+n)^2
sie dann mit ,4*input
um festzustellen, ob es sich tatsächlich um eine Lösung handelt.Die vorletzte Zeile beruht auf der nicht offensichtlichen Tatsache, dass zu dc,
0^x=0
für alle ungleich Nullx
(auch negativx
!) Aber0^0=1
.quelle
Python 3 ,
5348 BytesProbieren Sie es online!
-3 Bytes von Jo King
Kehrt
-1
ohne Antwort zurück.Funktioniert nur bis zu
n=997
mit den Standard-Rekursionsgrenzen.Nimmt wiederholt größere und größere Würfel vom Volume, bis sie null (Erfolg, Anzahl entfernter Würfel zurückgeben) oder eine negative Zahl (keine Antwort) ergeben.
Erläuterung:
quelle
and/or
oder Listen sind in der Regel kürzer alsif/else
. 50 Bytesnot V
=>V==0
oderV>-1
gvm (Commit 2612106 ) Bytecode,
7059 Bytes(-11 Bytes durch Multiplikation in einer Schleife, anstatt den Code für die doppelte Multiplikation zu schreiben)
Hexdump:
Testläufe:
Keine wirklich niedrige Punktzahl, nur diese nette Frage zum Testen verwenden
gvm
;) Das Commit ist natürlich älter als die Frage. Beachten Sie, dass dies eine virtuelle 8-Bit-Maschine ist. Wenn Sie also einen Code verwenden, der nur den natürlichen vorzeichenlosen Zahlenbereich behandelt0-255
, funktionieren die in der Frage angegebenen Testfälle nicht.Manuell zusammengestellt daraus:
edit : Ich habe einen Fehler behoben in
gvm
; Ohne dieses Update wurdegvm
versucht, Binärprogramme im Textmodus zu lesen , die möglicherweise0xd
fehlerhaft sind.quelle
K (oK) , 21 Bytes
Probieren Sie es online!
Port of Arnauld's JS Antwort .
Wie:
Die Funktion gibt
(_r%2)
iff zurück1!r == 0
, andernfalls null (0N
). Dies liegt daran, dass das einzelne Element in der Liste den Index 0 hat. Wenn Sie versuchen, diese Liste mit einer anderen Zahl als 0 zu indizieren, wird null zurückgegeben.quelle