Advertisement
wnvko

FormulaBit

Nov 27th, 2013
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.18 KB | None | 0 0
  1. namespace FormulaBit1
  2. {
  3.     using System;
  4.  
  5.     class FormulaBit1
  6.     {
  7.         static void Main()
  8.         {
  9.             int[] inputNumber = new int[8];
  10.             for (int i = 0; i < 8; i++)
  11.             {
  12.                 inputNumber[i] = int.Parse(Console.ReadLine());
  13.             }
  14.  
  15.             int column = 0;
  16.             int row = 0;
  17.             int mask = 1;
  18.             int trackLenght = 1;
  19.             int directionChange = 0;
  20.             bool weHaveTrack = false;
  21.  
  22.             while (true)
  23.             {
  24.                 if (inputNumber[0] % 2 == 1)
  25.                 {
  26.                     trackLenght--;
  27.                     break;
  28.                 }
  29.                 //move to the south
  30.                 MoveToSouth(inputNumber, column, ref row, mask, ref trackLenght, ref weHaveTrack);
  31.                 if (weHaveTrack)
  32.                     {
  33.                         break;
  34.                     }
  35.                 row--;
  36.                 trackLenght--;
  37.                 if (((column + 1) > 7) || (inputNumber[row] & (mask << (column + 1))) != 0)
  38.                 {
  39.                     break;
  40.                 }
  41.                 directionChange++;
  42.  
  43.                 //move to the west
  44.                 MoveToTheWest(inputNumber, ref column, row, mask, ref trackLenght, ref weHaveTrack);
  45.                 if (weHaveTrack)
  46.                     {
  47.                         break;
  48.                     }
  49.                 column--;
  50.                 trackLenght--;
  51.                 if (((row - 1) < 0) || (inputNumber[row - 1] & (mask << column)) != 0)
  52.                 {
  53.                     break;
  54.                 }
  55.                 directionChange++;
  56.  
  57.                 //move to the north
  58.                 MoveToTheNorth(inputNumber, column, ref row, mask, ref trackLenght, ref weHaveTrack);
  59.                 if (weHaveTrack)
  60.                     {
  61.                         break;
  62.                     }
  63.                 row++;
  64.                 trackLenght--;
  65.                 if (((column + 1) > 7) || (inputNumber[row] & (mask << (column + 1))) != 0)
  66.                 {
  67.                     break;
  68.                 }
  69.  
  70.                 directionChange++;
  71.  
  72.                 //move to the west
  73.                 MoveToTheWest(inputNumber, ref column, row, mask, ref trackLenght, ref weHaveTrack);
  74.                 if (weHaveTrack)
  75.                 {
  76.                     break;
  77.                 }
  78.                 column--;
  79.                 trackLenght--;
  80.                 if (((row + 1) > 7) || (inputNumber[row + 1] & (mask << column)) != 0)
  81.                 {
  82.                     break;
  83.                 }
  84.                 directionChange++;
  85.             }
  86.  
  87.             //output
  88.             if (weHaveTrack)
  89.             {
  90.                 Console.WriteLine(trackLenght + " " + directionChange);
  91.             }
  92.             else
  93.             {
  94.                 Console.WriteLine("No {0}", trackLenght);
  95.             }
  96.         }
  97.  
  98.         private static void MoveToTheNorth(int[] inputNumber, int column, ref int row, int mask, ref int trackLenght, ref bool weHaveTrack)
  99.         {
  100.             while (true)
  101.             {
  102.                 int maskToAply = mask << column;
  103.                 if ((row < 0) || ((inputNumber[row] & maskToAply) != 0))
  104.                 {
  105.                     break;
  106.                 }
  107.                 else
  108.                 {
  109.                     row--;
  110.                     trackLenght++;
  111.                 }
  112.                 if ((column == 7) && (row == 7))
  113.                 {
  114.                     weHaveTrack = true;
  115.                     break;
  116.                 }
  117.             }
  118.         }
  119.  
  120.         private static void MoveToTheWest(int[] inputNumber, ref int column, int row, int mask, ref int trackLenght, ref bool weHaveTrack)
  121.         {
  122.             while (true)
  123.             {
  124.                 int maskToAply = mask << column;
  125.                 if ((column > 7) || ((inputNumber[row] & maskToAply) != 0))
  126.                 {
  127.                     break;
  128.                 }
  129.                 else
  130.                 {
  131.                     column++;
  132.                     trackLenght++;
  133.                 }
  134.                 if ((column == 7) && (row == 7))
  135.                 {
  136.                     weHaveTrack = true;
  137.                     break;
  138.                 }
  139.             }
  140.         }
  141.  
  142.         private static void MoveToSouth(int[] inputNumber, int column, ref int row, int mask, ref int trackLenght, ref bool weHaveTrack)
  143.         {
  144.             while (true)
  145.             {
  146.                 int maskToAply = mask << column;
  147.                 if ((row > 7) || ((inputNumber[row] & maskToAply) != 0))
  148.                 {
  149.                     break;
  150.                 }
  151.                 else
  152.                 {
  153.                     row++;
  154.                     trackLenght++;
  155.                 }
  156.                 if ((column == 7) && (row == 7))
  157.                 {
  158.                     weHaveTrack = true;
  159.                     break;
  160.                 }
  161.             }
  162.         }
  163.     }
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement