Im Spiel 2048 hast du ein Gitter und kannst die Elemente in vier Richtungen bewegen. Sie bewegen sich alle in diese Richtung, so weit sie können. Für diese Herausforderung erhalten Sie eine gepolsterte, quadratische 2D-Zeichenfolge (entweder mit Zeilenumbrüchen oder einer Liste von Zeichenfolgen), wie folgt:
ab cd e
f ghij
kl
mno p
q r st
u v
w x y
z
oder
['ab cd e ', ' f ghij ', ' kl', 'mno p ', ' q r st ', 'u v', ' w x y ', 'z ']
Die vier Operationen sind left
, right
, up
, und down
. Das Ergebnis von jedem auf der obigen Eingabe:
Links:
abcde
fghij
kl
mnop
qrst
uv
wxy
z
oder
['abcde ', 'fghij ', 'kl ', 'mnop ', 'qrst ', 'uv ', 'wxy ', 'z ']
Richtig:
abcde
fghij
kl
mnop
qrst
uv
wxy
z
oder
[' abcde', ' fghij', ' kl', ' mnop', ' qrst', ' uv', ' wxy', ' z']
Oben:
abocdiel
mf ghsjv
un rp k
zq x t
w y
oder
['abocdiel', 'mf ghsjv', 'un rp k ', 'zq x t ', ' w y ', ' ', ' ', ' ']
Nieder:
b e
af c j
mn gd k
uq rhitl
zwoxpsyv
oder
[' ', ' ', ' ', ' b e ', 'af c j ', 'mn gd k ', 'uq rhitl', 'zwoxpsyv']
Ihr Ziel ist es, bei jeder Iteration zu rotieren, welche Operation ausgeführt wird, und diese an den Eingabezeiten n
auszuführen. Wenn Ihre Bestellung also lautet URDL
und die Eingabe lautet, dass sie mit D
( 2
, 0-indiziert) beginnen soll und Sie 5
Operationen benötigen , führen Sie diese aus D-L-U-R-D
und drucken sie dann aus.
Eingang:
- Ein String in einem Format wie oben
- Nachgestellte Leerzeichen sind nicht erforderlich (aber wahrscheinlich hilfreich)
- Es wird mindestens 2x2 sein
- Enthält nur druckbare ASCII-Zeichen und Leerzeichen (und Zeilenumbrüche je nach Eingabeformat)
- Sie sollten theoretisch jede Länge unterstützen, aber die Speicherbeschränkungen sind in Ordnung
- Eine nicht negative Ganzzahl
n
für die Anzahl der auszuführenden Operationen - Eine Ganzzahl
0-3
oder1-4
ein BuchstabeUDLR
, der die Operation beschreibt, mit der begonnen werden soll.- Ihr Programm muss also mit jeder Operation beginnen oder enden können
- Sie können sie zu Startzwecken in beliebiger Reihenfolge definieren, aber es muss eine konsistente Reihenfolge sein, sodass
U
manchmal nicht gefolgt werden kannR
und manchmal auch nichtL
.
- Operationen müssen nicht trivial ausgeführt werden
- Sie können Vorgänge in der Reihenfolge
LDRU
(links, unten, rechts, oben) wiederholt ausführen , aber nichtDLRU
oderUDLR
(daUD
ist das Gleiche wieD
undLR
das Gleiche wieR
.)
- Sie können Vorgänge in der Reihenfolge
Ausgabe:
- Die Zeichenfolge nach den vier Operationen
n
Zeiten - Das Ausgabeformat muss mit Ihrem Eingabeformat übereinstimmen
- Nachgestellte Leerzeichen sind nicht erforderlich (aber wahrscheinlich hilfreich)
Beispiel:
In diesem Beispiel wird die Reihenfolge verwendet URDL
.
Eingang:
10 (number of times operations are applied)
0 (starts with Up)
ab cd e
f ghij
kl
mno p
q r st
u v
w x y
z
Ausgaben für n = 0-5: (nur das Endergebnis ausgeben)
ab cd e
f ghij
kl
mno p
q r st
u v
w x y
z
---------------
abocdiel
mf ghsjv
un rp k
zq x t
w y
---------------
abocdiel
mfghsjv
unrpk
zqxt
wy
---------------
el
dijv
chspk
bognrxt
amfuzqwy
---------------
el
dijv
chspk
bognrxt
amfuzqwy
---------------
eljvkxty
disprqw
chgnz
bofu
am
Meine hübsche, ungolfed Implementierung
Antworten:
Jelly , 23 Bytes
Probieren Sie es online!
Ich bin etwas unzufrieden, aber MATL brauchte Konkurrenz. : P
Verwendet die Bestellung
URDL
. Eingänge:U
, 2 =R
, 3 =D
, 4 =L
)Erläuterung
quelle
JavaScript (ES6), 168 Byte
Ungolfed:
d
ist der Anfangsindex in die Richtungen, die sindURDL
.quelle
Python 2 ,
226224204193 Bytes-1 Byte dank Trelzevir
Probieren Sie es online!
Funktion, die alle Leerzeichen jedes Elements in der Liste entfernt und mit Leerzeichen links oder rechts ergänzt.
Dies wird transponiert (um 90º gedreht), wenn der Eingang
0
oder1
(U
oderD
) ist und angewendet wirdg
quelle
for i in (...)
.MATL ,
2423 BytesOrdnung ist
URDL
,1
-basiert. So1
ist Ù,
2is
R` etc.Eingaben sind: Anzahl der Male, Anfangsrichtung, Zeichenmatrix (Verwendung
;
als Zeilentrennzeichen).Probieren Sie es online!
quelle