Untuk tantangan ini, Anda harus menulis sebuah program atau fungsi yang menampilkan diagonal dari matriks kuadrat yang diberikan. Namun, jika Anda mengubah urutan baris dan kolom kode sumber solusi Anda, itu seharusnya menjadi program atau fungsi yang mengembalikan antidiagonal matriks. Baca terus untuk spesifik ...
Aturan
- Kode sumber solusi Anda dianggap sebagai grid karakter 2D, dipisahkan oleh baris baru standar pilihan Anda (linefeed, carriage return, atau kombinasi keduanya).
Tidak ada baris dalam kode sumber Anda yang lebih panjang dari yang sebelumnya. Berikut adalah beberapa contoh tata letak yang valid:
### ### ###
######## ####### ### ### #
Dan berikut adalah contoh tata letak yang tidak valid (karena baris ketiga lebih panjang dari yang kedua):
###### #### ##### ###
Dua solusi Anda harus saling transpos satu sama lain, yaitu Anda harus mendapatkan satu dari yang lain dengan menukar baris dan kolom. Berikut adalah dua pasangan yang valid:
abc def ghi
adg beh cfi
Dan
print 10 (~^_^)~ foo bar !
p(fb! r~oa i^or n_ t^ ) 1~ 0
Perhatikan bahwa spasi diperlakukan seperti karakter lain. Secara khusus, spasi tambahan signifikan karena mereka mungkin bukan spasi tambahan dalam transpos.
Setiap solusi harus berupa program atau fungsi yang menggunakan matriks kuadrat non-kosong dari bilangan bulat tunggal sebagai input. Satu solusi harus menampilkan daftar semua diagonal matriks dan solusi lainnya harus menampilkan daftar semua antidiagonal. Anda dapat menggunakan format input dan output yang masuk akal, tidak ambigu, tetapi keduanya harus identik antara kedua solusi (ini juga berarti keduanya harus merupakan fungsi atau kedua program).
- Setiap diagonal berjalan dari kiri atas ke kanan bawah, dan mereka harus dipesan dari atas ke bawah.
- Setiap antidiagonal berjalan dari kiri bawah ke kanan atas, dan mereka harus dipesan dari atas ke bawah.
Mencetak gol
Untuk mendorong solusi yang "kuadrat" mungkin, skor utama adalah jumlah baris atau jumlah kolom dari solusi Anda, mana yang lebih besar . Lebih sedikit lebih baik. Ikatan dipecah oleh jumlah karakter dalam solusi, tidak termasuk baris baru. Sekali lagi, lebih sedikit lebih baik. Contoh:
abcd
efg
h
Ini dan transposinya akan memiliki skor primer 4 (karena ada 4 kolom) dan skor tie-breaking 8 (karena ada 8 karakter non-baris baru). Harap kutip kedua nilai di tajuk jawaban Anda.
Uji Kasus
Tugas aktual yang dilakukan oleh dua solusi seharusnya tidak menjadi tantangan utama di sini, tetapi berikut adalah dua contoh untuk membantu Anda menguji solusi Anda:
Input:
1 2 3
4 5 6
7 8 9
Diagonals:
3
2 6
1 5 9
4 8
7
Antidiagonals:
1
4 2
7 5 3
8 6
9
Input:
1 0 1 0
0 1 0 1
1 0 1 0
0 1 0 1
Diagonals:
0
1 1
0 0 0
1 1 1 1
0 0 0
1 1
0
Antidiagonals:
1
0 0
1 1 1
0 0 0 0
1 1 1
0 0
1