Saya telah menulis beberapa tantangan terkait dengan matriks, dan yang umum untuk semua adalah bahwa saya menggunakan format seperti di bawah ini ketika mewakili matriks, baik dalam contoh maupun dalam kasus uji:
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Ini mungkin format yang rumit dalam banyak bahasa.
Tantangan:
Tulis program / fungsi yang dapat mengambil matriks pada formulir yang diberikan di atas sebagai input (langsung salin / tempel dari posting ini), dan output matriks yang sama pada ketiga format konvensional lainnya yang ditunjukkan di bawah ini .
Format input:
Angka dipisahkan oleh jumlah ruang yang bervariasi, dan baris baru untuk mewakili baris (lihat kasus uji).
- Jumlah spasi antar angka tidak dijamin konsisten. Namun Anda dapat mengasumsikan bahwa digit terakhir di setiap kolom sejajar (jika itu membantu).
- Mungkin ada bilangan bulat dan mengapung, dan mereka bisa positif, negatif atau nol. Matriks tidak akan berisi bilangan bulat dan mengapung pada saat yang bersamaan.
- Anda dapat berasumsi bahwa tidak ada angka yang lebih panjang dari 10 karakter, termasuk titik minus dan desimal untuk pelampung negatif.
- Anda dapat mengasumsikan bahwa ada jumlah entri yang sama di setiap baris dan di setiap kolom.
- Tidak akan ada matriks input kosong, tetapi bisa ada angka tunggal, atau matriks dengan hanya satu baris atau kolom.
- Anda mungkin dalam kasus ini memilih antara format output yang ditunjukkan dalam kasus uji
Program / fungsi Anda harus menangani input jika langsung disalin dari pos ini dan ditempelkan ke penerjemah (STDIN atau sebagai argumen fungsi atau sesuatu yang setara). Anda mungkin memiliki apa pun yang Anda suka (tanda kurung, tanda kutip, tanda kurung) di depan, dan / atau setelah matriks, tetapi Anda harus mempertimbangkan matriks urutan karakter yang tidak dapat diubah (yang termasuk baris baru).
Untuk memperjelas: Asumsikan fungsi / program Anda dipanggil f
dan matriksnya adalah:
1 -2
3 5
6 7
maka Anda dapat memberikan matriks sebagai argumen fungsi seperti ini (dan banyak pilihan lainnya):
f(1 -2
3 5
6 7)
f([1 -2
3 5
6 7])
f("""1 -2
3 5
6 7""")
Jika bahasa Anda tidak bisa, dengan cara apa pun, ambil salinan / tempel matriks sebagai masukan maka saya khawatir Anda harus memilih bahasa lain.
Format output:
Anda harus menampilkan matriks pada tiga format berikut (urutan tidak masalah):
[[16, 2, 3, 13], [5, 11, 10, 8], [9, 7, 6, 12], [4, 14, 15, 1]]
{{16, 2, 3, 13}, {5, 11, 10, 8}, {9, 7, 6, 12}, {4, 14, 15, 1}}
[16, 2, 3, 13; 5, 11, 10, 8; 9, 7, 6, 12; 4, 14, 15, 1]
- Anda dapat memisahkan tiga output sesuai keinginan Anda (mis. Baris baru)
- Anda harus menampilkan angka menggunakan presisi yang sama dengan input (misalnya, Anda tidak boleh memangkas jumlah desimal, atau output integer sebagai pelampung).
- Ruang-ruang tersebut wajib
- Anda harus menggunakan
-
angka negatif, bukan_
atau serupa.
Kasus uji:
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
----
[[16, 2, 3, 13], [5, 11, 10, 8], [9, 7, 6, 12], [4, 14, 15, 1]]
{{16, 2, 3, 13}, {5, 11, 10, 8}, {9, 7, 6, 12}, {4, 14, 15, 1}}
[16, 2, 3, 13; 5, 11, 10, 8; 9, 7, 6, 12; 4, 14, 15, 1]
0.14778 0.27114 0.24415
0.45997 0.12287 0.67470
0.28945 0.37928 0.51887
----
[[0.14778, 0.27114, 0.24415], [0.45997, 0.12287, 0.6747], [0.28945, 0.37928, 0.51887]]
{{0.14778, 0.27114, 0.24415}, {0.45997, 0.12287, 0.6747}, {0.28945, 0.37928, 0.51887}}
[0.14778, 0.27114, 0.24415; 0.45997, 0.12287, 0.6747; 0.28945, 0.37928, 0.51887]
-0.0398301 0.2403455 -0.2253368 0.3565870 0.0605803 0.0830780
-0.3254422 -0.1185191 -0.2989537 0.1647319 0.3621135 0.2018815
-0.0022281 -0.3362287 -0.3568447 0.4419063 0.3801872 -0.2847033
---
[[-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780], [-0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815], [-0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033],]
{{-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780}, {-0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815}, {-0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033},}
[-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780; -0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815; -0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033]
0 4 1 0
0 0 -6 0
0 1 4 -3
2 0 0 8
0 0 0 0
----
[[0, 4, 1, 0], [0, 0, -6, 0], [0, 1, 4, -3], [2, 0, 0, 8], [0, 0, 0, 0]]
{{0, 4, 1, 0}, {0, 0, -6, 0}, {0, 1, 4, -3}, {2, 0, 0, 8}, {0, 0, 0, 0}}
[0, 4, 1, 0; 0, 0, -6, 0; 0, 1, 4, -3; 2, 0, 0, 8; 0, 0, 0, 0]
1
----
[1] (or [[1]])
{1} (or {{1}})
[1] (or 1)
1 2
----
[1, 2] (or [[1, 2]])
{1, 2} (or {{1, 2}})
[1, 2]
4
5
----
[[4], [5]]
{{4}, {5}}
[4; 5]
Saya sepenuhnya sadar akan hal ini , tetapi dalam tantangan ini, format I / O yang rumit adalah intinya. Tantangannya adalah tentang memformat output dalam beberapa bahasa, sementara membaca input akan menjadi bagian tersulit dalam bahasa lain.
Tolong jangan berkecil hati jika membaca input sulit, kiriman tersebut mungkin yang paling menarik. Singkat tidak selalu sama dengan mengesankan. Dan seperti biasa, penjelasan didorong!