Objektif
Dengan array 2D ukuran berapa pun, tulislah sebuah program atau fungsi untuk menggeser kolom dan baris secara alternatif
Contoh
a b c d e
f g h i j
k l m n o
Semua elemen di kolom pertama bergeser ke bawah satu baris, kolom kedua bergeser ke atas satu baris, yang ketiga bergeser ke bawah satu baris dan seterusnya, membungkus ketika mereka mencapai tepi.
k g m i o
a l c n e
f b h d j
Semua elemen di baris pertama bergeser ke kanan , yang kedua ke kiri , yang ketiga ke kanan dll, membungkus ketika mereka mencapai tepi.
o k g m i
l c n e a
j f b h d
Saya akan mengikuti tradisi memilih kode kerja terpendek sebagai jawaban terbaik
code-golf
array-manipulation
Karan Shishoo
sumber
sumber
Jawaban:
Sekam , 7 byte
Cobalah online!
Penjelasan
sumber
MATL , 13 byte
Cobalah online!
Penjelasan
sumber
J ,
26, 2119 byte-5 byte berkat mil
Penjelasan:
^:2
- ulangi dua kali berikut ini:@|:
- transpose dan#\
- cari panjang awalan (1, 2, 3 ... baris)_1^
- naikkan -1 ke kekuatan di atas, buat daftar bolak-balik -1 1 -1 1 ...|."_1~
- putar setiap baris array input dengan offset dari daftar di atasCobalah online!
Versi asli:
Bagaimana itu bekerja
^:2
- ulangi dua kali berikut ini:|:
- transpose dan|."0 1]
- Putar setiap baris array input, offset dalam daftar:@#
- jumlah baris dalam array($_1 1"0)
- alternatif _1 1 (3 -> _1 1 _1)Cobalah online!
sumber
_1 1..
menggunakan(|."_1~_1^2|#\)@|:^:2
juga2|
bagianBahasa Wolfram (Mathematica) , 55 byte
Cobalah online!
sumber
Python 2 , 83 byte
Cobalah online!
sumber
APL + MENANG, 30 byte
Meminta input layar dari array 2d
sumber
APL (Dyalog Unicode) , 26 byte
Cobalah online!
Awalan Dfn.
Bagaimana?
sumber
APL (Dyalog Unicode) , 15 byte (SBCS)
Cobalah online!
sumber
JavaScript (ES6),
9491 byteMungkin ada cara golf untuk melakukan rotasi ...
sumber
Pyth, 15 byte
Cobalah online
Penjelasan
sumber
q / kdb + , 32 byte
Larutan:
Contoh:
Penjelasan:
Balikkan kisi untuk menerapkan rotasi ke kolom , iterasi kedua membalik sekali lagi sehingga rotasi diterapkan ke baris pada lintasan kedua.
Rotasi didasarkan pada daftar
-1 1 -1 1..
panjang baris / kolom yang diputar.9 byte yang sehat telah di-golf dari versi yang lebih mudah dibaca ini
sumber
JavaScript (ES6),
11676 byteCobalah online!
Berkomentar
sumber
Jelly , 10 byte
Cobalah online!
sumber
Bersihkan , 93 byte
Sebagai fungsi parsial literal, yang terjadi terlihat seperti wajah.
Cobalah online!
sumber
05AB1E , 14 byte
Cobalah online!
Penjelasan
sumber
APL NARS, 36 byte, 18 karakter
{⍵⌽⍨- × - \ ⍳≢⍵} ini akan memutar setiap baris argumen matriks mengikuti vektor -1 1 -1 1 dll (yang memiliki panjang vektor panjang panjang baris argumen matriks). Uji:
sumber
bash et al, 84
Solusi shell yang tidak bersaing.
Ini didasarkan pada fungsi yang bergantian arah rotasi baris. Prosedur yang sama dilakukan pada array yang dialihkan akan memutar kolom. Sebagai contoh
transpose | rotate | transpose | rotate
.Rotasi bolak-balik dapat dilakukan pada array karakter tunggal dengan
sed
seperti ini:Transposisi dapat dilakukan dengan
rs
ataudatamash
:Diambil bersama-sama:
Keluaran:
sumber