Triangularity ist ein neuer von Mr. Xcoder entwickelter Esolang, bei dem die Codestruktur einem ganz bestimmten Muster folgen muss:
- In der
n
dritten Codezeile müssen sich genau die2n-1
Zeichen des Programms befinden. Dies führt zu einer Dreiecks- / Pyramidenform, wobei die erste Zeile nur ein Zeichen hat und der Rest in Schritten von 2 zunimmt. - Jede Zeile muss
.
links und rechts mit s aufgefüllt werden , sodass die Zeichen in der Mitte der Zeilen stehen und alle Zeilen auf die gleiche Länge aufgefüllt werden. Wennl
als Anzahl der Zeilen im Programm definiert ist, muss jede Zeile im Programm eine Länge von haben2 * l - 1
Das Programm auf der linken Seite ist beispielsweise gültig, das Programm auf der rechten Seite jedoch nicht:
Valid | Invalid
|
...A... | ABCDE
..BCD.. | FGH
.EFGHI. | IJKLMN
JKLMNOP | OPQRS
In der gültigen Struktur wird der Name deutlich.
Aufgabe
Ihre Aufgabe ist es, eine einzelne Zeichenfolge als Eingabe zu verwenden, die den Triangularitätscode darstellt, und sie wie oben beschrieben in gültigen Code zu konvertieren.
Spezifikationen für E / A:
- Die Eingabe enthält nur Zeichen im Bereich
0x20 - 0x7e
- Die Länge der Eingabe ist immer eine quadratische Zahl und daher gut auffüllbar.
- Sie müssen Punkte als Ausgabeauffüllung verwenden, nicht etwas anderes.
Sie können durch jede akzeptable Methode eingeben und ausgeben . Dies ist ein Code-Golf, also gewinnt der kürzeste Code in Bytes !
Testfälle
input
----
output
g
----
g
PcSa
----
.P.
cSa
DfJ0vCq7G
----
..D..
.fJ0.
vCq7G
7xsB8a1Oqw5fhHX0
----
...7...
..xsB..
.8a1Oq.
w5fhHX0
QNYATbkX2sKZ6IuOmofwhgaef
----
....Q....
...NYA...
..TbkX2..
.sKZ6IuO.
mofwhgaef
ABCDEF"$%& G8"F@
----
...A...
..BCD..
.EF"$%.
& G8"F@
ab.c
----
.a.
b.c
Für diejenigen, die Triangularity kennen, werden Sie im letzten Testfall feststellen, dass Zeichenfolgen nicht behandelt werden müssen
quelle
Antworten:
Dreieckigkeit , 127 Bytes
Probieren Sie es online!
Erläuterung
Wenn wir die Zeichen entfernen, die das Auffüllen ausmachen, erhalten wir das folgende Programm:
... Was ist ziemlich langweilig, oder? Zerlegen wir es in Stücke.
Ganzzahlen generieren [0… √len (Eingabe)]
Punkte generieren
Schneiden Sie die Zeichen an der Vorderseite
Schneiden Sie die Zeichen am Ende
Die Schleife beenden und schön drucken
quelle
J
am Ende abzurufen und eine Reihe von Zeilen auszugeben. Ich weiß jedoch nicht, ob Sie dadurch etwas sparen können, wenn das Ende der letzten Zeile aufgefüllt werden muss.
, um den verbleibenden Platz zu füllen.f
wird benötigt, da range keine float-Argumente akzeptiert (auch mit.0
). 2) Durch das Entfernen von werdenJ
aufgrund der Auffüllung keine Bytes gespeichert. Daher habe ich das schönere Ausgabeformat ausgewählt.Japt ,
151410 BytesGibt ein Array von Zeilen aus.
Versuchen Sie es | Überprüfen Sie alle Testfälle
Erklärung
Ursprüngliche Lösung
Versuch es
quelle
Schale , 15 Bytes
Probieren Sie es online!
Erläuterung
quelle
05AB1E ,
201918 BytesDank Magic Octopus Urn wurde ein Byte gespeichert
Probieren Sie es online!
Erläuterung
quelle
ÅÉ
für Quoten kann helfen?g;ÅÉ£Rvy'.N×.ø}r»
? Aber nicht das, denn das ist nicht richtig, lol.ÅÉ
Würde definitiv helfen, wenn wir die Länge der untersten Zeile in 2 Bytes herausfinden könnten. Ich weiß nicht, ob wir das können. Könnte auch eine andere Art sein, es zu integrieren.)R
anstattr
welche nicht speichern Sie alle Bytes: /Python 2 , 83 Bytes
Probieren Sie es online!
quelle
Jelly ,
2219 BytesEin monadischer Link, der eine Liste von Zeichenlisten (die Zeilen) zurückgibt
Probieren Sie es online!
Wie?
quelle
JavaScript (ES7),
82 bis78 ByteTestfälle
Code-Snippet anzeigen
Kommentiert
quelle
05AB1E , 25 Bytes
Probieren Sie es online!
quelle
MATL , 21 Bytes
Probieren Sie es online!
Erläuterung
Betrachten Sie die Eingabe
'DfJ0vCq7G'
als Beispiel. Der Stapelinhalt wird durch Kommas getrennt angezeigt, wobei das oberste Element das letzte ist. Zeilen in einem 2D-Array verwenden ein Semikolon als Trennzeichen.quelle
Sauber ,
107948988 BytesProbieren Sie es online! Beispiel Nutzung:
@[]1 ['ABCDEF"$%& G8"F@']
.quelle
Haskell ,
8468 BytesProbieren Sie es online!
Anwendungsbeispiel:
[]%1 $ "abcd"
ergibt die Liste der Zeilen[".a.","bcd"]
.quelle
Perl,
5652 BytesEnthält
+3
für-p
Geben Sie auf STDIN eine Eingabe ein (im Prinzip ohne letzte Zeile, aber das ist nur für die leere Eingabe von Bedeutung)
quelle
-p
kostet nur 1 Byte'
. Dieser Code muss jedoch in eine Datei eingefügt werden (oder in der Befehlszeile maskiert werden), die im Vergleich zur normalen#!
Zeile 3 zusätzliche Zeichen benötigt . Also in diesem Fall ist es+3
(für normalen Code , den Sie sehen , ich nur in die Tat zählt+
fürp
)Rot ,
227203 BytesProbieren Sie es online!
Ungolfed:
quelle
Retina ,
887271 BytesProbieren Sie es online! Bearbeiten:
1213 Bytes dank @MartinEnder gespeichert. Erläuterung:Teilen Sie das erste Zeichen in eine eigene Linie, um den Ball ins Rollen zu bringen.
Schneiden Sie jede Zeile zwei Zeichen länger als die vorherige.
Füllen Sie die erste Hälfte jeder Zeile mit der linken Maustaste, um sie effektiv zu zentrieren.
Füllen Sie alle Zeilen mit der rechten Maustaste aus.
quelle
Holzkohle ,
21 bis19 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Bearbeiten: 2 Bytes durch Erkennen gespeichert
SquareRoot
. Erläuterung:quelle
Python 2 , 84 Bytes
Probieren Sie es online!
quelle
Sauber , 123 Bytes
Probieren Sie es online!
quelle
Ruby ,
7366 BytesProbieren Sie es online!
-5 Bytes: Gibt ein Array von Strings zurück, anstatt sie zu drucken
-2 Bytes: Deklarieren
z
an Ort und Stelle anstatt vor der ZeitUngolfed:
Eine Variable deklarieren,
r=q-1
damit ich sie nehmen kanns[r*r...q*q]
spart genau null Bytes.Die
.center
manuelle Verwendung anstelle des Auffüllens spart auch null Bytes, aber ich mag es besser.quelle
Stax , 19 Bytes
Führen Sie es aus und debuggen Sie es
ASCII-Äquivalent:
quelle