Advertisement
Guest User

Ascending Spiral w/o Bonus

a guest
Jun 21st, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.98 KB | None | 0 0
  1. namespace AscendingSpiral
  2. {
  3.     public class Spiral
  4.     {
  5.         private enum Direction
  6.         {
  7.             Up,
  8.             Down,
  9.             Left,
  10.             Right
  11.         }
  12.  
  13.         public enum Rotation
  14.         {
  15.             Clockwise,
  16.             Counterclockewise
  17.         }
  18.  
  19.         private int spiralNum { get; set; }
  20.         private Rotation rotation { get; set; }
  21.         private int[,] spiralArray { get; set; }
  22.  
  23.         public Spiral(int numberToSpiral, Rotation rotation)
  24.         {
  25.             spiralNum = numberToSpiral;
  26.             spiralArray = new int[spiralNum, spiralNum];
  27.             this.rotation = rotation;
  28.             CreateSpiral();
  29.         }
  30.  
  31.         private void CreateSpiral()
  32.         {
  33.             var X = 0;
  34.             var Y = 0;
  35.             var curNum = 1;
  36.             var rightBound = spiralNum - 1;
  37.             var downBound = spiralNum - 1;
  38.             var leftBound = 0;
  39.             var upBound = 0;
  40.             Direction curDirection = rotation == Rotation.Clockwise ? Direction.Right : Direction.Down;
  41.            
  42.             while (curNum <= spiralNum * spiralNum)
  43.             {
  44.                 if (curDirection == Direction.Right)
  45.                 {
  46.                     spiralArray[X, Y] = curNum;
  47.  
  48.                     if (Y == rightBound)
  49.                     {
  50.                         curDirection = Direction.Down;
  51.                         X++;
  52.                         rightBound--;
  53.                     }
  54.                     else
  55.                     {
  56.                         Y++;
  57.                     }
  58.  
  59.                     curNum++;
  60.                     continue;
  61.                 }
  62.                
  63.                 if (curDirection == Direction.Down)
  64.                 {
  65.                     spiralArray[X, Y] = curNum;
  66.  
  67.                     if (X == downBound)
  68.                     {
  69.                         curDirection = Direction.Left;
  70.                         Y--;
  71.                         downBound--;
  72.                     }
  73.                     else
  74.                     {
  75.                         spiralArray[X, Y] = curNum;
  76.                         X++;
  77.                     }
  78.  
  79.                     curNum++;
  80.                     continue;
  81.                 }
  82.  
  83.                 if (curDirection == Direction.Left)
  84.                 {
  85.                     spiralArray[X, Y] = curNum;
  86.  
  87.                     if (Y == leftBound)
  88.                     {
  89.                         curDirection = Direction.Up;
  90.                         X--;
  91.                         leftBound++;
  92.                     }
  93.                     else
  94.                     {
  95.                         Y--;
  96.                     }
  97.  
  98.                     curNum++;
  99.                     continue;
  100.                 }
  101.  
  102.                 if (curDirection == Direction.Up)
  103.                 {
  104.                     if (X == upBound)
  105.                     {
  106.                         curDirection = Direction.Right;
  107.                         X++;
  108.                         Y++;
  109.                         spiralArray[X, Y] = curNum;
  110.                         upBound++;
  111.                         Y++;
  112.                     }
  113.                     else
  114.                     {
  115.                         spiralArray[X, Y] = curNum;
  116.                         X--;
  117.                     }
  118.  
  119.                     curNum++;
  120.                     continue;
  121.                 }
  122.             }
  123.         }
  124.        
  125.         public void PrintSpiral()
  126.         {
  127.             Console.WriteLine("--------------------------------------------------");
  128.             for (int i = 0; i < spiralNum; i++)
  129.             {
  130.                 for (int j = 0; j < spiralNum; j++)
  131.                 {
  132.                     if(spiralNum > 10)
  133.                         Console.Write(String.Format("{0,5}", spiralArray[i, j].ToString()));
  134.                     else
  135.                         Console.Write(String.Format("{0,3}", spiralArray[i, j].ToString()));
  136.                 }
  137.                 Console.WriteLine();
  138.             }
  139.         }
  140.     }
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement