Meiner bescheidenen Meinung nach ist Standardtext langweilig. Deshalb schlage ich einen neuen Schreibstandard vor, wandelnde Worte!
Gehende Worte
Gehende Wörter sind Wörter, die auf bestimmte Zeichen reagieren. Für diese Herausforderung stammen die Auslöserzeichen [u, d, r, l]
von up down right left
.
Immer wenn Sie beim Drucken eines Textes auf ein solches Zeichen stoßen, verschieben Sie die Richtung des Textes.
Der Text abcdef
führt zum Beispiel zu :
abcd
e
f
Regeln
- Sowohl Groß-
UDRL
als auch Kleinbuchstabenudrl
sollten die Richtung ändern, Groß- und Kleinschreibung sollte jedoch in der Ausgabe beibehalten werden - Die Eingabe enthält nur druckbare Zeichen
(0-9, A-Z, a-z, !@#%^&*() etc...)
, keine Zeilenumbrüche! - Immer wenn der Text kollidiert, wird das alte Zeichen an dieser Position überschrieben
- Die Ausgabe sollte dem Benutzer in jeder modischen Angelegenheit präsentiert werden, es sollte sich jedoch um eine einzelne Ausgabe handeln (keine Anordnung von Zeilen).
- Nachgestellte und führende Zeilenumbrüche sind zulässig
- Nachgestellte Leerzeichen sind erlaubt
- Es gelten Standardlücken
Testfälle
empty input => empty output or a newline
u =>
u
abc =>
abc
abcd =>
abcd
abcde =>
abcd
e
abcdde =>
abcd
d
e
codegolf and programming puzzles =>
cod
e
g
o
dna fl sel
z
p z
rogramming pu
ABCDELFUGHI =>
I
AHCD
G E
UFL
It is in my humble opinion that standard text is boring. Therefore I propose a new writing standard, walking words! =>
dnats taht noinipo el
a b
rd m
It is in my hu
t
e
x
t
i
s
b
o
ring. Therefore I propose a new writing stand
a
rd
,
w
a
rdw gnikl
s
!
Das ist Code-Golf , der kürzeste Code in Bytes gewinnt!
code-golf
grid
printable-ascii
Bassdrop Cumberwubwubwub
quelle
quelle
golf
von selbst aussehen?gfl
Antworten:
Kohle ,
29272019 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Schleife über die eingegebenen Zeichen.
Wenn der aktuelle Buchstabe eine Richtung ist ...
Aktualisieren Sie dann die aktuelle Laufrichtung.
Gibt das Zeichen in der aktuellen Laufrichtung aus, standardmäßig nach rechts, wenn noch keine Richtung festgelegt wurde.
quelle
⌕
sollte ein sein№
. Das tut mir leid.Dyalog APL , 63 Bytes
s@(n+11 9∘○¨+\0j1*⊃¨,⍨\(8∘≠⍴¨⊢)0,'rdluRDLU'⍳¯1↓s)⍴∘'',⍨2×n←≢s←⍞
Verwendung
⎕IO←0
und Funktionen von v16 (@
)n←≢s←⍞
Roheingabes
und ihre Längen
⍴∘'',⍨2×n
Erstelle eine 2n mal 2n Matrix von Räumens@(...)
Ändern Sie die Matrix mit den Zeichens
der angegebenen (Paar-) Indizeswie die Indizes berechnet werden:
¯1↓s
lass den letzten char von fallens
'rdluRDLU'⍳'
codiere'r'
als 0,'d'
als 1 usw .; andere Zeichen als 80,
stellen Sie eine 0 voran(8∘≠⍴¨⊢)
verwandle jede 8 in eine leere Liste, alle anderen in eine 1-Element-Liste,⍨\
kumulative getauschte Verkettungen (abcd
->a ba cba dcba
)⊃¨
zuerst von jedem0j1*
imaginäre Konstante i hoch+\
kumulative Beträge11 9∘○¨
Real- und Imaginärteil von jedem; Koordinaten im Bereich bekommen-n
...n
n+
zentriere sie auf der großen Matrixquelle
Pyth,
6865 BytesTestsuite
Dabei wird ein Wörterbuch verwendet, das durch ein Koordinatenpaar indiziert wird, das beim Lesen der Eingabe aktualisiert und am Ende gedruckt wird. Es verwendet auch eine Tonne von cleveren Golf-Tricks.
So habe ich es geschrieben, wobei ich das Interpreter-
-m
Flag verwendet habe, um das Leerzeichen und die Kommentare vor dem Ausführen zu entfernen:quelle
C #,
525474 BytesBearbeiten: 51 Bytes dank @steenbergh gespeichert
Es ist nicht schön, aber es funktioniert ...
Golf gespielt:
Ungolfed:
Erläuterung:
Verwendet ein zweidimensionales Array und den
d
Wert, um die Position des Arrays in der Korrekturrichtung zu erhöhen. Dabei sind d-Werte:Prüfung:
quelle
d=0;
, ersetzen Sie diese Anweisung durch die Anweisung in der zweiten Schalteranweisungcase 0:
und verhalten sich ähnlich wie in anderen Fällen. Möglicherweise benötigen Sie keinen zweiten Schalter. Entfernen Sie zuletzt diese Anweisunga[y,x]=s[i]
und schreiben Sie sie obenauf des ersten Schalters.a[y,x]=s[i]
vor dem ersten Wechsel geschrieben?switch(s[i].toLowerCase())
(oder was ist das C # -Äquivalent ...) und dann alle Großbuchstaben entfernen. Sollte einige Bytes sparen.ToUpper()
weil es einchar
nicht iststring
. Die Auswahlmöglichkeiten sind entweders[i].ToString().ToUpper()
oderchar.ToUpper(s[i])
- ich denke, diechar
ist etwas kürzer. Prost :)JavaScript (ES6), 218
220 232Bearbeiten Ich habe
u
und verwendett
, um die Position ganz oben und ganz links zu verfolgen, aber mir wurde klar, dass dies überhauptt
nicht erforderlich istWeniger golfen
Prüfung
quelle
05AB1E ,
27 26 25 2322 Bytes3 Bytes dank Grimy gespart
Probieren Sie es online!
Erläuterung
quelle
Javascript, 4̶6̶6̶,
455433 BytesÄnderungen: 11 Bytes gespeichert, dank Benutzer 1000000000 10 oder so gespeichert, dank Benutzer 2428118 Außerdem wurden einige unnötige Semikolons entfernt.
Ich bin mir ziemlich sicher, dass man damit weiter Golf spielen kann, aber ich konnte es nicht ganz schaffen. Ich bin noch ganz neu, also ist jeder Rat sehr willkommen :)
Ungolfed:
}
Ich ging mehr oder weniger so vor:
quelle
['r','u','l','d']
mit"ruld"
z=
zu Beginn deines Programmsa.split``
.Python 3,
314309290268 BytesIch habe versucht, mein Programm als Eingabe für mein Programm auszuführen, mit einigen interessanten Ergebnissen. Hah, versuchen Sie das zu interpretieren, Python!
Rasiert 5 Bytes - Kompliment an Jack Bates.
23 Bytes wurden von kundor weggewischt
Hinweis: Ich glaube, es gab einen Fehler bei der Messung mit meinen Bytes, weil verschiedene Editoren verwendet wurden. Ich bin mir jedoch ziemlich sicher, dass die letzte richtig ist.
quelle
'r':(1,0)
mit'r':d
an und durch Entfernen des Raumesw[a] for
. Auch das ist verrückt !!! Wie lange hast du dafür gebraucht?X,Y=map(...)
Zeile mit ersetzenX,Y=zip(*m)
. Funktioniert hier. (*m
Entpackt es in eine Liste seiner Schlüssel und gruppiert sie mit zip in zwei Tupel.)PHP,
238 223 205204 Bytes12 Bytes gespeichert von Jörg (
stripos
stattpreg_match
), 1 Byte + geschweifte Klammern durch Anführen statt Nachführen von Zeilenumbrüchen, 16 + geschweifte Klammern aus der Richtungsänderung, 1 weiteres mit ternären stattif
.Laufen Sie als Pipe mit
php -nR '<code>'
oder versuchen Sie es online .Nervenzusammenbruch
quelle
strspn($r[$y+=$e][$x+=$d]=$c,udlruDLR)
einige Bytes speichern sollte, anstatt den regulären Ausdruck zu verwenden, sollte ´stripos (_ulrd, $ r [$ y + = $ e] [$ x + = $ d] = $ c) `besser sein als strspn$argn
save 3 BytesJava 10,
288286280263 Bytes-17 Bytes dank @Grimy .
Erläuterung:
Probieren Sie es hier aus. (HINWEIS: Ich entferne alle nachgestellten Leerzeichen / Zeilenumbrüche, um die Ausgabe etwas kompakter zu gestalten. Sie können auch die
.replaceAll("(m?)\\s+$","")
in- Methode entfernentest
, um das tatsächliche Ergebnis zu sehen.)quelle
d<69?1:d>84?-1:0
kann sein5-d/14
d==82?1:d==76?-1:0
kann sein3-(d^16)/23
Perl, 204 + 3 = 207 Bytes
+3 für
-F
Leerzeichen sind nicht Teil des Codes und dienen der Lesbarkeit.
Ähnlich wie bei meiner Lösung für die Fizz Buzz-Herausforderung erstelle ich für jeden Schritt auf dem Weg einen Hash mit x, y-Koordinaten, wobei die Maximal- und Minimalwerte der gespeicherten x- und y-Koordinaten beibehalten werden. Anschließend durchlaufe ich die Datei und drucke alles aus.
Wenn ich verzweifelt bin, kann ich vielleicht die letzten drei Zeilen der ersten
for
Schleife in eine einzige ekelhafte Anweisung umwandeln, die vielleicht ein oder zwei Bytes spart, aber ich freue mich nicht auf das völlig unlesbare Ergebnis.quelle
Excel VBA, 205 Byte
Ich bin ein bisschen überrascht über die Fähigkeit von Excel, mit vorhandenen Antworten zu konkurrieren. Es funktioniert, weil
w
undz
verfolgen Sie die Richtung.quelle
SmileBASIC,
148146 BytesRufen Sie die Funktion mit auf
W "text",vx,vy
, wobei vx und vy die Startrichtung sind (Standard ist 1,0)quelle
Schnelle 3, 283 Bytes
Ungolfed
Warnung
Längere Eingaben erfordern einen größeren Bildschirm. Die Ausgabe hat keine Behandlung für "leere" Zeilen / Spalten, da ich verstanden habe, dass dies nach den Regeln der Challenge akzeptabel ist.
Schimpfen
print
suxquelle