Tantangan:
Diberikan matriks NxN di mana dan satu dari delapan 'opsi lipat' yang berbeda, menghasilkan array 2D / daftar dengan nilai yang dikurangi.
Delapan opsi lipat adalah: kiri-ke-kanan; kanan ke kiri; atas ke bawah; dari bawah ke atas; topleft-to-bottomright; sayap kanan atas ke bawah; bottomleft-to-topright; bottomleight ke topleft.
Contoh langkah demi langkah:
Matriks input:
[[ 1, 3, 5, 7],
[ 0, 8, 6, 4],
[ 1, 1, 1, 1], (a'th row in the explanation below)
[ 1,25, 0,75]]
Dengan opsi lipat dari atas ke bawah, kami menampilkan sebagai berikut:
[[ 1,-7,-5,-3],
[ 0,22,-5,68]]
Mengapa? Kami melipat dari atas ke bawah. Karena dimensi matriksnya genap, kami tidak memiliki lapisan tengah untuk dilestarikan apa adanya. Baris ' akan dikurangi dengan baris ' (akan menjadi 'baris untuk matriks dimensi ganjil); jadi menjadi . Baris ' kemudian akan dikurangi dengan baris ' (akan menjadi 'baris untuk matriks dimensi ganjil); jadi menjadi .[1, 1, 1, 1]
[1-0, 1-8, 1-6, 1-4]
[1, -7, -5, -3]
[1, 25, 0, 75]
[1-1, 25-3, 0-5, 75-7]
[0, 22, -5, 68]
Dengan opsi lipat bottomright-to-topleft (dengan input-matriks yang sama di atas) kami menampilkan sebagai berikut:
[[-74, 2, 1, 7],
[ 0, 7, 6],
[-24, 1],
[ 1]]
Dengan pengurangan lipat berikut:
[[1-75, 3-1, 5-4, 7],
[ 0-0, 8-1, 6],
[1-25, 1],
[ 1]]
Aturan tantangan:
- Anda dapat menggunakan delapan huruf berbeda
[A-Za-z]
atau angka berbeda dalam rentang untuk opsi pelipatan. Angka atau mungkin merupakan opsi yang paling umum, tetapi jika Anda ingin menggunakan angka yang berbeda dalam kisaran untuk beberapa perhitungan cerdas, jangan ragu untuk melakukannya. Harap sebutkan opsi lipat mana yang Anda gunakan dalam jawaban Anda. - Matriks input akan selalu berupa matriks NxN persegi, jadi Anda tidak harus menangani matriks NxM persegi panjang. juga akan selalu minimal 2, karena matriks kosong atau 1x1 tidak dapat dilipat.
- Input dari matriks akan selalu berisi angka-angka non-negatif dalam kisaran (angka-angka dalam output karena itu akan berada dalam kisaran ).
- Dengan lipatan diagonal (anti-) atau lipatan vertikal / horisontal dimensi ganjil, 'lapisan' tengah akan tetap tidak berubah.
- I / O fleksibel. Dapat berupa array 2D / daftar bilangan bulat; dapat dikembalikan atau dicetak sebagai string yang dibatasi spasi-dan-baris; Anda dapat memodifikasi input-matrix dan mengganti angka-angka yang seharusnya dengan
null
atau angka di luar[-999, 999]
rentang untuk menunjukkan mereka hilang; dll. dll
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa saja'. - Aturan standar berlaku untuk jawaban Anda dengan aturan I / O default , sehingga Anda diizinkan untuk menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program penuh. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda (yaitu TIO ).
- Juga, menambahkan penjelasan untuk jawaban Anda sangat dianjurkan.
Kasus uji:
Input-matrix 1:
Input-matrix (for the following eight test cases):
[[ 1, 3, 5, 7],
[ 0, 8, 6, 4],
[ 1, 1, 1, 1],
[ 1,25, 0,75]]
Input-folding option: left-to-right
Output: [[2,6],[-2,4],[0,0],[-25,74]]
Input-folding option: right-to-left
Output: [[-6,-2],[-4,2],[0,0],[-74,25]]
Input-folding option: top-to-bottom
Output: [[1,-7,-5,-3],[0,22,-5,68]]
Input-folding option: bottom-to-top
Output: [[0,-22,5,-68],[-1,7,5,3]]
Input-folding option: topleft-to-bottomright
Output: [[7],[6,-1],[1,-7,-2],[1,24,0,74]]
Input-folding option: topright-to-bottomleft
Output: [[1],[-3,8],[-4,-5,1],[-6,21,-1,75]]
Input-folding option: bottomleft-to-topright
Output: [[1,3,4,6],[8,5,-21],[1,1],[75]]
Input-folding option: bottomright-to-topleft
Output: [[-74,2,1,7],[0,7,6],[-24,1],[1]]
Input-matrix 2:
Input-matrix (for the following eight test cases):
[[17, 4, 3],
[ 8, 1,11],
[11, 9, 7]]
Input-folding option: left-to-right
Output: [[4,-14],[1,3],[9,-4]]
Input-folding option: right-to-left
Output: [[14,4],[-3,1],[4,9]]
Input-folding option: top-to-bottom
Output: [[8,1,11],[-6,5,4]]
Input-folding option: bottom-to-top
Output: [[6,-5,-4],[8,1,11]]
Input-folding option: topleft-to-bottomright
Output: [[3],[1,7],[11,1,-10]]
Input-folding option: topright-to-bottomleft
Output: [[17],[4,1],[8,-2,7]]
Input-folding option: bottomleft-to-topright
Output: [[17,-4,-8],[1,2],[7]]
Input-folding option: bottomright-to-topleft
Output: [[10,-7,3],[-1,1],[11]]
A-Za-z
apa saja atau bilangan bulat apa pun dalam rentang [-999,999]
, jadi pesanan tidak masalah. Dan maaf, tetapi Anda harus menampilkan lipatan yang benar berdasarkan input, jadi mengeluarkan kedelapan tidak diperbolehkan.