public int[] GetAvailableMoves(int start, int[][] data, MovingRules moveType) { int hop = (int)moveType; List <int> possibleMoves = new List <int>(); for (int iOuter = 0; iOuter < data.Length; iOuter++) { if (data[iOuter].Contains(start)) { for (int iInner = 0; iInner < data[iOuter].Length; iInner++) { // find the position of the starting element if (data[iOuter][iInner] == start) { int posNextInner = iInner + hop, posNextOuter = iOuter + hop, posPrevInner = iInner - hop, posPrevOuter = iOuter - hop; if (posNextOuter == data.Length) { posNextOuter = 0; } if (posPrevOuter < 0) { posPrevOuter = iOuter + data[iOuter].Length - hop; } if (posNextInner == data[iOuter].Length) { posNextInner = 0; } if (posPrevInner < 0) { posPrevInner = iInner + data[iOuter].Length - hop; } possibleMoves.Add(data[iOuter][posNextInner]); possibleMoves.Add(data[iOuter][posPrevInner]); possibleMoves.Add(data[posNextOuter][iInner]); possibleMoves.Add(data[posPrevOuter][iInner]); break; } } break; } else { continue; } } return(possibleMoves.ToArray()); }
/// <summary> /// generate a given length of numbers randomize by moving position rules from input /// </summary> /// <param name="input">multi dimensional array input</param> /// <param name="startNumber">to begin</param> /// <param name="randomGeneratorLength">like 7 or 5</param> /// <param name="moveRule">1</param> /// <returns></returns> public int[] Randomize(int[][] input, int startNumber, int randomGeneratorLength, MovingRules moveRule) { int[] randomSequence = new int[randomGeneratorLength]; int counter = 0; randomSequence[counter++] = startNumber; do { } while (counter < randomGeneratorLength); return(randomSequence); }