Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ExamPreparation
- {
- class Program
- {
- static void Main(string[] args)
- {
- PrintHelenAbduction();
- }
- private static void PrintHelenAbduction()
- {
- int energy = int.Parse(Console.ReadLine());
- int numberOfRows = int.Parse(Console.ReadLine());
- var matrix = new char[numberOfRows, numberOfRows];
- int rowHelen = 0;
- int colHelen = 0;
- int rowParis = 0;
- int colParis = 0;
- for (int i = 0; i < matrix.GetLength(0); i++)
- {
- var input = Console.ReadLine().Trim();
- for (int j = 0; j < matrix.GetLength(1); j++)
- {
- matrix[i, j] = input[j];
- }
- }
- for (int i = 0; i < matrix.GetLength(0); i++)
- {
- for (int j = 0; j < matrix.GetLength(1); j++)
- {
- if (matrix[i, j] == 'H')
- {
- rowHelen = i;
- colHelen = j;
- }
- if (matrix[i, j] == 'P')
- {
- rowParis = i;
- colParis = j;
- }
- }
- }
- while (true)
- {
- var commanda = Console.ReadLine().Split(new char[] {' ' },StringSplitOptions.RemoveEmptyEntries).ToArray();
- var moves = commanda[0]?.ToLower();
- var rowSpartan = int.Parse(commanda[1]);
- var colSpartan = int.Parse(commanda[2]);
- if (Inside(matrix, rowSpartan, colSpartan))
- {
- matrix[rowSpartan, colSpartan] = 'S';
- }
- energy--;
- if (moves == "up" && (Inside(matrix, rowParis - 1, colParis)))
- {
- if (matrix[rowParis - 1, colParis ] == 'H')
- {
- Console.WriteLine($"Paris has successfully abducted Helen! Energy left: {energy}");
- matrix[rowParis, colParis] = '-';
- matrix[rowHelen, colHelen] = '-';
- PrintMatrix(matrix);
- return;
- }
- else if (matrix[rowParis - 1, colParis] == 'S')
- {
- energy -= 2;
- matrix[rowParis - 1, colParis] = 'P';
- matrix[rowParis, colParis] = '-';
- rowParis--;
- if (energy <= 0)
- {
- ParisDeid(matrix,rowParis, colParis);
- return;
- }
- }
- else if (matrix[rowParis - 1, colParis] == '-')
- {
- matrix[rowParis - 1, colParis] = 'P';
- matrix[rowParis, colParis] = '-';
- rowParis--;
- if (energy <= 0)
- {
- ParisDeid(matrix, rowParis, colParis);
- return;
- }
- }
- }
- if (moves == "down" && (Inside(matrix, rowParis+1, colParis )))
- {
- if (matrix[rowParis+1, colParis] == 'H')
- {
- Console.WriteLine($"Paris has successfully abducted Helen! Energy left: {energy}");
- matrix[rowParis, colParis] = '-';
- matrix[rowHelen, colHelen] = '-';
- PrintMatrix(matrix);
- return;
- }
- else if (matrix[rowParis + 1, colParis] == 'S')
- {
- energy -= 2;
- matrix[rowParis + 1, colParis] = 'P';
- matrix[rowParis, colParis] = '-';
- rowParis++;
- if (energy <= 0)
- {
- ParisDeid(matrix, rowParis, colParis);
- return;
- }
- }
- else if (matrix[rowParis + 1, colParis] == '-')
- {
- matrix[rowParis + 1, colParis] = 'P';
- matrix[rowParis, colParis] = '-';
- rowParis++;
- if (energy <= 0)
- {
- ParisDeid(matrix, rowParis, colParis);
- return;
- }
- }
- }
- if (moves == "left" && (Inside(matrix, rowParis , colParis-1)))
- {
- if (matrix[rowParis , colParis-1] == 'H')
- {
- Console.WriteLine($"Paris has successfully abducted Helen! Energy left: {energy}");
- matrix[rowParis, colParis] = '-';
- matrix[rowHelen, colHelen] = '-';
- PrintMatrix(matrix);
- return;
- }
- else if (matrix[rowParis , colParis-1] == 'S')
- {
- energy -= 2;
- matrix[rowParis, colParis - 1] = 'P';
- matrix[rowParis, colParis] = '-';
- colParis--;
- if (energy <= 0)
- {
- ParisDeid(matrix, rowParis, colParis);
- return;
- }
- }
- else if (matrix[rowParis , colParis-1] == '-')
- {
- matrix[rowParis, colParis - 1] = 'P';
- matrix[rowParis, colParis] = '-';
- colParis--;
- if (energy <= 0)
- {
- ParisDeid(matrix, rowParis, colParis);
- return;
- }
- }
- }
- if (moves == "right" && (Inside(matrix, rowParis, colParis - 1)))
- {
- if (matrix[rowParis, colParis + 1] == 'H')
- {
- Console.WriteLine($"Paris has successfully abducted Helen! Energy left: {energy}");
- matrix[rowParis, colParis] = '-';
- matrix[rowHelen, colHelen] = '-';
- PrintMatrix(matrix);
- return;
- }
- else if (matrix[rowParis, colParis + 1] == 'S')
- {
- energy -= 2;
- matrix[rowParis, colParis + 1] = 'P';
- matrix[rowParis, colParis] = '-';
- colParis++;
- if (energy <= 0)
- {
- ParisDeid(matrix, rowParis, colParis);
- return;
- }
- }
- else if (matrix[rowParis, colParis + 1] == '-')
- {
- matrix[rowParis, colParis + 1] = 'P';
- matrix[rowParis, colParis] = '-';
- colParis++;
- if (energy <=0)
- {
- ParisDeid(matrix, rowParis, colParis);
- return;
- }
- }
- }
- }
- }
- private static void PrintMatrix(char[,] matrix)
- {
- for (int i = 0; i < matrix.GetLength(0); i++)
- {
- for (int j = 0; j < matrix.GetLength(1); j++)
- {
- Console.Write(matrix[i,j]);
- }
- Console.WriteLine();
- }
- }
- private static void ParisDeid(char[,] matrix, int rowParis, int colParis)
- {
- matrix[rowParis , colParis] = 'X';
- Console.WriteLine($"Paris died at {rowParis};{colParis}.");
- for (int i = 0; i < matrix.GetLength(0); i++)
- {
- for (int j = 0; j < matrix.GetLength(1); j++)
- {
- Console.Write(matrix[i, j]);
- }
- Console.WriteLine();
- }
- return;
- }
- private static bool Inside(char[,] matrix, int rowParis, int colParis)
- {
- return rowParis < matrix.GetLength(0) && rowParis >= 0
- && colParis < matrix.GetLength(1) && colParis >= 0;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement