(Inspiriert von dieser Herausforderung )
Ordnen Sie die Zeichenfolgen bei zwei Eingabezeichenfolgen, von denen eine genau ein Zeichen länger als die andere ist, in ASCII-Zeichenfolgen so an, als handele es sich um zwei Hälften eines Reißverschlusses, der nur zur Hälfte mit einem Reißverschluss versehen ist. Das längere Wort bildet den unteren Rand des Reißverschlusses und ist das erste und letzte Zeichen des kombinierten Teils mit Reißverschluss. Da dieser Absatz schwer zu verstehen ist, sehen Sie sich einige Beispiele an:
zippered
paragraph
z
i
p
p
gerraepdh
a
r
a
p
Beachten Sie, wie paragraph
(das längere Wort) den unteren Reißverschluss bildet und der g r a p h
Teil den e r e d
Teil von einschließt zippered
und die Teile z i p p
und p a r a
voneinander versetzt sind.
Eingang
- Zwei ASCII-Zeichenfolgen in einem beliebigen Format , wobei die eine garantiert gerade und die andere genau ein Zeichen länger ist.
- Keine der Zeichenfolgen enthält Leerzeichen, kann jedoch einen anderen druckbaren ASCII-Wert enthalten.
- Sie können die Eingabe in beliebiger Reihenfolge vornehmen. Bitte geben Sie bei Ihrer Einsendung die Eingabereihenfolge an.
Ausgabe
Die resultierende ASCII-Grafikdarstellung der Wörter mit Reißverschluss, wie oben beschrieben, wiederum in einem beliebigen geeigneten Format.
Regeln
- Führende oder nachfolgende Zeilenumbrüche oder Leerzeichen sind optional, sofern die Zeichen selbst korrekt ausgerichtet sind.
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig. Bei einer Funktion können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Fügen Sie nach Möglichkeit einen Link zu einer Online-Testumgebung hinzu, damit andere Benutzer Ihren Code ausprobieren können!
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
Beispiele
ppcg
tests
p
p
sctgs
e
t
string
strings
s
t
r
iinnggs
r
t
s
one guaranteed to be even in length and the other exactly one character longer.
Die kürzere Saite ist immer geradeAntworten:
Japt ,
3128 BytesOnline testen! Nimmt zuerst die kürzere Saite.
Erläuterung
quelle
Kohle ,
3331 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Nimmt zuerst die kürzere Saite. Bearbeiten: 2 Bytes durch Ändern der Mittelpunkterkennung gespeichert. Erläuterung:
Schleife nacheinander über jede Saite.
Durchlaufen Sie nacheinander die einzelnen Zeichen der Zeichenfolge.
Drucken Sie das Zeichen und bewegen Sie ein zusätzliches Quadrat nach rechts.
Bewegen Sie für die erste Hälfte der Zeichenfolge den Cursor entsprechend nach unten oder oben.
Wechseln Sie nach dem Drucken der ersten Zeichenfolge zum Startpunkt der zweiten Zeichenfolge und ersetzen Sie die erste Zeichenfolge durch die zweite, damit sie für die zweite Schleife gedruckt wird. (Der Code wird in beiden Schleifen ausgeführt, aber das zweite Mal ist es ein No-Op.)
quelle
Pyth , 35 Bytes
Probieren Sie es online!
quelle
Jelly ,
2726 Bytes-1 Byte dank Erik the Outgolfer (benutze repeat,,
¡
um if?
, und eine übergebene else-Klausel zu ersetzen¹
)Ein vollständiges Programm, das das Ergebnis wie in der Frage angegeben mit führenden Leerzeichen ausgibt (oder ein dyadischer Link, der eine Liste von Zeichen zurückgibt).
Probieren Sie es online!
Wie?
quelle
C¹Ḃ?
->CḂ¡
Python 2 ,
128119 BytesProbieren Sie es online!
quelle
V ,
473830272625 BytesSchließe die aktuelle Gelee-Antwort ab \ o /
Nimmt Eingaben mit dem längeren Wort oben auf
Erklärung kommt, glaube nicht, dass Golf mehr zu bieten hat.
Probieren Sie es online!
Erläuterung
quelle
V , 79 Bytes
Probieren Sie es online!
Das Folgende sollte mit viel Sarkasmus und Anführungszeichen gelesen werden .
Warum tue ich mir das immer wieder an?
Hexdump:
quelle
Gelee , 28 Bytes
Probieren Sie es online!
Woo Jelly konkurriert tatsächlich in einer String- und Ascii-Art- Herausforderung! \O/
quelle
Ṗ
wird kein Leerzeichen nachgestellt, sondern ein Leerzeichen nachgestellt1
. Wenn Sie nichts mit Leerzeichen zu tun haben, werden die Buchstaben nicht mehr in einer Reihe angezeigt. Im Allgemeinen verwendet dieser Algorithmus die Indizierung, sodass die Buchstaben zu einem bestimmten Index in einer Spalte gelangen und der Rest dann mit Leerzeichen gefüllt wird. Ich denke, dies kann nicht weiter ausgeführt werden. Zumindest bin ich froh, dass Jelly von CJam nicht überfordert ist. ;)05AB1E ,
2623 BytesProbieren Sie es online!
Erläuterung
Mit Beispieleingabe =
ppcg, tests
quelle
C # (.NET Core) , 163 Byte
Probieren Sie es online!
Wahrscheinlich gibt es hier viel Golf zu spielen, aber hier ist ein erster Nicht-LINQ-Versuch. Lambda-Funktion, die das längere Wort zuerst benötigt und eine Zeichenfolge mit der Ausgabe zurückgibt.
quelle
l=>s=>
) zu speichern, dhFunc<input1, Func<input2, output>>
.Java 8, 216 Bytes
Ein Curry-Lambda: nimmt
String
ein Lambda und gibt es vonString
bis zurückString
. Der Parameter für das äußere Lambda ist die kürzere Zeichenfolge.Es
String
ist ... bedauerlich, nicht in der Lage zu sein, mit der Array-Syntax in s zu indizieren .Ungolfed Lambda
Erläuterung
l
ist die Länge der kürzeren Eingabe undi
ein Mehrzweckindex, der so initialisiert wird, dass er sich auf das erste Zeichen der zweiten Hälfte der kürzeren Eingabe bezieht.o
akkumuliert das Ergebnis,p
speichert letztendlich Leerzeichen zum Auffüllen undn
ist ein Alias für"\n"
.Die erste Schleife verschachtelt die zweiten Hälften der beiden Zeichenfolgen (mit Ausnahme des letzten Zeichens der längeren Eingabe) und bildet
p
den richtigen Abstand für die mittlere Zeile.Die nächste Zeile vervollständigt die mittlere Ausgabezeile.
Ich möchte mich bei James Gosling für die zweite Runde entschuldigen. Es fügt die Linien oberhalb und unterhalb der Mittellinie von innen nach außen hinzu. Wenn Sie die Schleife betreten,
i
wirdl - 1
ein Zeichen vor dem letzten Zeichen der ersten Hälfte der kürzeren Zeichenfolge eingefügt.i
wird dekrementiert, so dass der nächste Abstand (an das Ergebnis angehängt) ein kürzeres Zeichen ist. Durch ganzzahlige Division wird das gleiche Positionszeichen der längeren Zeichenfolge angehängt. Dies wiederholt sich und das fertige Ergebnis wird zurückgegeben.Cooles Zeug
Linie 13 war früher
weil ohne die leere Zeichenfolge
+
die Zeichenwerte zusammenaddiert und eine numerische Zeichenfolge angehängt wurden. Durch Erweitern der zusammengesetzten Zuweisung wird zuerst die Verkettung vono
undt.charAt(i)
ausgewertet, wodurch das gewünschte Ergebnis erzielt wird, ohne dass die leere Zeichenfolge erforderlich ist, wodurch 2 Byte eingespart werden. Dies ist das erste Mal, dass ich sehe, dass sich eine zusammengesetzte Zuweisung anders verhält als ihre Erweiterung.quelle
Javascript (ES6),
140 137133 BytesGanz sicher kann dies weiter golfen werden
quelle
`<newline>`+` `
zusammengeführt werden`<newline> `
? (Ich kenne JS nicht).Mathematica, 174 Bytes
Eingang
quelle
TXR Lisp , 126 Bytes
quelle
PHP,
149129 BytesLaufen Sie mit
-nr
oder versuchen Sie es online .quelle
Perl 5 , 163 Bytes
Probieren Sie es online!
Nimmt zuerst die längere Saite.
quelle