Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- class AngryBits
- {
- static void Main()
- {
- int n0 = int.Parse(Console.ReadLine());
- int n1 = int.Parse(Console.ReadLine());
- int n2 = int.Parse(Console.ReadLine());
- int n3 = int.Parse(Console.ReadLine());
- int n4 = int.Parse(Console.ReadLine());
- int n5 = int.Parse(Console.ReadLine());
- int n6 = int.Parse(Console.ReadLine());
- int n7 = int.Parse(Console.ReadLine());
- int[,] startArray = new int[8, 16];
- //Now we will fill the matrix with the given bits
- int strLength = 0;
- int remainLength = 0;
- string remainStr = "";
- //zero row
- string n0inBits = Convert.ToString(n0, 2);
- strLength = n0inBits.Length;
- if (strLength < 16)
- {
- remainLength = 16 - strLength;
- remainStr = new string('0', remainLength);
- n0inBits = remainStr + n0inBits;
- }
- char[] n0inCharArr = n0inBits.ToCharArray();
- for (int i = 0; i < 16; i++)
- {
- startArray[0, i] = int.Parse(n0inCharArr[i].ToString());
- }
- //first row
- string n1inBits = Convert.ToString(n1, 2);
- strLength = n1inBits.Length;
- if (strLength < 16)
- {
- remainLength = 16 - strLength;
- remainStr = new string('0', remainLength);
- n1inBits = remainStr + n1inBits;
- }
- char[] n1inCharArr = n1inBits.ToCharArray();
- for (int i = 0; i < 16; i++)
- {
- startArray[1, i] = int.Parse(n1inCharArr[i].ToString());
- }
- //second row
- string n2inBits = Convert.ToString(n2, 2);
- strLength = n2inBits.Length;
- if (strLength < 16)
- {
- remainLength = 16 - strLength;
- remainStr = new string('0', remainLength);
- n2inBits = remainStr + n2inBits;
- }
- char[] n2inCharArr = n2inBits.ToCharArray();
- for (int i = 0; i < 16; i++)
- {
- startArray[2, i] = int.Parse(n2inCharArr[i].ToString());
- }
- //third row
- string n3inBits = Convert.ToString(n3, 2);
- strLength = n3inBits.Length;
- if (strLength < 16)
- {
- remainLength = 16 - strLength;
- remainStr = new string('0', remainLength);
- n3inBits = remainStr + n3inBits;
- }
- char[] n3inCharArr = n3inBits.ToCharArray();
- for (int i = 0; i < 16; i++)
- {
- startArray[3, i] = int.Parse(n3inCharArr[i].ToString());
- }
- //forth row
- string n4inBits = Convert.ToString(n4, 2);
- strLength = n4inBits.Length;
- if (strLength < 16)
- {
- remainLength = 16 - strLength;
- remainStr = new string('0', remainLength);
- n4inBits = remainStr + n4inBits;
- }
- char[] n4inCharArr = n4inBits.ToCharArray();
- for (int i = 0; i < 16; i++)
- {
- startArray[4, i] = int.Parse(n4inCharArr[i].ToString());
- }
- //fifth row
- string n5inBits = Convert.ToString(n5, 2);
- strLength = n5inBits.Length;
- if (strLength < 16)
- {
- remainLength = 16 - strLength;
- remainStr = new string('0', remainLength);
- n5inBits = remainStr + n5inBits;
- }
- char[] n5inCharArr = n5inBits.ToCharArray();
- for (int i = 0; i < 16; i++)
- {
- startArray[5, i] = int.Parse(n5inCharArr[i].ToString());
- }
- //sixth row
- string n6inBits = Convert.ToString(n6, 2);
- strLength = n6inBits.Length;
- if (strLength < 16)
- {
- remainLength = 16 - strLength;
- remainStr = new string('0', remainLength);
- n6inBits = remainStr + n6inBits;
- }
- char[] n6inCharArr = n6inBits.ToCharArray();
- for (int i = 0; i < 16; i++)
- {
- startArray[6, i] = int.Parse(n6inCharArr[i].ToString());
- }
- //seventh row
- string n7inBits = Convert.ToString(n7, 2);
- strLength = n7inBits.Length;
- if (strLength < 16)
- {
- remainLength = 16 - strLength;
- remainStr = new string('0', remainLength);
- n7inBits = remainStr + n7inBits;
- }
- char[] n7inCharArr = n7inBits.ToCharArray();
- for (int i = 0; i < 16; i++)
- {
- startArray[7, i] = int.Parse(n7inCharArr[i].ToString());
- }
- //Now we will throw the birds
- int center = 7;
- string direction = "topLeft";
- int x = 0;
- int y = 0;
- int flightCounter = 0;
- int numberHitPigs = 0;
- int points = 0;
- for (int j = center; j >= 0; j--)
- {
- for (int i = 0; i < 8; i++)
- {
- if (startArray[i, j] == 1)
- {
- //here the bird will start flying
- y = i;
- x = j;
- flightCounter = 0;
- direction = "topLeft";
- while (true)
- {
- switch (direction)
- {
- case "topLeft":
- if (y > 0 && x < 15)
- {
- x++;
- y--;
- flightCounter++;
- }
- else
- {
- x++;
- y++;
- flightCounter++;
- direction = "bottomRight";
- }
- break;
- case "bottomRight":
- if (y < 7 && x < 15)
- {
- x++;
- y++;
- flightCounter++;
- }
- else
- {
- x++;
- y--;
- direction = "topLeft";
- }
- break;
- }
- if (startArray[y, x] == 1 && x > 7)
- {
- numberHitPigs = 1;
- startArray[y, x] = 0;
- if (y >= 1 && y <= 6 && x >center + 1 && x <= 14)
- {
- for (int k = y - 1; k < (y - 1 + 3); k++)
- {
- for (int m = x - 1; m < (x - 1 + 3); m++)
- {
- if (startArray[k, m] == 1)
- {
- numberHitPigs++;
- startArray[k, m] = 0;
- }
- }
- }
- }
- else if (y == 0 && x >center + 1 && x <= 14)
- {
- for (int k = y; k <= (y + 2); k++)
- {
- for (int m = x - 1; m < (x - 1 + 3); m++)
- {
- if (startArray[k, m] == 1)
- {
- numberHitPigs++;
- startArray[k, m] = 0;
- }
- }
- }
- }
- else if (y == 7 && x > center + 1 && x <= 14)
- {
- for (int k = y - 1; k < (y - 1 + 2); k++)
- {
- for (int m = x - 1; m < (x - 1 + 3); m++)
- {
- if (startArray[k, m] == 1)
- {
- numberHitPigs++;
- startArray[k, m] = 0;
- }
- }
- }
- }
- else if (y == 0 && x == center + 1)
- {
- for (int k = y; k < y+2; k++)
- {
- for (int m = x; m < x+2; m++)
- {
- if (startArray[k, m] == 1)
- {
- numberHitPigs++;
- startArray[k, m] = 0;
- }
- }
- }
- }
- else if (y == 7 && x == center + 1)
- {
- for (int k = y - 1; k < y+2; k++)
- {
- for (int m = x; m < x+2; m++)
- {
- if (startArray[k, m] == 1)
- {
- numberHitPigs++;
- startArray[k, m] = 0;
- }
- }
- }
- }
- else if (y == 0 && x == 15)
- {
- for (int k = y; k < (y + 2); k++)
- {
- for (int m = x - 1; m < (x - 1 + 2); m++)
- {
- if (startArray[k, m] == 1)
- {
- numberHitPigs++;
- startArray[k, m] = 0;
- }
- }
- }
- }
- else if (y == 7 && x == 15)
- {
- for (int k = y-1; k < (y -1 + 2); k++)
- {
- for (int m = x - 1; m < (x - 1 + 2); m++)
- {
- if (startArray[k, m] == 1)
- {
- numberHitPigs++;
- startArray[k, m] = 0;
- }
- }
- }
- }
- else if (y >= 1 && y <= 6 && x == center + 1)
- {
- for (int k = y - 1; k < (y - 1 + 3); k++)
- {
- for (int m = x; m < (x+2); m++)
- {
- if (startArray[k, m] == 1)
- {
- numberHitPigs++;
- startArray[k, m] = 0;
- }
- }
- }
- }
- else if (y >= 1 && y <= 6 && x == 15)
- {
- for (int k = y - 1; k < (y - 1 + 3); k++)
- {
- for (int m = x - 1; m < (x - 1 + 2); m++)
- {
- if (startArray[k, m] == 1)
- {
- numberHitPigs++;
- startArray[k, m] = 0;
- }
- }
- }
- }
- points += flightCounter * numberHitPigs;
- break;
- }
- }
- }
- }
- }
- //now we check if the player won
- string win = "Yes";
- for (int j = center + 1; j <= 15; j++)
- {
- for (int i = 0; i <8; i++)
- {
- if (startArray[i, j] == 1)
- {
- win = "No";
- }
- }
- }
- Console.WriteLine(points + " " + win);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment