تمرین: آرایههای تو در تو
آرایه ها می توانند آرایه های دیگری نیز داشته باشند:
نوع این متغیر چیست؟
از آرایهای مشابه مثال بالا برای نوشتن تابع
transpose
استفاده کنید که یک ماتریس را جابجا میکند (ردیفها را به ستونها تبدیل میکند):
کد زیر را در https://play.rust-lang.org/ کپی کرده و توابع را پیادهسازی کنید:
// TODO: این را زمانی که پیادهسازیتان تمام شد حذف کنید.
#![allow(unused_variables, dead_code)]
fn transpose(matrix: [[i32; 3]; 3]) -> [[i32; 3]; 3] {
unimplemented!()
}
#[test]
fn test_transpose() {
let matrix = [
[101, 102, 103], //
[201, 202, 203],
[301, 302, 303],
];
let transposed = transpose(matrix);
assert_eq!(
transposed,
[
[101, 201, 301], //
[102, 202, 302],
[103, 203, 303],
]
);
}
fn main() {
let matrix = [
[101, 102, 103], // <-- این کامنت باعث میشود rustfmt یک خط جدید اضافه کند.
[201, 202, 203],
[301, 302, 303],
];
println!("matrix: {:#?}", matrix);
let transposed = transpose(matrix);
println!("جابجا شده است: {:#?}", transposed);
}