Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Diagnostics;
- namespace UlamSpiral
- {
- class Program
- {
- static long[,] spiralArray = new long[10,10];
- static char[] direction = new char []{ 'W', 'S', 'E', 'N' };
- static long arrDimension = spiralArray.GetUpperBound(0)+1;
- static long squaresToFillOnEachSide = 0;
- static long colIdx = arrDimension, rowIdx = 0;
- static long lastNumber = arrDimension * arrDimension;
- static void Main(string[] args)
- {
- Stopwatch sw = new Stopwatch();
- sw.Start();
- while (arrDimension > 1)
- {
- squaresToFillOnEachSide = arrDimension - 1;
- for (int i = 0; i < 4; i++)
- {
- for (int j = 0; j < squaresToFillOnEachSide; j++)
- {
- if (direction[i] == 'W') { colIdx -= 1; }
- else if (direction[i] == 'S') { rowIdx += 1; }
- else if (direction[i] == 'E') { colIdx += 1; }
- else if (direction[i] == 'N') { rowIdx -= 1; }
- spiralArray[rowIdx,colIdx]=lastNumber--;
- }
- if (direction[i] == 'W') {colIdx -= 1; rowIdx -= 1;}
- else if (direction[i] == 'S') {rowIdx += 1; colIdx -= 1;}
- else if (direction[i] == 'E') {colIdx += 1; rowIdx += 1;}
- }
- arrDimension -= 2;
- }
- sw.Stop();
- //>0 means the center box is not filled and is def on to the left
- //move towars west on the same row and place the last element
- if (arrDimension > 0 && lastNumber>0)
- {
- spiralArray[rowIdx, colIdx-1] = lastNumber--;
- }
- for (int i = 0; i <= spiralArray.GetUpperBound(0); i++)
- {
- for (int j = 0; j <= spiralArray.GetUpperBound(0); j++)
- {
- Console.Write(spiralArray[i, j] + " ");
- }
- Console.WriteLine();
- }
- Console.ReadLine();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement