プログラミングのお題スレ Part22 (831レス)
プログラミングのお題スレ Part22 http://mevius.5ch.net/test/read.cgi/tech/1691038333/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
766: デフォルトの名無しさん [] 2025/06/21(土) 16:41:25.25 ID:muNvYhtO お題 2次元の配列があったときに 一番左上を起点として右上方向、左下方向、右上方向… というふうに斜めに配列の要素をたどることを ジグザグスキャンと名付けます たとえば、3 * 3の配列の場合は次の順番で配列の要素にアクセスします (1, 2, 6) (3, 5, 7) (4, 8, 9) 二次元の配列を入力としてジグザグスキャンを行ってください 結果を1次元の配列として出力してください 例 入力: (A, B, C), (D, E, F), (G, H, I) 出力: (A, B, D, G, E, C, F, H, I) 入力: (A, B, C), (D, E, F) 出力: (A, B, D, E, C, F) 入力: (A, B), (C, D), (E, F) 出力: (A, B, C, E, D, F) http://mevius.5ch.net/test/read.cgi/tech/1691038333/766
767: デフォルトの名無しさん [] 2025/06/21(土) 19:44:57.30 ID:jAwJC0YX >>766 R https://wandbox.org/permlink/JoDE3h6F6k7gKbPs http://mevius.5ch.net/test/read.cgi/tech/1691038333/767
768: デフォルトの名無しさん [sage] 2025/06/21(土) 23:05:10.33 ID:awm9eire >>766 Rust fn f<T: Clone, const M: usize, const N: usize>(input: &[[T; N]; M]) -> Vec<T> { let mut output = Vec::<T>::new(); for x in 0..(M + N - 1) { let start = if x < N { 0 } else { x + 1 - N }; let end = if x < M { x } else { M - 1 }; let iter = (start..=end).map(|m| input[m][x - m].clone()); if x & 1 == 1 { output.extend(iter.clone()); } else { output.extend(iter.rev()); } } output } fn main() { assert_eq!(f(&[['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]), ['A', 'B', 'D', 'G', 'E', 'C', 'F', 'H', 'I']); assert_eq!(f(&[['A', 'B', 'C'], ['D', 'E', 'F']]), ['A', 'B', 'D', 'E', 'C', 'F']); assert_eq!(f(&[['A', 'B'], ['C', 'D'], ['E', 'F']]), ['A', 'B', 'C', 'E', 'D', 'F']); } http://mevius.5ch.net/test/read.cgi/tech/1691038333/768
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.035s