Saya pernah memiliki array persegi panjang yang indah. Itu sangat simetris, tetapi sayangnya telah berantakan dan sekarang saya hanya memiliki sudut kiri atas. Tugas Anda adalah membangun kembali array asli.
Program Anda akan menerima array bilangan 2 dimensi. Untuk memudahkan penguraian, Anda dapat mengasumsikan semuanya berada di antara 1 dan 9. Tugas Anda adalah membalik kolom array, barisnya, dan keduanya, menyatukan sudut-sudut yang dihasilkan, dan mengembalikan array yang dihasilkan.
Anda dapat mengasumsikan dimensi array paling tidak 1x1.
Kasus uji:
Input:
1 2 3
4 5 6
Output:
1 2 3 3 2 1
4 5 6 6 5 4
4 5 6 6 5 4
1 2 3 3 2 1
Input:
1
Output:
1 1
1 1
Input:
9
9
9
Output:
9 9
9 9
9 9
9 9
9 9
9 9
Ini adalah kode-golf , byte terkecil menang!
WS⟦ι⟧‖M→↓
mungkin? 5 byte untuk membaca input dan 4 untuk mencerminkannya.╬
(atau karakter serupa) tidak dapat mengingat yang mana: cJawaban:
Proton , 29 byte
Cobalah online!
Ada beberapa pendekatan menarik lainnya:
Proton , 29 byte
Cobalah online!
Anda dapat mendefinisikan sub-fungsi cermin
g
secara online, karena Proton. Itu tidak lebih pendek.Proton , 36 byte
Cobalah online!
Seharusnya
(a=>zip(*(a+a[by-1])))*2
24 byte, tetapi fungsi zip benar-benar rusak. Pada dasarnya, Anda mirror dan zip, dan kemudian melakukannya dua kali (Anda dapat mengalikan fungsi dengan bilangan bulat positif untuk menerapkan fungsi beberapa kali).sumber
Kanvas , 1 byte
Coba di sini!
Output sebagai string multiline
sumber
Haskell,
2524 byteCobalah online!
sumber
Python 3, 38 byte
Cobalah online!
Mengambil daftar daftar dan mengembalikan daftar daftar.
Penjelasan:
sumber
Sekam ,
76 byteSecara kebetulan, Erik telah memposting kode yang sama persis di chatroom Husk sekitar satu menit sebelum saya memposting ini.
Cobalah online!
Versi sebelumnya, 7 byte :
sumber
Retina , 13 byte
Cobalah online!
Penjelasan
Pada setiap baris (
%
), cocokkan dengan ujung garis ($
), dan masukkan kebalikan ($^
) dari seluruh baris ($`
) dan cetak hasilnya dengan linefeed baris tambahan (\
). Ini melakukan refleksi sepanjang sumbu vertikal dan mencetak paruh pertama dari output.Ini hanya membalikkan seluruh string, yang setara dengan rotasi 180 derajat, atau dalam kasus kami (karena simetri horizontal) refleksi sepanjang sumbu horizontal. Cara ini berfungsi adalah
V
regex default (kebalikan)(?m:^.*$)
, yang biasanya cocok dengan setiap baris string. Namun, kami mengaktifkan opsi singlelines
, yang membuatnya.
feed linefeed juga dan karenanya regex default ini benar-benar cocok dengan seluruh string.Hasil dari ini dicetak secara otomatis di akhir program, memberi kita paruh kedua dari output.
sumber
$
pada baris pertama. ;) Saya akan menambahkan penjelasan nanti.05AB1E , 2 byte
Cobalah online!
Kredit untuk Tn. Xcoder menunjukkan bahwa array string dapat dihitung sebagai array 2D dan Pavel untuk mengkonfirmasinya.
sumber
Jelly , 5 byte
Cobalah online!
sumber
m0Z$⁺
(oleh Hyper Neutrino).MATL , 5 byte
Cobalah online!
Penjelasan:
sumber
Oktaf ,
3329 byteTerima kasih kepada @Giuseppe untuk bermain golf empat byte!
Cobalah online!
sumber
JavaScript (Node.js) ,
62554946 byteCobalah online!
Karena
Array.prototype.reverse()
membalikkan array di tempat, saya harus membuat salinan dangkal di suatu tempat terlebih dahulu.A=>(j=x=>[...x,...x.reverse()])(A).map(j)
tidak bekerja.sumber
J , 12 byte
Cobalah online!
Penjelasan
sumber
awk, 88 byte
sumber
Triangularity , 31 byte
Cobalah online!
Penjelasan
Menghapus karakter yang menggantikan padding, inilah yang dilakukan oleh program:
sumber
R , 57 byte
Cobalah online!
sumber
APL + WIN, 11 byte
Meminta untuk array bilangan bulat 2d.
sumber
Stax , 5 byte
Jalankan dan debug secara online
:m
berarti cermin, yanginput.concat(reverse(input))
.m
, dalam konteks ini berarti output setiap baris setelah menerapkan ...Jadi, mirror array dari baris, dan kemudian mirror setiap baris dan output.
sumber
Japt , 6 byte
Coba di sini
Penjelasan
sumber
Mathematica , 29 byte
Cobalah online!
sumber
SOGL V0.12 , 2 byte
-1 byte berkat dzaima.
Coba di sini!
sumber
APL (Dyalog Classic) , 7 byte
Cobalah online!
sumber
Ruby , 35 byte
Cobalah online!
Lambda menerima array 2D dan mengembalikan array 2D. Mudah, tapi ini versi yang tidak disunat:
sumber
Java 8,
140131 bytePenjelasan:
Cobalah online.
sumber
J , 11 byte
Fungsi awalan diam-diam anonim.
Cobalah online!
|:
mengubah urutan@(…)
hasil dari:,
Argumen diikuti oleh|.
kebalikannya^:2
dan semua ini dilakukan dua kalisumber
SNOBOL4 (CSNOBOL4) ,
119113 byteCobalah online!
Mengambil input sebagai string pada STDIN, tanpa spasi. Ini hanya berfungsi karena digitnya adalah
1-9
dan akan gagal jika tidak.sumber
REVERSE
; yang asli hanya mendukung bilangan aritmatika juga, sejauh yang saya tahu.C (gcc) ,
114111 byteCobalah online!
C (gcc) , 109 byte (menyalahgunakan kemudahan parsing)
Cobalah online!
sumber
for(i=h+h;i-->0;puts(""))for(j=w+w;j-->0;)
printf("%d"
untuk -1 byte tambahan.Arang , 5 byte
Cobalah online!
Berkat ASCII-saja untuk format input yang lebih baik.
sumber
[]
tidak benar-benar membuatnya menjadi 2D).Tambahkan ++ , 30 byte
Cobalah online!
Footer hanya mengubah array bersarang ke dalam format dalam pertanyaan. Menentukan fungsi
f
, yang mengharapkan matriks (array bersarang) sebagai argumen.sumber
Julia 0,6 ,
5549 byteCobalah online!
~(i)
adalah fungsi untuk membuat slice darii
bawah ke1
.Jadi
~end
berikan potongannyaend:-1:1
!(x)
adalah fungsi untuk melakukan pembangunan kembali array.sumber
V , 12 byte
Cobalah online!
Penjelasan:
sumber