Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- class AngryBits
- {
- public static int[,] matrix = new int[8, 16];
- static void PrintMatrix()
- {
- for (int i = 0; i < 8; i++)
- {
- for (int j = 0; j < 16; j++)
- {
- string print = (j == 7) ? (matrix[i, j] + "|") : (matrix[i, j] + " ");
- Console.Write(print);
- }
- Console.WriteLine();
- }
- Console.WriteLine();
- }
- public static int Shoot(int birdRow, int birdCol)
- {
- int path = 0;
- bool pigFound = false;
- int upDownMark = -1;
- while (!pigFound)
- {
- if ((birdRow > 0) || (birdRow == 0 & birdCol == 0))
- {
- birdRow += upDownMark;
- birdCol++;
- path++;
- if (birdCol > 7 && matrix[birdRow, birdCol] == 1)
- {
- pigFound = true;
- KillPigs(birdRow, birdCol);
- }
- else if ((birdCol == 15 && matrix[birdRow, birdCol] == 0) || (birdCol > 7 && birdRow == 7))
- {
- break;
- }
- else
- {
- continue;
- }
- }
- else
- {
- upDownMark = 1;
- birdRow += upDownMark;
- birdCol++;
- path++;
- if (birdCol > 7 && matrix[birdRow, birdCol] == 1)
- {
- pigFound = true;
- KillPigs(birdRow, birdCol);
- }
- else if ((birdCol == 15 && matrix[birdRow, birdCol] == 0) || (birdCol > 7 && birdRow == 7))
- {
- break;
- }
- else
- {
- continue;
- }
- }
- }
- return path;
- }
- public static void KillPigs(int birdRow, int birdCol)
- {
- matrix[birdRow, birdCol] = 0;
- if (birdRow == 0)
- {
- if (birdCol == 15)
- {
- matrix[birdRow, birdCol - 1] = 0;
- matrix[birdRow + 1, birdCol] = 0;
- }
- else if (birdCol == 8)
- {
- matrix[birdRow, birdCol + 1] = 0;
- matrix[birdRow + 1, birdCol] = 0;
- matrix[birdRow + 1, birdCol + 1] = 0;
- }
- else
- {
- matrix[birdRow, birdCol + 1] = 0;
- matrix[birdRow, birdCol - 1] = 0;
- matrix[birdRow + 1, birdCol - 1] = 0;
- matrix[birdRow + 1, birdCol] = 0;
- matrix[birdRow + 1, birdCol + 1] = 0;
- }
- }
- else if (birdRow == 7)
- {
- if (birdCol == 15)
- {
- matrix[birdRow, birdCol - 1] = 0;
- matrix[birdRow - 1, birdCol] = 0;
- }
- else if (birdCol == 8)
- {
- matrix[birdRow, birdCol + 1] = 0;
- matrix[birdRow - 1, birdCol] = 0;
- matrix[birdRow - 1, birdCol + 1] = 0;
- }
- else
- {
- matrix[birdRow, birdCol + 1] = 0;
- matrix[birdRow, birdCol - 1] = 0;
- matrix[birdRow - 1, birdCol - 1] = 0;
- matrix[birdRow - 1, birdCol] = 0;
- matrix[birdRow - 1, birdCol + 1] = 0;
- }
- }
- else
- {
- if (birdCol == 15)
- {
- matrix[birdRow + 1, birdCol] = 0;
- matrix[birdRow + 1, birdCol - 1] = 0;
- matrix[birdRow, birdCol - 1] = 0;
- matrix[birdRow - 1, birdCol] = 0;
- matrix[birdRow - 1, birdCol - 1] = 0;
- }
- else if (birdCol == 8)
- {
- matrix[birdRow, birdCol + 1] = 0;
- matrix[birdRow - 1, birdCol] = 0;
- matrix[birdRow + 1, birdCol] = 0;
- matrix[birdRow - 1, birdCol + 1] = 0;
- matrix[birdRow + 1, birdCol + 1] = 0;
- }
- else
- {
- matrix[birdRow, birdCol + 1] = 0;
- matrix[birdRow, birdCol - 1] = 0;
- matrix[birdRow - 1, birdCol - 1] = 0;
- matrix[birdRow - 1, birdCol] = 0;
- matrix[birdRow - 1, birdCol + 1] = 0;
- matrix[birdRow + 1, birdCol - 1] = 0;
- matrix[birdRow + 1, birdCol] = 0;
- matrix[birdRow + 1, birdCol + 1] = 0;
- }
- }
- }
- public static int CountPigs()
- {
- int pigsCount = 0;
- for (int i = 0; i < 8; i++)
- {
- for (int j = 8; j < 16; j++)
- {
- pigsCount += matrix[i, j];
- }
- }
- return pigsCount;
- }
- static void Main()
- {
- int score = 0;
- //read input data
- string[] arr = new string[8];
- for (int i = 0; i < 8; i++)
- {
- arr[i] = Convert.ToString(int.Parse(Console.ReadLine()), 2).PadLeft(16, '0');
- for (int j = 0; j < 16; j++)
- {
- matrix[i, j] = arr[i][j] - '0';
- }
- }
- //PrintMatrix();
- bool foundBird = false;
- int birdRow = 0;
- int birdCol = 0;
- for (int j = 7; j >= 0; j--)
- {
- for (int i = 0; i < 8; i++) //find bird to shoot
- {
- if (matrix[i, j] == 1)
- {
- birdRow = i;
- birdCol = j;
- foundBird = true;
- break;
- }
- }
- if (foundBird)
- {
- //Console.WriteLine("X={0} Y={1}", birdRow, birdCol); // show coordinates of bird
- int scorePreshoot = CountPigs();
- //Console.WriteLine("Current pigs: {0}", CountPigs());
- score += Shoot(birdRow, birdCol) * (scorePreshoot - CountPigs());
- foundBird = false;
- matrix[birdRow, birdCol] = 0;
- //PrintMatrix();
- //Console.WriteLine("Current score: {0}", score);
- }
- }
- //check and print final result
- string checkWin;
- checkWin = ((CountPigs() == 0) ? "Yes" : "No");
- Console.WriteLine("{0} {1}", score, checkWin);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement