Advertisement
Guest User

ahmadinigad

a guest
Sep 12th, 2007
452
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.55 KB | None | 0 0
  1. static void Main()
  2. {
  3.     int N = 13, res, first, theNum = 0, index;
  4.     N += 1 - N & 1;
  5.     for ( int i = 0 ; i < N ; i++ )
  6.     {
  7.         for ( int j = 0 ; j < N ; j++ )
  8.         {
  9.             int row = i, col = j;
  10.  
  11.             if ( row > N / 2 )                    // if it's the cottomside of the square
  12.                 row = N - N % 2 - row;           //  make it the top index of the current square
  13.             if ( col > N / 2 )                  //   if it's the right side of the square
  14.                 col = N - N % 2 - col;         //    make it the left inedx of the current square
  15.             res = N / 2 - Math.Min(row, col); //     the index of the current square, the most center is 0.
  16.  
  17.             SetColor(res);                  // make the hole square the same color
  18.  
  19.             if ( res != 0 )
  20.             {
  21.                 index = 1 + 2 * ( res - 1 ); // this is a temp variable...user later simply to save time...
  22.                 first = index * index;      //  calculate the first number in the current square...
  23.             }
  24.             else
  25.             {
  26.                 first = 0;  // the first square, doesn't work with the (continued...)
  27.                 index = 0; //  above calculations so i made them statically...
  28.             }
  29.             if ( index == 0 ) // first square
  30.                 theNum = 0;  //  this is the only numebr in the first square...
  31.             else if ( row == N / 2 - res ) // if this is the top or bottom line of the square...
  32.             {                             //
  33.                 if ( row == i )          //   if this is the top line
  34.                 {
  35.                     theNum = first + index;     // the first number in the top line (most right of it)
  36.                     theNum += N / 2 + res - j; //  plus how much this is lefter than the first number
  37.                 }
  38.                 else                                    // it's the bottom line of the square
  39.                 {                                      //  
  40.                     theNum = first + index + res * 4; //   the first number in the last line (the most left of it)
  41.                     theNum += j + res - N / 2;       //    plus how much to add
  42.                 }
  43.             }
  44.             else                                             // this is a left or right line of the square...
  45.             {                                               //  
  46.                 if ( col == j )                            //   left line...
  47.                 {                                         //
  48.                     theNum = first + index + res * 2;    //     the first number in the line (top)
  49.                     theNum += i - N / 2 + res;          //      plus how much to add
  50.                 }                                      //
  51.                 else                                  //        right side...
  52.                 {                                    //
  53.                     theNum = first;                 //          the first number in the line (bottom)
  54.                     theNum += res + N / 2 - i - 1; //           plus how much to add
  55.                 }                                 //
  56.             }                                    //
  57.             Console.Write("{0,4} ", theNum);
  58.         }
  59.         Console.WriteLine();
  60.     }
  61.     Console.BackgroundColor = ConsoleColor.Black;
  62. }
  63.  
  64. private static void SetColor(int res)
  65. {
  66.     Console.BackgroundColor = (ConsoleColor)res;
  67.     if ( res > 6 )
  68.         Console.ForegroundColor = ConsoleColor.Black;
  69.     else
  70.         Console.ForegroundColor = ConsoleColor.Gray;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement