(Inspiriert ziemlich stark von dieser Herausforderung )
Bei der ursprünglichen Herausforderung war es, einen horizontalen Reißverschluss herzustellen. Wenn Sie jedoch auf meinen Hoodie hinunterblicken, ist mein Reißverschluss viel vertikaler (und etwas gebrochen): P.
Eingang
Sie erhalten eine einzelne Zeichenfolge ( s) und ein Paar Ganzzahlen ( aund b) in einem beliebigen Format. Wo:
a < (length-of-s / 2)
b <= ((length-of-s / 2) - (a + 1)) / 6
Ausgabe und Wertung
Ihr Programm kann ein vollständiges Programm oder eine Funktion sein, die eine einzelne Zeichenfolge mit der richtigen Formatierung oder ein von Ihnen ausgewähltes Array (ein Element pro Zeile) erzeugt. Führende und nachfolgende Leerzeichen und Zeilenumbrüche sind optional, solange die Zeichen der Ausgabe alle übereinstimmen. z.B.
["f r"],["u e"],["l p"],["l p"],["y i"],[" o z "],[" p n "],[" e "]
oder
"f r\nu e\nl p\nl p\ny i\n o z \n p n \n e "
sind akzeptable Ausgaben für Testfall 1
Standardlücken sind verboten und der kürzeste Code in Bytes gewinnt. Eine Antwort ohne Erklärung kann nicht gewinnen.
Erläuterung
Um einen Reißverschluss zu erstellen, müssen Sie zuerst Leerzeichen oder Zeilenumbrüche aus der Zeichenfolge entfernen. Und dann falten Sie es wie folgt in zwei Hälften (siehe Testfall 1 für mehr)
abcde fgh ij klmnopqr wird die beiden Zeichenfolgen unten, beachten Sie, dass die zweite Hälfte umgekehrt ist.
abcdefghi und rqponmlkj
Dann setzen wir ab dem Beginn jeder Zeichenfolge das gleiche indizierte Zeichen aus jeder Teilzeichenfolge auf eine Zeile, wobei der Abstand wie folgt bestimmt wird:
[0] a r -- (a-3) five spaces
[1] b q -- (a-2) three spaces
[2] c p -- (a-1) one space
[3] d -- (a)
[4] o
[5] e
[6] n
etc...
Das macht die Basis für unseren Reißverschluss. Nun die ganzen Zahlen aund b.
aist der Ort unserer Postleitzahl. Um festzustellen, wo sich der Reißverschluss befindet, verwenden wir den Index unserer Ausgangslinien als Punkt, um unseren Reißverschluss zu schließen. In der eckigen Klammer [3]in meinem obigen Beispiel befindet sich beispielsweise der Reißverschluss.
Bevor unser Reißverschluss zu Ende geht, muss der obige Reißverschluss in einem Abstand von fünf Feldern bleiben, bis er dort erreicht, a-2wo er sich auf drei Felder a-1schließt und wo er sich auf 1 Feld schließt. Nur um klar zu sein, im obigen Beispiel a = 3(0-indiziert)
bist die Anzahl der Löcher in meinem Reißverschluss. Um ein Loch im Reißverschluss zu erzeugen, teilen wir die Schnur mit einem gewissen Abstand wieder auf.
Beginnend mit dem Index des Beispiel Loches als hwir den Abstand zu erhöhen , h-1um einen Raum, h3 Räume und h+1zurück zu einem Raum, so dass h-2und h+2mit nur einem Zeichen pro Zeile , wie sie als Teil des Lochs gezählt.
Nach dem Reißverschluss und zwischen jedem der Löcher muss eine Lücke von einem Zeichen vorhanden sein, damit unser Reißverschluss zwischen den Löchern vollständig verbunden aussieht.
Sie können die Indizes der Löcher auswählen, diese müssen jedoch alle im geschlossenen Bereich des Reißverschlusses vorhanden sein.
Again using 'abcdefghi' and 'rqponmlkj'
[0] a r -- (open)
[1] b q -- (closing)
[2] c p -- (closing)
[3] d -- zip
[4] o -- gap
[5] e -- start of hole (h-2)
[6] n f -- one space (h-1)
[7] m g -- three spaces (hole h)
[8] l h -- one space (h+1)
[9] k -- end of hole (h+2)
[10] i -- gap
[11] j
Ich hoffe, dass alles Sinn macht, wenn nicht weg fragen. Im Vorgriff auf Fragen stellen Sie möglicherweise fest, dass das Zeichen pin meinem zweiten Beispiel in der zweiten Teilzeichenfolge vorhanden ist. Es wird jedoch am Anfang der Zeile angezeigt. Dies ist beabsichtigt. Sie müssen die Reihenfolge von 1-2-1-2- befolgen. 1-2, wobei ein Zeichen aus jeder Hälfte der Reihe nach genommen wird, unabhängig von seiner Position in der Ausgabe.
Testfälle
"fully open zipper", 7, 0 | "fully closed zipper", 0, 0
fullyope reppizn | fullyclos reppizde
|
f r *Note: i particularly like this | f
u e example as it shows the reversing | r
l p of the second half of the string | u
l p causes the words to wrap from top | e
y i left to the bottom and back up | l
o z the right side | p
p n | l
e | p
| y
| i
| c
| z
| l
| d
| o
| e
| s
- Spalte 1: "dumm langer, ungebrochener Reißverschluss, der auf keinem anständigen Hoodie existieren sollte", 24, 0
- Spalte 2: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris faucibus molestie mi. Aliquam nec fringilla ipsum", 15, 5
::
s e | L m
t i | o u
u d | r s
p o | e p
i o | m i
d h | i a
l t | p l
y n | s l
l e | u i
o c | m g
n e | d n
g d | o i
u y | l r
n n | o f
b a | r c
r n | s
o o | e
k t | i
e s | n t
n i | m a
z x | a m
i e | u
p t | e
p n | q
e | t
d | i
r | ,
l | l c
t | A o
u | . n
h | i
o | s
a | m
h | e e
t | c i
s | t t
| e
| s
| t
| s
| u
| l
| r
| o
| a
| m
| d
| s
| i
| u
| p
| b i
| i s
| c c
| u
| i
| a
| n
| f
| g
| s
| e
| i
| l r
| i u
| t a
| .
| M
BEARBEITEN: Testfälle hinzugefügt
"abcde fgh ij klmnopqr","3","1"
a r
b q
c p
d
o
e
n f
m g
l h
k
i
j