Verwandte: Eher ähnliche (aber viel einfachere) Herausforderung horizontal: Dort habe ich es behoben (mit Klebeband)
Herausforderung:
Wenn eine Zeichenfolge nur Groß- und / oder Kleinbuchstaben (je nachdem, was Sie bevorzugen) und neue Zeilen enthält, setzen Sie sie rope
vertikal, um sie zu korrigieren. Dazu überprüfen wir den Unterschied zwischen zwei benachbarten Buchstaben im Alphabet (ignorieren den Umlauf und gehen nur nach unten) und füllen den Raum mit so viel ROPE
/, rope
wie wir benötigen würden.
HINWEIS: Ein weiterer wesentlicher Unterschied zwischen dieser Herausforderung und der Herausforderung " Dort habe ich sie behoben (mit Band)" besteht darin, dass wir rope
diese Zeit nicht wie bei der tape
(von @JonathanAllan in Teil 1 der Herausforderung vorgeschlagenen) verschwenden .
Beispiel:
Eingang:
abc
bcd
ddd
eex
gfz
hka
imh
Ausgabe:
abc
bcd
Rdd
deE
efR
OPO
gEP
hRE
iOR
kO
PP
mE
R
O
P
E
R
O
P
E
R
O
x
P
z
a
E
R
O
P
E
R
h
Warum?
- Zwischen
b
undd
in Spalte 1 solltec
(Länge 1) sein, also füllen wir dies mitR
; - Zwischen
e
undg
in Spalte 1 solltef
(Länge 1) sein, also füllen wir dies mitO
; - Zwischen
f
undk
in Spalte 2 sollteghij
(Länge 4) sein, also füllen wir dies mitPERO
; - Zwischen
k
undm
in Spalte 2 solltel
(Länge 1) sein, also füllen wir dies mitP
; - Zwischen
d
undc
in Spalte 3 sollteefghijklmnopqrstuvw
(Länge 19) sein, also füllen wir dies mitEROPEROPEROPEROPERO
; - Zwischen
x
undz
in Spalte 3 solltey
(Länge 1) sein, also füllen wir dies mitP
; - Zwischen
a
undh
in Spalte 3 solltebcdefg
(Länge 6) sein, also füllen wir dies mitEROPER
.
Herausforderungsregeln:
- Der Unterschied gilt nur nach unten, also kein Seil dazwischen
za
(Spalte 3 im obigen Beispiel). - Es ist möglich, mehrere gleiche benachbarte Buchstaben wie
dd
(Spalte 3 im obigen Beispiel) zu haben. - Sie werden weiterhin jeweils
ROPE
eine Spalte verwenden, um keine Teile zu verschwenden (vorgeschlagen von @JonathanAllan in Teil 1 der Herausforderung). - Sie dürfen die Eingabe in jedem vernünftigen Format vornehmen. Kann eine einzelne Zeichenfolge, ein Zeichenfolgenarray / eine Liste, eine Zeichenmatrix usw. sein. Die Ausgabe hat die gleiche Flexibilität.
- Sie können Klein- und / oder Großbuchstaben nach Belieben verwenden. Dies gilt sowohl für die Eingabe als auch für die Ausgabe und
ROPE
. - Nachgestellte Leerzeichen sind optional (beachten Sie, dass die richtige Anzahl führender Leerzeichen obligatorisch ist, damit die Spalten korrekt sind).
Beliebig viele nachfolgende und / oder führende neue Zeilen sind ebenfalls optional. - Sie können davon ausgehen, dass alle Testfälle über alle Zeilen hinweg die gleiche Länge haben, sodass
a\naa
/[[a][a,a]]
keine gültige Eingabe wäre. - Es ist möglich, dass keine
ROPE
erforderlich ist. In diesem Fall bleibt die Eingabe unverändert.
Allgemeine Regeln:
- Dies ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich nicht von Code-Golf-Sprachen davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, eine möglichst kurze Antwort für "jede" Programmiersprache zu finden. - Für Ihre Antwort gelten Standardregeln , sodass Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp verwenden dürfen. Ihr Anruf.
- Standardschlupflöcher sind verboten.
- Wenn möglich, fügen Sie bitte einen Link mit einem Test für Ihren Code hinzu.
- Fügen Sie bei Bedarf auch eine Erklärung hinzu.
Testfälle:
As string:
Input: "abc\nbcd\nddd\neex\ngfz\nhka\nimh"
Output: "abc\nbcd\nRdd\ndeE\nefR\nOPO\ngEP\nhRE\niOR\n kO\n PP\n mE\n R\n O\n P\n E\n R\n O\n P\n E\n R\n O\n x\n P\n z\n a\n E\n R\n O\n P\n E\n R\n h"
As array-matrix:
Input: [[a,b,c],[b,c,d],[d,d,d],[e,e,x],[g,f,z],[h,k,a],[i,m,h]]
Output: [[a,b,c],[b,c,d],[R,d,d],[d,e,E],[e,f,R],[O,P,O],[g,E,P],[h,R,E],[i,O,R],[ ,k,O],[ ,P,P],[ ,m,E],[ , ,R],[ , ,O],[ , ,P],[ , ,E],[ , ,R],[ , ,O],[ , ,P],[ , ,E],[ , ,R],[ , ,O],[ , ,x],[ , ,P],[ , ,z],[ , ,a],[ , ,E],[ , ,R],[ , ,O],[ , ,P],[ , ,E],[ , ,R],[ , ,h]]
As string:
Input: "a\nz\na"
Output: "a\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nz\na"
As array-matrix:
Input: [[a],[z],[a]]
Output: [[a],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[z],[a]]
As string:
Input: "zz\nyy\nxx\nxx\ncc\ncc\nbb\nad"
Output: "zz\nyy\nxx\nxx\ncc\ncc\nbb\naR\n d"
As array-matrix:
Input: [[z,z],[y,y],[x,x],[x,x],[c,c],[c,c],[b,b],[a,d]]
Output: [[z,z],[y,y],[x,x],[x,x],[c,c],[c,c],[b,b],[a,R],[ ,d]]
As string:
Input: "a\nb\nc\nc\nx\nx\ny\nz"
Output: "a\nb\nc\nc\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nx\nx\ny\nz"
As array-matrix:
Input: [[a],[b],[c],[c],[x],[x],[y],[z]]
Output: [[a],[b],[c],[c],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[x],[x],[y],[z]]
As string:
Input: "zai\nybj\nxcq\nxcu\ncxw\ncxw\nbyr\nazw"
Output: "zai\nybj\nxcR\nxcO\ncRP\ncOE\nbPR\naEO\n Rq\n OP\n PE\n ER\n Ru\n OO\n Pw\n Ew\n Rr\n OP\n PE\n ER\n RO\n Ow\n P \n E \n x \n x \n y \n z "
As array-matrix:
Input: [[z,a,i],[y,b,j],[x,c,q],[x,c,u],[c,x,w],[c,x,w],[b,y,r],[a,z,w]]
Output: [[z,a,i],[y,b,j],[x,c,R],[x,c,O],[c,R,P],[c,O,E],[b,P,R],[a,E,O],[ ,R,q],[ ,O,P],[ ,P,E],[ ,E,R],[ ,R,u],[ ,O,O],[ ,P,w],[ ,E,w],[ ,R,r],[ ,O,P],[ ,P,E],[ ,E,R],[ ,R,O],[ ,O,w],[ ,P, ],[ ,E, ],[ ,x, ],[ ,x, ],[ ,y, ],[ ,z, ]]
As string:
Input: "asdljasdjk"
Output: "asdljasdjk"
As array-matrix:
Input: [[a,s,d,l,j,a,s,d,j,k]]
Output: [[a,s,d,l,j,a,s,d,j,k]]
As string:
Input: "asdljasdjk\nlkawdasuhq\nasjdhajksd"
Output: "asdljasdjk\nRkaOdasPhR\nOPOPEajEPO\nPEPER REP\nERERO ORE\nROROh POR\nOPOP EPq\nPEPE ROd\nERER OR \nRsRO PO \nO jP EP \nl w RE \na d Os \n P \n E \n R \n O \n u \n k "
As array-matrix:
Input: [[a,s,d,l,j,a,s,d,j,k],[l,k,a,w,d,a,s,u,h,q],[a,s,j,d,h,a,j,k,s,d]]
Output: [[a,s,d,l,j,a,s,d,j,k],[R,k,a,O,d,a,s,P,h,R],[O,P,O,P,E,a,j,E,P,O],[P,E,P,E,R, , ,R,E,P],[E,R,E,R,O, , ,O,R,E],[R,O,R,O,h, , ,P,O,R],[O,P,O,P, , , ,E,P,q],[P,E,P,E, , , ,R,O,d],[E,R,E,R, , , ,O,R, ],[R,s,R,O, , , ,P,O, ],[O, ,j,P, , , ,E,P, ],[l, , ,w, , , ,R,E, ],[a, , ,d, , , ,O,s, ],[ , , , , , , ,P, , ],[ , , , , , , ,E, , ],[ , , , , , , ,R, , ],[ , , , , , , ,O, , ],[ , , , , , , ,u, , ],[ , , , , , , ,k, , ]]
As string:
Input: "re\nop\npo\ner"
Output: "re\noR\npO\neP\n E\n R\n O\n P\n E\n R\n O\n p\n o\n P\n E\n r"
As array-matrix:
Input: [[r,e],[o,p],[p,o],[e,r]]
Output: [[r,e],[o,R],[p,O],[e,P],[ ,E],[ ,R],[ ,O],[ ,P],[ ,E],[ ,R],[ ,O],[ ,p],[ ,o],[ ,P],[ ,E],[ ,r]]
tape
Herausforderung ist viel einfacher (imho). Und ja, Sie können ein Array von Spalten ausgeben.
hope
stattdessen beheben ? Hoffnung ist stärker als Seil. (Dies ist ein schlechter Versuch des Humors, keine wirkliche Frage)