Am vergangenen Donnerstag Benutzer @SpookyGengar erfreut uns mit seiner / ihrem ersten Herausforderung über Squared Worte zu machen . Was ist, wenn wir die Anzahl der Seiten verdoppeln?
Die Herausforderung
Nehmen Sie einen String als Eingabe in einem beliebigen geeigneten Format ( string
, char
Array ...) und geben Sie eine oktogonale Darstellung der Eingabe aus (auch in einem beliebigen geeigneten Format:, string
Liste von string
s, char
Matrix ...), wie in den folgenden Beispielen:
Input: golf
Output:
golf
o l
l o
f g
l o
o l
g f
o l
l o
flog
Input: HelloWorld
Output:
HelloWorld
e l
l r
l o
o W
W o
o l
r l
l e
d H
l e
r l
o l
W o
o W
l o
l r
e l
H d
e l
l r
l o
o W
W o
o l
r l
l e
dlroWolleH
Input: a
Output:
a
Input: ab
Output:
ab
b a
a b
ba
Input: code golf
Output:
code golf
o l
d o
e g
g e
o d
l o
f c
l o
o d
g e
e g
d o
o l
c f
o l
d o
e g
g e
o d
l o
flog edoc
Anmerkungen
- Die Eingabe besteht nur aus druckbaren ASCII-Zeichen.
- Führende und / oder nachfolgende Leerzeichen und Zeilenumbrüche sind zulässig, solange die achteckige Form erhalten bleibt.
- Das ist Code-Golf , also kann das sorteste Programm / die sorteste Funktion für jede Sprache gewinnen!
code golf
<Space>
als druckbar?Antworten:
Kohle , 16 Bytes (10 Bytes nicht konkurrierend)
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Alternative Länge 1 fix, auch 16 Bytes: Ausführliche Version.
Ein Charcoal-Bugfix bedeutet, dass der folgende 10-Byte-Code jetzt funktioniert: Ausführliche Version.
quelle
⟲
Es scheint so, als sollte es genau das tun. Lolcode golf
funktioniert, oder?θθθ
durchθθ»θ
).code golf
? Ich denke, das hat damit zu tun, wie Charcoal Inputs aufnimmt, was es leider völlig von dieser Herausforderung ausschließt, da dies nicht umgangen werden kann.JavaScript (ES6), 156 Byte
Gibt ein Zeichenarray zurück.
quelle
?:
!Mathematica, 247 Bytes
quelle
Alignment
und Sie würden Bytes sparen, indem Sie delayedset (:=
) verwenden, um die Wiederholung vons[[i]]
und zu reduzieren.s[[-i]]
Mit diesen Ideen erreichen Sie 224 Bytes: (T = Tabelle; q: = s [[i]]; = s [[- i]]; k = Länge [s = Zeichen @ #]; Wenn [k == 1, #, Spalte [Abflachen @ {#, T ["" <> {q, T ["", k / 2-2 + i], r}, {i, 2, k}], T ["" <> {r, T ["", k + k / 2-2], q}, {i, 2, k}], T ["" <> {q, T ["", 3k / 2-1-i], r}, {i, 2, k-1}], StringReverse @ #}, Center] ]) & Außerdem habe ich eine alternative Lösung , die zum Zeitpunkt dieses Kommentars nur 145 Byte beträgt.Pyth ,
796965 BytesTestsuite .
quelle
Japt ,
8479 Bytes-5 Bytes dank @ETHproductions.
Führende Newline ist Teil des Programms. Nimmt eine Zeichenfolge als Eingabe und gibt ein Array von Zeichenfolgen zurück.
Probieren Sie es online! mit dem
-R
Flag, um das resultierende Array mit Zeilenumbrüchen zu verbinden.Nicht meine stolzeste Arbeit, aber ich habe es zumindest von ~ 100 Bytes geschafft. Meine Idee hier war es, den oberen und mittleren Teil zu erstellen und dann den oberen Teil um 180 ° gedreht anzuhängen.
quelle
Ul É
zuUÅl
und Schalter V und W 2 weitere Bytes zu speichern: codepen.io/justinm53/full/...AnV ?
->V-A?
undUq £
->U£
¬
.Python 2 ,
220213 BytesProbieren Sie es online!
quelle
PHP 7.1,
230 156155 BytesLauf als Pipe mit
-nR
oder versuche es online .Nervenzusammenbruch
quelle
Mathematica,
168166147127 BytesDies nimmt eine Liste von Zeichenfolgen mit einem Zeichen und gibt eine Matrix von Zeichenfolgen mit einem Zeichen aus.
Ich habe 18 Bytes gespart, indem ich die Symmetrie ausgenutzt habe, um sie zu verwenden,
-l
undCross/@l
die so etwas wie ein Kreuzprodukt von jedem der zwei einzelnen 2D-Vektoren benötigt, um{x,y}
zu nehmen{-y,x}
. Grundsätzlich sind die beiden Anfangsrichtungen Ost (oberer Rand) und Südwest (oberer rechter Rand). Dann addieren wir sie um 90 Grad gegen den Uhrzeigersinn mitCross
: Norden für den linken Rand und Südosten für den unteren linken Rand. Dann fügen wir die anderen vier Stücke hinzu, indem-l
wir die vier, die wir abgedeckt haben, umdrehen.Sie können es auf der Sandbox mit etwas testen :
quelle