Einführung:
Ich bin ein Puzzlesammler. Hier sehen Sie meine aktuelle Sammlung von ± 300 Puzzles.
Ich denke, jeder kennt den normalen Rubik's Cube (3x3x3 Cube), der ein NxNxN Cube ist. Es gibt auch Cuboids (blockförmige Puzzles), die in verschiedenen Formen vorliegen , vielleicht besser erklärt von SuperAntionioVivaldi hier :
- Normale Domino Cuboids (wie 2x2x3 ; 2x3x3 ; 3x3x4 ; usw.) - Sie kommen in Form von NxNx (N + O) oder Nx (N + O) x (N + O) , die entweder zwei ungerade Dimensionen und eine haben gerade oder zwei gerade und eine ungerade.
- Shapeshifter Cuboids (wie die 2x2x4 ; 3x3x5; 3x3x9 ; 4x4x6 ; etc.) - Sie kommen in Form von NxNx (N + P) , was, wie der Name schon sagt, Shapeshifts (in alle Richtungen) bedeutet. Alle drei Dimensionen sind entweder ungerade oder gerade.
- Floppy Cuboids (wie die 1x3x3 ; 2x4x4 ; etc.) - Sie kommen in Form von Nx (N + P) x (N + P) vor , die fast die gleichen sind wie die Shapeshifters, jedoch mit sogenannten Floppy Parities.
- Brick Cuboids (wie die 2x3x4 ; 3x4x5 ; 2x3x5; etc.) - Sie kommen in Form von Nx (N + O) x (N + P), die genau wie die Regular Domino Cuboids entweder zwei ungerade Dimensionen und eine gerade haben, oder zwei gerade und eine ungerade; aber haben Sie keine der gleichen Dimensionen.
- Ultimate Shapeshifters (wie die 2x4x6 ; 3x5x7; 2x4x10; etc.) - Sie kommen in Form von Nx (N + O) x (N + R) und Shapeshift in jede Richtung. Alle drei Dimensionen sind entweder ungerade oder gerade; aber haben Sie keine der gleichen Dimensionen.
Herausforderung:
Eingang:
Eine positive ganze Zahl n mit der folgenden Einschränkung: 8 <= n <= 125.
n kann eindeutig als Produkt von drei Werten (den Dimensionen) dekodiert werden, von denen jeder zwischen 2 und 5 einschließlich liegt.
Ich habe es auf 2-5 beschränkt, um doppelte Eingaben (wie 1x2x4 = 8
und 2x2x2 = 8
) zu verhindern , obwohl es viele Cuboids niedriger / höherer Ordnung gibt. Dies bedeutet auch, dass es für Ultimate Shapeshifters keine Testfälle gibt.
Ausgabe / Testfälle:
Dies sind alle Fälle, die Ihr Programm / Ihre Funktion unterstützen sollte. Sie reichen von Kantenlängen 2 bis 5 in jeder möglichen dreidimensionalen Konfiguration:
Input Cuboid/Cube Type/Output
8 2x2x2 Cube
12 2x2x3 Regular Domino Cuboid
16 2x2x4 Shapeshifter Cuboid
20 2x2x5 Regular Domino Cuboid
18 2x3x3 Regular Domino Cuboid
24 2x3x4 Brick Cuboid
30 2x3x5 Brick Cuboid
32 2x4x4 Floppy Cuboid
40 2x4x5 Brick Cuboid
50 2x5x5 Regular Domino Cuboid
27 3x3x3 Cube
36 3x3x4 Regular Domino Cuboid
45 3x3x5 Shapeshifter Cuboid
48 3x4x4 Regular Domino Cuboid
60 3x4x5 Brick Cuboid
75 3x5x5 Floppy Cuboid
64 4x4x4 Cube
80 4x4x5 Regular Domino Cuboid
100 4x5x5 Regular Domino Cuboid
125 5x5x5 Cube
Herausforderungsregeln:
- Alle nicht-würfelförmigen / nicht-würfelförmigen Eingaben im Bereich von 8 bis 125 sollten als Ausgabe "keine" ergeben.
- Das Ausgabeformat ist Ihre eigene Wahl. Ich denke, das vernünftigste sind ganze Zahlen wie
0
= 'none';1
= Würfel;2
= Regular Domino Cuboid;3
= Formwandlerquader;4
= Floppy Cuboid;5
= Ziegelquader. Jedes andere Ausgabeformat ist ebenfalls in Ordnung, solange Sie angeben, welches Sie verwendet haben.
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methode mit den richtigen Parametern und vollständige Programme verwenden. Ihr Anruf.
- Standardlücken sind verboten. ( HINWEIS: Da ich nicht weiß, ob es eine intelligente Formel für die Eingabe-Ausgabe-Konvertierung gibt, ist es zulässig, die Antworten basierend auf der Eingabe fest zu codieren. )
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu.
- Fügen Sie ggf. auch eine Erklärung hinzu.
quelle
24
), ich weiß also nicht, was Sie darüber sortieren möchten?Antworten:
05AB1E ,
2621 BytesNone: 0 Cube: 1 Regular Domino Cuboid: 2 Shapeshifter Cuboid: 3 Brick Cuboid: 4 Floppy Cuboid: 5
Probieren Sie es online! oder als Testsuite
Erläuterung
Der einzige Ort, an dem wir hier Bytes sparen können, ist die bessere Möglichkeit, die Nummer 123224454212324512210 zu generieren .
Es ist nur eine Abweichung von einer Primzahl, daher besteht eine mögliche Einsparung darin, den Index dieser Primzahl zu finden und den Index in weniger als 9 Bytes zu generieren.
Ich weiß nicht, wie gut die Pi-Funktion für 21-stellige Primzahlen funktioniert, aber das könnte eine Möglichkeit sein.
quelle
k
schon? !! ??!?!?!?!JavaScript (ES6),
979286 BytesDiese Funktion überprüft zuerst die Gültigkeit der Eingabe und wählt dann den richtigen Wert aus einer Nachschlagetabelle aus.
Überraschenderweise ist der längste Teil die Gültigkeitsprüfung (ist n in der Form x * y * z mit x , y und z in [2,3,4,5] ?). Es muss einen kürzeren Weg geben, aber ich konnte es bisher nicht herausfinden.
Gibt ein Zeichen zurück:
Prüfung
Code-Snippet anzeigen
quelle
Ruby,
106 9896 BytesDenn warum nicht, hardcoding.
Wie angegeben ist 0 = 'none'; 1 = Würfel; 2 = normaler Domino-Quader; 3 = Formwandlerquader; 4 = Floppy Cuboid; 5 = Ziegelquader
quelle
Perl 6 ,
6958 BytesVerwendet das in der Aufgabenbeschreibung vorgeschlagene ganzzahlige Ausgabeformat, außer dass der nicht initialisierte Wert zurückgegeben wird,
(Any)
anstatt0
bei Eingaben, die keinen gültigen Würfel / Quader bilden.Wie es funktioniert
Erzeugt die Liste
8 12 16 20 18 24 30 32 40 50 27 36 45 48 60 75 64 80 100 125
.Erzeugt die Liste
1 2 3 2 2 5 5 4 5 2 1 2 3 2 5 4 1 2 2 1
(aus einem Basis-32-Literal).Erzeugt ein Hash (Assoziative Map) mit der ersten Liste als Schlüssel und der zweiten Liste als Werten.
Indiziert den Hash mit der eingegebenen Nummer.
quelle
Batch, 163 Bytes
Verwendet das vorgeschlagene Ausgabeformat. Erläuterung: Die Grundidee besteht darin, die Liste der in der Frage definierten Cubes zu durchlaufen. Wir berechnen für jeden Würfel, ob sein Volumen die Eingabe-Ganzzahl ist, und berechnen in diesem Fall den Würfeltyp aus einer Nachschlagetabelle.
Die ursprüngliche Nachschlagetabelle bestand aus einer Folge von Buchstaben, aber die Manipulation von Zeichenfolgen in einer
for
Schleife ist schwierig. Deshalb habe ich auf Ziffern umgestellt, die sich arithmetisch extrahieren lassen. Leider ist Batch auf 32-Bit-Ganzzahlen beschränkt, sodass ich nicht alle Ziffern in eine einzelne Variable einpassen konnte (selbst in Basis 5 können Sie nur 13 Ziffern erhalten). Stattdessen teile ich die Variable in zwei Teile auf, die in Basis 6 codiert sind zur Bequemlichkeit.29948521
befindet sich2545522321
in der Basis 6, die die 10 kleinsten Quader in umgekehrter Reihenfolge codiert; Wenn es keine Ziffern mehr gibt, addieren wir14081593
diese1221452321
in Basis 6, die die 10 größten Quader codiert.quelle