Tantangan
Dengan matriks karakter persegi (karakter ASCII satu-byte yang dapat dicetak), putar setiap "cincin" matriks ke arah yang berlawanan.
Mari kita ambil contoh:
1 2 3 4 5
6 7 8 9 A
B C D E F
G H I J K
L M N O P
Kemudian, cincin terluar diputar searah jarum jam 90 derajat, seperti:
1 2 3 4 5 L G B 6 1
6 A M 2
B F => N 3
G K O 4
L M N O P P K F A 5
Cincin kedua diputar berlawanan arah 90 derajat:
7 8 9 9 E J
C E => 8 I
H I J 7 C H
Cincin terakhir diputar searah jarum jam 90 derajat, tetapi karena ini adalah nomor tunggal (huruf dalam contoh kita), maka tidak benar-benar terpengaruh.
Hasil akhirnya adalah:
L G B 6 1
M 9 E J 2
N 8 D I 3
O 7 C H 4
P K F A 5
Jika matriks memiliki panjang sisi yang rata, cincin terdalam akan berukuran 2x2 persegi dan harus tetap diputar.
Memasukkan
Daftar daftar dalam format standar apa pun yang masuk akal. Misalnya, string yang dibatasi ruang-batas baru atau daftar string yang dibatasi-ruang dapat diterima, tetapi daftar nilai-nilai sebagai cincin di sekitar matriks tidak dapat diterima. Karakter tidak harus unik.
Keluaran
Daftar daftar dalam format standar apa pun yang masuk akal. Aturan yang sama dengan input.
Uji Kasus
1 2 3 7 4 1
4 5 6 => 8 5 2
7 8 9 9 6 3
1 2 3 4 5 6 Y S M G A 1
A B C D E F Z E K Q W 2
G H I J K L => ! D O I V 3
M N O P Q R @ C P J U 4
S T U V W X # B H N T 5
Y Z ! @ # $ $ X R L F 6
Kredit
Sangat terilhami oleh tantangan terkait yang memutar setiap elemen berlawanan arah satu posisi (bukan 90 derajat).
Jawaban:
Haskell , 94 byte
Fungsi anonim mengambil dan mengembalikan daftar
String
s.Gunakan sebagai
(cycle[t.r,r.t,r.t,r.t]?)["123", "456", "789"]
.Cobalah online!
Bagaimana itu bekerja
r
adalahreverse
.t
lebih pendek satu byte daripada mengimporData.List.transpose
.t.r
memutar daftar 90 derajat searah jarum jam, danr.t
memutarnya berlawanan arah jarum jam.?
mengambil dua argumen, daftar fungsi dan matriks sebagai daftar string.?
fungsi pertamaf
dari daftar fungsi, dan baris pertamaa
dari matriks.b
dari matriks searah jarum jam, dan berulang dengan itu dan fungsi yang tersisa. Ini secara bertahap strip matriks dari luar ke dalam, satu cincin setiap empat langkah.a
ke hasilnya, dan menerapkan fungsinyaf
untuk menyesuaikan orientasi matriks.?
dengan matriks input sebagai daftar string, dan daftar fungsi yang tak terbatas, yang berulang secara siklus setiap empat langkah.?
saat berulang.sumber
Python 2 , 104 byte
Cobalah online!
x[l-i][j]
adalah koordinat dari belokan searah jarum jam,x[i][l-j]
untuk putaran berlawanan arah jarum jam.min(i,j,l-i,l-j)%2
digunakan untuk memilih arah yang benarsumber
Mathematica, 113 byte
lebih baik untuk memasukkan string char seperti "E" untuk huruf khusus seperti E, saya ...
memasukkan
keluaran
sumber
Oktaf, 86 byte
Cobalah online!
sumber