Pendahuluan
Memutar array dua dimensi, atau matriks, adalah masalah umum dalam pemrograman yang dapat muncul di berbagai aplikasi, terutama dalam grafik komputer dan manipulasi data. Dalam posting blog ini, kita akan membahas proses memutar matriks 4x4 sebesar 90 derajat searah jarum jam.
Memahami Masalah
Bayangkan Anda memiliki array dua dimensi yang terstruktur seperti ini:
[1][2][3][4]
[5][6][7][8]
[9][0][1][2]
[3][4][5][6]
Setelah memutar matriks ini 90 derajat searah jarum jam, itu harus berubah menjadi:
[3][9][5][1]
[4][0][6][2]
[5][1][7][3]
[6][2][8][4]
Dalam istilah praktis, setiap elemen dalam array asli berpindah ke posisi baru berdasarkan rotasi. Tetapi bagaimana kita menerapkannya dalam bahasa pemrograman seperti C#? Mari kita pecahkan ini langkah demi langkah.
Solusi
Langkah 1: Inisialisasi Matriks
Pertama, kita perlu menginisialisasi matriks dalam program kita. Berikut adalah cara melakukannya:
int[,] array = new int[4,4] {
{ 1,2,3,4 },
{ 5,6,7,8 },
{ 9,0,1,2 },
{ 3,4,5,6 }
};
Langkah 2: Buat Fungsi untuk Memutar Matriks
Selanjutnya, kita akan membuat suatu fungsi yang disebut RotateMatrix
yang melakukan rotasi yang diperlukan. Fungsi ini akan mengambil matriks asli dan ukurannya sebagai parameter dan mengembalikan matriks yang telah diputar.
Berikut adalah implementasi dari fungsi RotateMatrix
:
static int[,] RotateMatrix(int[,] matrix, int n) {
int[,] ret = new int[n, n];
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
ret[i, j] = matrix[n - j - 1, i];
}
}
return ret;
}
Langkah 3: Penjelasan Fungsi
- Deklarasi Matriks: Kita mendeklarasikan matriks baru
ret
dengan ukuran yang sama dengan input. - Loop Bersarang: Kita menggunakan loop bersarang untuk traverse melalui setiap elemen matriks.
- Logika Rotasi: Untuk setiap elemen pada posisi
(i, j)
, kita memetakan ke posisi baru(j, n - i - 1)
. Rumus ini membantu dalam memutar elemen dengan benar sebesar 90 derajat searah jarum jam.
Langkah 4: Menguji Fungsi
Anda dapat menguji fungsi dengan memanggilnya dan mencetak matriks yang telah diputar:
int[,] rotated = RotateMatrix(array, 4);
Pastikan Anda juga menerapkan metode untuk mencetak matriks sebagai verifikasi.
Kesimpulan
Memutar array dua dimensi adalah tugas yang sederhana setelah Anda memahami pemetaan indeks. Sementara pendekatan saat ini berjalan dalam kompleksitas waktu O(n^2), mengoptimalkan algoritma untuk matriks yang lebih besar (seperti 10000x10000) adalah pembahasan yang terus berlanjut dalam algoritma dan struktur data.
Sekarang Anda dapat dengan percaya diri memutar array dua dimensi apa pun di C#. Selamat coding!