vonko1988

c#Angry_Bits

Apr 29th, 2014
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 13.58 KB | None | 0 0
  1. using System;
  2.  
  3. class AngryBits
  4. {
  5.     static void Main()
  6.     {
  7.         int n0 = int.Parse(Console.ReadLine());
  8.         int n1 = int.Parse(Console.ReadLine());
  9.         int n2 = int.Parse(Console.ReadLine());
  10.         int n3 = int.Parse(Console.ReadLine());
  11.         int n4 = int.Parse(Console.ReadLine());
  12.         int n5 = int.Parse(Console.ReadLine());
  13.         int n6 = int.Parse(Console.ReadLine());
  14.         int n7 = int.Parse(Console.ReadLine());
  15.  
  16.         int[,] startArray = new int[8, 16];
  17.  
  18.         //Now we will fill the matrix with the given bits
  19.  
  20.         int strLength = 0;
  21.         int remainLength = 0;
  22.         string remainStr = "";
  23.  
  24.         //zero row
  25.         string n0inBits = Convert.ToString(n0, 2);
  26.         strLength = n0inBits.Length;
  27.  
  28.         if (strLength < 16)
  29.         {
  30.             remainLength = 16 - strLength;
  31.             remainStr = new string('0', remainLength);
  32.             n0inBits = remainStr + n0inBits;
  33.         }
  34.  
  35.         char[] n0inCharArr = n0inBits.ToCharArray();
  36.  
  37.         for (int i = 0; i < 16; i++)
  38.         {
  39.             startArray[0, i] = int.Parse(n0inCharArr[i].ToString());
  40.         }
  41.  
  42.         //first row
  43.         string n1inBits = Convert.ToString(n1, 2);
  44.         strLength = n1inBits.Length;
  45.  
  46.         if (strLength < 16)
  47.         {
  48.             remainLength = 16 - strLength;
  49.             remainStr = new string('0', remainLength);
  50.             n1inBits = remainStr + n1inBits;
  51.         }
  52.  
  53.         char[] n1inCharArr = n1inBits.ToCharArray();
  54.  
  55.         for (int i = 0; i < 16; i++)
  56.         {
  57.             startArray[1, i] = int.Parse(n1inCharArr[i].ToString());
  58.         }
  59.  
  60.         //second row
  61.         string n2inBits = Convert.ToString(n2, 2);
  62.         strLength = n2inBits.Length;
  63.  
  64.         if (strLength < 16)
  65.         {
  66.             remainLength = 16 - strLength;
  67.             remainStr = new string('0', remainLength);
  68.             n2inBits = remainStr + n2inBits;
  69.         }
  70.  
  71.         char[] n2inCharArr = n2inBits.ToCharArray();
  72.  
  73.         for (int i = 0; i < 16; i++)
  74.         {
  75.             startArray[2, i] = int.Parse(n2inCharArr[i].ToString());
  76.         }
  77.  
  78.         //third row
  79.         string n3inBits = Convert.ToString(n3, 2);
  80.         strLength = n3inBits.Length;
  81.  
  82.         if (strLength < 16)
  83.         {
  84.             remainLength = 16 - strLength;
  85.             remainStr = new string('0', remainLength);
  86.             n3inBits = remainStr + n3inBits;
  87.         }
  88.  
  89.         char[] n3inCharArr = n3inBits.ToCharArray();
  90.  
  91.         for (int i = 0; i < 16; i++)
  92.         {
  93.             startArray[3, i] = int.Parse(n3inCharArr[i].ToString());
  94.         }
  95.  
  96.         //forth row
  97.         string n4inBits = Convert.ToString(n4, 2);
  98.         strLength = n4inBits.Length;
  99.  
  100.         if (strLength < 16)
  101.         {
  102.             remainLength = 16 - strLength;
  103.             remainStr = new string('0', remainLength);
  104.             n4inBits = remainStr + n4inBits;
  105.         }
  106.  
  107.         char[] n4inCharArr = n4inBits.ToCharArray();
  108.  
  109.         for (int i = 0; i < 16; i++)
  110.         {
  111.             startArray[4, i] = int.Parse(n4inCharArr[i].ToString());
  112.         }
  113.  
  114.         //fifth row
  115.         string n5inBits = Convert.ToString(n5, 2);
  116.         strLength = n5inBits.Length;
  117.  
  118.         if (strLength < 16)
  119.         {
  120.             remainLength = 16 - strLength;
  121.             remainStr = new string('0', remainLength);
  122.             n5inBits = remainStr + n5inBits;
  123.         }
  124.  
  125.         char[] n5inCharArr = n5inBits.ToCharArray();
  126.  
  127.         for (int i = 0; i < 16; i++)
  128.         {
  129.             startArray[5, i] = int.Parse(n5inCharArr[i].ToString());
  130.         }
  131.  
  132.         //sixth row
  133.         string n6inBits = Convert.ToString(n6, 2);
  134.         strLength = n6inBits.Length;
  135.  
  136.         if (strLength < 16)
  137.         {
  138.             remainLength = 16 - strLength;
  139.             remainStr = new string('0', remainLength);
  140.             n6inBits = remainStr + n6inBits;
  141.         }
  142.  
  143.         char[] n6inCharArr = n6inBits.ToCharArray();
  144.  
  145.         for (int i = 0; i < 16; i++)
  146.         {
  147.             startArray[6, i] = int.Parse(n6inCharArr[i].ToString());
  148.         }
  149.  
  150.         //seventh row
  151.         string n7inBits = Convert.ToString(n7, 2);
  152.         strLength = n7inBits.Length;
  153.  
  154.         if (strLength < 16)
  155.         {
  156.             remainLength = 16 - strLength;
  157.             remainStr = new string('0', remainLength);
  158.             n7inBits = remainStr + n7inBits;
  159.         }
  160.  
  161.         char[] n7inCharArr = n7inBits.ToCharArray();
  162.  
  163.         for (int i = 0; i < 16; i++)
  164.         {
  165.             startArray[7, i] = int.Parse(n7inCharArr[i].ToString());
  166.         }
  167.  
  168.         //Now we will throw the birds
  169.         int center = 7;
  170.         string direction = "topLeft";
  171.         int x = 0;
  172.         int y = 0;
  173.         int flightCounter = 0;
  174.         int numberHitPigs = 0;
  175.         int points = 0;
  176.  
  177.         for (int j = center; j >= 0; j--)
  178.         {
  179.             for (int i = 0; i < 8; i++)
  180.             {
  181.                 if (startArray[i, j] == 1)
  182.                 {
  183.                     //here the bird will start flying
  184.                     y = i;
  185.                     x = j;
  186.                     flightCounter = 0;
  187.                     direction = "topLeft";
  188.  
  189.                     while (true)
  190.                     {
  191.                         switch (direction)
  192.                         {
  193.                             case "topLeft":
  194.                                 if (y > 0 && x < 15)
  195.                                 {
  196.                                     x++;
  197.                                     y--;
  198.                                     flightCounter++;
  199.                                 }
  200.                                 else
  201.                                 {
  202.                                     x++;
  203.                                     y++;
  204.                                     flightCounter++;
  205.                                     direction = "bottomRight";
  206.                                 }
  207.                                 break;
  208.  
  209.                             case "bottomRight":
  210.                                 if (y < 7 && x < 15)
  211.                                 {
  212.                                     x++;
  213.                                     y++;
  214.                                     flightCounter++;
  215.                                 }
  216.                                 else
  217.                                 {
  218.                                     x++;
  219.                                     y--;
  220.                                     direction = "topLeft";
  221.                                 }
  222.                                 break;
  223.                                
  224.                         }
  225.  
  226.                         if (startArray[y, x] == 1 && x > 7)
  227.                         {
  228.                             numberHitPigs = 1;
  229.                             startArray[y, x] = 0;
  230.  
  231.                             if (y >= 1 && y <= 6 && x >center + 1 && x <= 14)
  232.                             {
  233.                                 for (int k = y - 1; k < (y - 1 + 3); k++)
  234.                                 {
  235.                                     for (int m = x - 1; m < (x - 1 + 3); m++)
  236.                                     {
  237.                                         if (startArray[k, m] == 1)
  238.                                         {
  239.                                             numberHitPigs++;
  240.                                             startArray[k, m] = 0;
  241.                                         }
  242.                                     }
  243.                                 }
  244.                             }
  245.                             else if (y == 0 && x >center + 1 && x <= 14)
  246.                             {
  247.                                 for (int k = y; k <= (y + 2); k++)
  248.                                 {
  249.                                     for (int m = x - 1; m < (x - 1 + 3); m++)
  250.                                     {
  251.                                         if (startArray[k, m] == 1)
  252.                                         {
  253.                                             numberHitPigs++;
  254.                                             startArray[k, m] = 0;
  255.                                         }
  256.                                     }
  257.                                 }
  258.                             }
  259.                             else if (y == 7 && x > center + 1 && x <= 14)
  260.                             {
  261.                                 for (int k = y - 1; k < (y - 1 + 2); k++)
  262.                                 {
  263.                                     for (int m = x - 1; m < (x - 1 + 3); m++)
  264.                                     {
  265.                                         if (startArray[k, m] == 1)
  266.                                         {
  267.                                             numberHitPigs++;
  268.                                             startArray[k, m] = 0;
  269.                                         }
  270.                                     }
  271.                                 }
  272.                             }
  273.                             else if (y == 0 && x == center + 1)
  274.                             {
  275.                                 for (int k = y; k < y+2; k++)
  276.                                 {
  277.                                     for (int m = x; m < x+2; m++)
  278.                                     {
  279.                                         if (startArray[k, m] == 1)
  280.                                         {
  281.                                             numberHitPigs++;
  282.                                             startArray[k, m] = 0;
  283.                                         }
  284.                                     }
  285.                                 }
  286.                             }
  287.                             else if (y == 7 && x == center + 1)
  288.                             {
  289.                                 for (int k = y - 1; k < y+2; k++)
  290.                                 {
  291.                                     for (int m = x; m < x+2; m++)
  292.                                     {
  293.                                         if (startArray[k, m] == 1)
  294.                                         {
  295.                                             numberHitPigs++;
  296.                                             startArray[k, m] = 0;
  297.                                         }
  298.                                     }
  299.                                 }
  300.                             }
  301.                             else if (y == 0 && x == 15)
  302.                             {                                
  303.                                 for (int k = y; k < (y + 2); k++)
  304.                                 {
  305.                                     for (int m = x - 1; m < (x - 1 + 2); m++)
  306.                                     {
  307.                                         if (startArray[k, m] == 1)
  308.                                         {
  309.                                             numberHitPigs++;
  310.                                             startArray[k, m] = 0;
  311.                                         }
  312.                                     }
  313.                                 }
  314.                             }
  315.                             else if (y == 7 && x == 15)
  316.                             {
  317.                                 for (int k = y-1; k < (y -1 + 2); k++)
  318.                                 {
  319.                                     for (int m = x - 1; m < (x - 1 + 2); m++)
  320.                                     {
  321.                                         if (startArray[k, m] == 1)
  322.                                         {
  323.                                             numberHitPigs++;
  324.                                             startArray[k, m] = 0;
  325.                                         }
  326.                                     }
  327.                                 }
  328.                             }
  329.                             else if (y >= 1 && y <= 6 && x == center + 1)
  330.                             {
  331.                                 for (int k = y - 1; k < (y - 1 + 3); k++)
  332.                                 {
  333.                                     for (int m = x; m < (x+2); m++)
  334.                                     {
  335.                                         if (startArray[k, m] == 1)
  336.                                         {
  337.                                             numberHitPigs++;
  338.                                             startArray[k, m] = 0;
  339.                                         }
  340.                                     }
  341.                                 }
  342.                             }
  343.                             else if (y >= 1 && y <= 6 && x == 15)
  344.                             {
  345.                                 for (int k = y - 1; k < (y - 1 + 3); k++)
  346.                                 {
  347.                                     for (int m = x - 1; m < (x - 1 + 2); m++)
  348.                                     {
  349.                                         if (startArray[k, m] == 1)
  350.                                         {
  351.                                             numberHitPigs++;
  352.                                             startArray[k, m] = 0;
  353.                                         }
  354.                                     }
  355.                                 }
  356.                             }
  357.  
  358.                             points += flightCounter * numberHitPigs;
  359.                             break;
  360.                         }
  361.                     }
  362.                 }
  363.             }
  364.         }
  365.  
  366.         //now we check if the player won
  367.  
  368.         string win = "Yes";
  369.  
  370.         for (int j = center + 1; j <= 15; j++)
  371.         {
  372.             for (int i = 0; i <8; i++)
  373.             {
  374.                 if (startArray[i, j] == 1)
  375.                 {
  376.                     win = "No";
  377.                 }
  378.             }
  379.         }
  380.  
  381.         Console.WriteLine(points + " " + win);
  382.     }
  383. }
Advertisement
Add Comment
Please, Sign In to add comment