using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ArrayFunctions2 { class Program { static void Main(string[] args) { int[] A = new int[16]; A.Comment("Test1").LineFeed().Initialize(0, 1).RandomShuffle().ShowConsole(); return; } } static class ArrayFunction { public static T[] Initialize(this T[] Array, T Value) { for (int i = 0; i < Array.Count(); i++) { Array[i] = Value; } return Array; } public static T[] Initialize(this T[] Array, T Value, dynamic Step) { for (int i = 0; i < Array.Count(); i++) { Array[i] = Value + (Step * i); } return Array; } public static T[] ShowConsole(this T[] Array, int LineFeed = 8, int Pad = 2, char Sepalator = ',') { string ShowString = string.Format(@"{0}0, {2}{1}{3}", '{', '}', Pad, Sepalator); for (int i = 0; i < Array.Count(); i++) { Console.Write(ShowString, Array[i], Sepalator); if (i % LineFeed == (LineFeed - 1)) Console.WriteLine(); } return Array; } public static T[] Filter(this T[] Array, Func Action) { Queue Q = new Queue(); for (int i = 0; i < Array.Count(); i++) { if (Action(Array[i]) == true) Q.Enqueue(Array[i]); } return Q.ToArray(); } public static T[] Swap(this T[] Array, int PosA, int PosB) { T Temp = Array[PosA]; Array[PosA] = Array[PosB]; Array[PosB] = Temp; return Array; } public static T[] Sort(this T[] Array, Func Action) { for (int i = 0; i < Array.Count(); i++) { for (int j = i + 1; j < Array.Count(); j++) { if (Action(Array[i], Array[j]) == true) Array.Swap(i, j); } } return Array; } public static T[] RandomShuffle(this T[] Array) { Random Rnd = new Random(); for (int i = 0; i < Array.Count(); i++) { Array.Swap(i, Rnd.Next(0, Array.Length - 1)); } return Array; } public static T[] LineFeed(this T[] Array) { Console.WriteLine(); return Array; } public static T[] Comment(this T[] Array, string Comment) { Console.Write(Comment); return Array; } public static T[] MinMax(this T[] Array, Func MaxAction) { T Max = Array[0]; T Min = Array[0]; for (int i = 0; i < Array.Count(); i++) { if (MaxAction(Max, Array[i]) == true) Max = Array[i]; if (MaxAction(Min, Array[i]) == false) Min = Array[i]; } return new T[2] { Min, Max }; } public static int Counter(this T[] Array, Func Action, T Value) { int Count = 0; for (int i = 0; i < Array.Count(); i++) { if (Action(Value, Array[i]) == true) Count++; } return Count; } } }