1 次元配列の回転
1 次元配列を回転するサンプルです。
using System; using System.Collections.Generic; using System.Linq; class Program { static T[] Rotate<T>(T[] xs, int n) { var ret = new T[xs.Length]; if (ret.Length == 0) return ret; int m = n % ret.Length; for (int i = 0; i < ret.Length; i++) { ret[i] = xs[m++]; if (m == ret.Length) m = 0; } return ret; } static void Main() { var xs = Enumerable.Range(1, 5).ToArray(); for (int i = 0; i < 7; i++) { var ys = Rotate(xs, i); Console.WriteLine(string.Join(" ", ys)); } } }
実行結果です。
1 2 3 4 5 2 3 4 5 1 3 4 5 1 2 4 5 1 2 3 5 1 2 3 4 1 2 3 4 5 2 3 4 5 1