Schnur-Treppe
Haftungsausschluss: Dies ist die erste Herausforderung, die ich vorschlage. Jedes Feedback ist willkommen. Wenn dies ein Duplikat ist, weisen Sie darauf hin.
Hier ist ein Link zum Sandbox-Post.
Tor
Das Ziel dieser Herausforderung besteht darin, die Zeichenfolge anhand einer Zeichenfolge und einer Ganzzahl in Blöcke mit der Größe dieser Ganzzahl zu drucken. Wenn ein Wort mehr Zeichen als die Größe eines Blocks enthält, drucken Sie es in ein absteigendes "Treppenmuster".
Regeln
- Das oben erwähnte "Treppenmuster" bedeutet, dass dieser Block für jeden Block desselben Wortes genau dort beginnen muss, wo der Block darüber endet. Überprüfen Sie die Testfälle (oder fragen Sie), wenn Sie Fragen haben.
- Wenn ein Wort in mehrere Blöcke unterteilt ist, muss das folgende Wort mit einer ausreichenden Anzahl von Leerzeichen gedruckt werden, dh es muss genau ein Leerzeichen vom untersten Block des vorhergehenden Wortes entfernt sein. Überprüfen Sie die Testfälle (oder bitten Sie um Klärung).
- Sie können davon ausgehen, dass die Eingabezeichenfolge nur aus druckbaren ASCII-Zeichen besteht. Außerdem werden nicht mehrere Leerzeichen hintereinander angezeigt.
- Sie können auch davon ausgehen, dass die Ganzzahl immer im Bereich [1, + ∞) liegt.
- Nachgestellte Leerzeichen oder Zeilenumbrüche sind zulässig.
- Sie können für die E / A jede sinnvolle Methode verwenden .
- Es gelten Standard-Regelungslücken .
- Dies ist Code-Golf , also gewinnt der kürzeste Code (in Bytes pro Sprache). Nach einer Woche (oder so) akzeptiere ich die kürzeste Antwort.
Testfälle
(String, Integer) => (Output)
"This is a large string", 3 => Thi is a lar str
s ge ing
"This is an even larger string!", 2 => Th is an ev la st
is en rg ri
er ng
!
"Ooooh dear, what a big string you have!", 3
=> Ooo dea wha a big str you hav
oh r, t ing e!
"Staphylococcus saprophyticus", 4 => Stap sapr
hylo ophy
cocc ticu
us s
"I hope you find this challenge interesting", 2
=> I ho yo fi th ch in
pe u nd is al te
le re
ng st
e in
g
"Well, this test case looks kinda pointless now doesn't it?", 15
=> Well, this test case looks kinda pointless now doesn't it?
"This one looks a lot more interesting!", 1 => T o l a l m i
h n o o o n
i e o t r t
s k e e
s r
e
s
t
i
n
g
!
"Keep in mind, people: 'Punctuation! Does! Matter!'", 2
=> Ke in mi pe 'P Do Ma
ep nd op un es tt
, le ct ! er
: ua !'
ti
on
!
Antworten:
Holzkohle , 22 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
* Genauer gesagt: "Gehe zweimal zum Anfang der nächsten Zeile, aber als ob die Leinwand gedreht worden wäre." Bearbeiten: Zwischen dieser Herausforderung und der Annahme dieser Antwort hat Charcoal tatsächlich ein Mittel erlangt, um eine Zeichenfolge in Zeichenpaare aufzuteilen und den Code um 16 Byte zu reduzieren:
F⪪θ «↑⸿⸿F⪪ιIη«κ↙
Probieren Sie es online aus! Link ist eine ausführliche Version des Codes. Erläuterung:quelle
SOGL V0.12 ,
282726 BytesProbieren Sie es hier aus!
Ich habe dies implementiert
‰
, aber die Dokumentation dafür existierte schon vorher.Erläuterung:
quelle
Javascript ES6,
187183174166163148145143141140138 Bytesquelle
<"!"
anstelle von verwenden==" "
.C #, 200 Bytes
Wobei die Zeichenfolge durch i und die Größe durch s angegeben wird .
Z.B
Grundsätzlich werden im ersten Teil von Regex.Split Leerzeichen verwendet, um den Satz in Wörter aufzuteilen , und die Regex.Matches teilen jedes Wort in Abschnitte auf, die durch s angegeben werden . Der Block wird an die Cursorposition (x, y) geschrieben, wobei Y für jedes neue Wort auf 0 gesetzt wird und x für den ersten Block eines Wortes um 2 erhöht wird und anschließend für jeden Block (s-1).
x startet seine Lebensdauer bei -2, um sicherzustellen, dass die erste Verwendung auf 0 gesetzt ist.
Ich kenne mich in C # nicht gut genug aus, um es kleiner machen zu können, aber ich vermute, dass es wahrscheinlich sein kann.
quelle
Python 2 ,
203199 BytesProbieren Sie es online!
quelle
' '*(i/l*(l-1))
kann seini/l*~-l*' '
.Perl 5, 59 Bytes
55 Byte Code + 4 für
-ai
.Hinweis: Die
\x1b
s sind wörtlicheESC
Zeichen, die hier jedoch zum einfachen Kopieren und Einfügen ausgeblendet werden.Dieses Skript verwendet ANSI-Escape-Sequenzen und erfordert Eingaben über das
-i
nicht standardmäßige Flag. Wenn einer dieser Punkte nicht akzeptabel ist, lassen Sie es mich bitte wissen und ich werde aktualisiert.Beispiel läuft
quelle