Zielsetzung
Schreiben Sie bei einem 2D-Array beliebiger Größe ein Programm oder eine Funktion, um alternativ die Spalten und Zeilen zu verschieben
Beispiel
a b c d e
f g h i j
k l m n o
Alle Elemente in der ersten Spalte Verschiebung nach unten eine Zeile, die zweite Spalte Verschiebung bis eine Zeile, die dritte Verschiebung nach unten eine Zeile und so weiter, die Umhüllung , wenn sie erreichen den Rand.
k g m i o
a l c n e
f b h d j
Alle Elemente in der ersten Reihe verschieben sich nach rechts , die zweite nach links , die dritte nach rechts usw. und werden umbrochen, wenn sie die Kante erreichen.
o k g m i
l c n e a
j f b h d
Ich werde der Tradition folgen, den kürzesten Arbeitscode als beste Antwort zu wählen
code-golf
array-manipulation
Karan Shishoo
quelle
quelle
Antworten:
Schale , 7 Bytes
Probieren Sie es online!
Erläuterung
quelle
MATL , 13 Bytes
Probieren Sie es online!
Erläuterung
quelle
J ,
26, 21,19 Bytes-5 Bytes dank Meilen
Erläuterung:
^:2
- zweimal wiederholen:@|:
- transponieren und#\
- finde die Länge der Präfixe (1, 2, 3 ... Zeilen)_1^
- Erhöhe -1 auf die obigen Potenzen und erstelle eine Liste mit abwechselnden -1 1 -1 1 ...|."_1~
- Drehen Sie jede Zeile des Eingabearrays mit einem Versatz von der obigen ListeProbieren Sie es online!
Originalfassung:
Wie es funktioniert
^:2
- zweimal wiederholen:|:
- transponieren und|."0 1]
- Drehen Sie jede Zeile des Eingabearrays, Offsets in der Liste:@#
- Die Anzahl der Zeilen im Array($_1 1"0)
- Alternative _1 1 (3 -> _1 1 _1)Probieren Sie es online!
quelle
_1 1..
mit(|."_1~_1^2|#\)@|:^:2
auch2|
Teil nichtWolfram Language (Mathematica) , 55 Byte
Probieren Sie es online!
quelle
Python 2 , 83 Bytes
Probieren Sie es online!
quelle
APL + WIN, 30 Bytes
Fordert zur Eingabe eines Bildschirms für ein 2D-Array auf
quelle
APL (Dyalog Unicode) , 26 Byte
Probieren Sie es online!
Präfix Dfn.
Wie?
quelle
APL (Dyalog Unicode) , 15 Byte (SBCS)
Probieren Sie es online!
quelle
JavaScript (ES6),
9491 ByteEs gibt wahrscheinlich eine golferischere Möglichkeit, die Rotation durchzuführen ...
quelle
Pyth, 15 Bytes
Probieren Sie es online aus
Erläuterung
quelle
q / kdb + 32 Bytes
Lösung:
Beispiel:
Erläuterung:
Drehen Sie das Raster, um die Drehung auf die Spalten anzuwenden . Die zweite Iteration wird erneut umgekehrt, sodass die Drehung beim zweiten Durchgang auf die Zeilen angewendet wird .
Die Drehung basiert auf der Liste
-1 1 -1 1..
der Länge der gedrehten Zeile / Spalte.Von dieser leichter zu lesenden Version wurden gesunde 9 Bytes abgespielt
quelle
JavaScript (ES6),
11676 BytesProbieren Sie es online!
Kommentiert
quelle
Gelee , 10 Bytes
Probieren Sie es online!
quelle
Sauber , 93 Bytes
Als Teilfunktion sieht das wie ein Gesicht aus.
Probieren Sie es online!
quelle
05AB1E , 14 Bytes
Probieren Sie es online!
Erläuterung
quelle
APL NARS, 36 Byte, 18 Zeichen
Dieses {⍵⌽⍨- × - \ ⍳≢⍵} würde jede Zeile des Matrixarguments nach dem Vektor -1 1 -1 1 usw. drehen (dessen Vektorlänge der Länge der Argumentmatrixzeilen entspricht). Prüfung:
quelle
Bash et al., 84
Nicht konkurrierende Shell-Lösung.
Dies basiert auf einer Funktion, die die Drehrichtung der Zeilen wechselt. Das gleiche Verfahren, das für das transponierte Array durchgeführt wird, dreht die Spalten. Zum Beispiel
transpose | rotate | transpose | rotate
.Die abwechselnde Rotation kann für einzelne Zeichen-Arrays folgendermaßen durchgeführt werden
sed
:Die Umsetzung kann erfolgen mit
rs
oderdatamash
:Zusammen genommen:
Ausgabe:
quelle