Das manuelle Summieren der Gesichter eines Cubical Cubes ist langwierig und zeitaufwendig und ähnelt dem Schreiben von Code in Cubical.
In Most efficiency cubifier habe ich Sie gebeten, ASCII in Cubically Source zu übersetzen. Eine der Antworten verwendet eine Cube-Initialisierungssequenz und modifiziert dann den resultierenden Cube basierend auf den Summen des vorinitialisierten Cubes. Diese Methode wurde seitdem in vielen Cubically-bezogenen Programmen verwendet. Beim Testen einer neuen Initialisierungssequenz müssen alle Werte auf allen Teilflächen addiert werden. Dies dauert normalerweise zwei oder drei Minuten.
Ihre Aufgabe ist es, diesen Prozess für uns zu automatisieren!
Sie nehmen zwei Eingaben, eine Ganzzahl n
und eine Zeichenfolge c
. Diese können aus Befehlszeilenargumenten, Funktionsargumenten, Standardeingaben, einer Datei oder einer beliebigen Kombination davon gelesen werden. c
wird ein kubischer Speicherwürfel sein, dessen Größe n
vom Interpreter hübsch gedruckt wird.
Der Cubically-Interpreter legt seinen Cube nach Programmende in STDERR ab und ist für die einfache Anzeige gut formatiert. Führen Sie im Cubically-Interpreter ein leeres Programm aus und öffnen Sie den Debug-Abschnitt, um den Cube-Dump eines initialisierten Cubes anzuzeigen . Fügen Sie ein Argument hinzu 4
, um einen 4x4x4 oder 5
einen 5x5x5 usw. zu sehen.
Wenn n
3 ist, c
wird das folgende Format verwendet (die Ganzzahlen sind variabel):
000
000
000
111222333444
111222333444
111222333444
555
555
555
Leerzeichen, Zeilenumbrüche und alles. Wenn n
4 ist, c
sieht das so aus (auch mit variablen ganzen Zahlen):
0000
0000
0000
0000
1111222233334444
1111222233334444
1111222233334444
1111222233334444
5555
5555
5555
5555
Und so weiter.
Ihr Programm gibt sechs Ganzzahlen aus. Die erste Ganzzahl ist die Summe aller Zahlen auf der Oberseite.
000
000 top face
000
111222333444 left, front, right, and back faces, respectively
111222333444
111222333444
555
555 bottom face
555
Die zweite Ganzzahl ist die Summe der linken Seite, die dritte der Vorderseite, die vierte der rechten, die fünfte der Rückseite und die sechste der Unterseite.
Wenn also n
3 war und c
dies war:
242
202
242
000131555313
010121535343
000131555313
424
454
424
Ihr Programm würde ausgeben 20 1 14 43 24 33
.
Zusätzliche Regeln:
- Die ausgegebenen Ganzzahlen müssen durch nicht ganzzahlige Zeichen begrenzt werden. Sie können auch ein Array zurückgeben.
- Sie können davon ausgehen, dass die Eingabe korrekt ist -
n
eine Ganzzahl undc
ein Würfel aus Cubicals Debugging-Ausgabe . Wenn alson
war3.0
undc
warfoo bar
, könnte Ihr Programm brechen und immer noch gültig sein. - Ihr Programm muss nur für
n > 1
und arbeitenn < 1260
. Es kann (versucht), größere oder kleinere Würfelgrößen zu verarbeiten, ist jedoch nicht erforderlich.
Das ist Code-Golf , also gewinnt der kürzeste Code! Wenn Sie Hilfe benötigen, können Sie im Cubically Chatroom nachfragen .
quelle
n
Leerzeichen nach jeder Zeile meinst , nein. Sie sind nicht im Dump enthalten.Antworten:
Jelly ,
161413 Bytes3 Bytes dank Erik dem Outgolfer.
Probieren Sie es online!
quelle
Z
:ḟ⁶ỴV€€sS€ẎsS€
(oderḟ⁶ỴV€€sS€FsS€
)Python 2 ,
155150147123121120 BytesKönnte wahrscheinlich ziemlich viel Golf spielen
Bearbeiten: -5 Bytes mit einer besseren Methode zum Entfernen der Leerzeichen
Edit: -3 Bytes dank @Leaky Nun
Bearbeiten: -24 Bytes, indem Leerzeichen nicht entfernt werden
Bearbeiten: -2 Bytes durch Ausnutzen der Priorität
Probieren Sie es online!
quelle
05AB1E , 16 Bytes
Probieren Sie es online!
quelle
Schale , 15 Bytes
3
ṁ
s und 2m
sProbieren Sie es online!
Erläuterung
quelle
mṁṁi
ist wirklich schön!Oktave,
645954 BytesProbieren Sie es online!
Vorherige Antwort:
Probieren Sie es online!
Gibt ein Array als Ausgabe zurück.
quelle
Perl 5 , 66 + 1 (-n) = 67 Bytes
Probieren Sie es online!
quelle
Python 2 ,
137127 Bytes-10 Bytes dank @Halvard Hummel
Probieren Sie es online!
quelle
Haskell, 128 Bytes
Akzeptiert eine Zeichenfolge mit Zeilenumbrüchen.
quelle
PowerShell , 236 Byte
Probieren Sie es online!
Dummkopf, das ist lang. Das Aufteilen und Schneiden von Zeichenfolgen ist jedoch keine der Stärken von PowerShell. Also - So. Viele. Dollar.
Übernimmt Parameter
$n
und$z
als Größe bzw. Würfelnetz. Konstruiert dann eine Funktion, die durchgehend verwendet wird. Hier entfernen wir Leerzeichen, teilen die einzelnen Ziffern auf, entfernen die dazwischen liegenden Leerzeichen, fügen alle Zeichen mit einem zusammen+
und führen die resultierende Anweisung aus, um eine Zahl zu erhalten. Zum Beispiel dieser Windungen"123"
in1+2+3
dem , wenn sie ausgeführt werden6
.Die nächste Zeile ist
split
das Eingabewürfelnetz in Zeilenumbrüchen, in dem das Ergebnis in einem Array gespeichert wird$a
. Wir führen dann die Funktion in den ersten$n
Zeilen aus und geben die Oberseite des Würfels aus.Für den nächsten Satz müssen wir die Zeichenfolgen basierend auf der Würfelgröße verbinden. Wir durchlaufen also jede Zeile, konstruieren sie
$x
als das entsprechende Regex-Muster (z. B. für die Größe, die$n=3
dies sein wird"(...)"
), teilen die Zeichenfolge basierend auf diesem Muster auf, entfernen wieder leere Elemente und speichern diese in vier Variablen, die die vier Flächen darstellen. Diese werden dannh
durchgehend verkettetk
.Die nächste Zeile
h
durchläuftk
dann die Funktion, um die Seiten (links, vorne, rechts, hinten) des Würfels auszugeben.Schließlich führen wir die letzten
$n
Zeilen durch die Funktion, um die Unterseite des Würfels auszugeben.Alle Zahlen verbleiben in der Pipeline, und die Ausgabe ist implizit.
quelle
APL (Dyalog Classic) ,
3027 Bytes3 Bytes gespart dank @ Adám
⍺
ist n⍵
ist cErläuterung
Probieren Sie es online!
quelle
⊆
durch⎕U2286
werden jedoch nur 5 Bytes hinzugefügt.3
und entfernen⍺
.(6,⍺*2)
→6(⍺*2)
,
nach⍴
wie vor nicht⍴
das richtige Argument in Ravel-Reihenfolge zu verwenden.Kubisch 19 Bytes
Nimmt den Cube von STDIN und die Größe als Befehlszeilenargument für den Interpreter. Gibt die Summe aus der Oberseite, einem Null-Byte, der linken Seite, einem Null-Byte, der Unterseite und einem Null-Byte aus.
Probieren Sie es online! ... der anscheinend null Bytes als eine Art Leerzeichen in meinem Browser anzeigt.
Diese Sprache wurde nicht für diese Herausforderung gemacht, aber die Herausforderung wurde für die Sprache gemacht ... ist es immer noch Betrug? ;)
quelle