Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace Problem_2___Sneaking
- {
- using System;
- using System.Linq;
- public class Program
- {
- public static void Main()
- {
- var size = int.Parse(Console.ReadLine());
- var board = new char[size][];
- for (int row = 0; row < size; row++)
- {
- var currentLine = Console.ReadLine();
- board[row] = new char[currentLine.Length];
- for (int col = 0; col < board[row].Length; col++)
- {
- board[row][col] = currentLine[col];
- }
- }
- var directions = Console.ReadLine();
- var samRow = 0;
- var samCol = 0;
- var nicoladzeRow = 0;
- var nicoladzeCol = 0;
- for (int row = 0; row < board.Length; row++)
- {
- for (int col = 0; col < board[row].Length; col++)
- {
- if (board[row][col] == 'S')
- {
- samRow = row;
- samCol = col;
- break;
- }
- if (board[row][col] == 'N')
- {
- nicoladzeRow = row;
- nicoladzeCol = col;
- break;
- }
- }
- }
- bool samIsDead = false;
- bool nicoladzeIsDead = false;
- for (int i = 0; i < directions.Length; i++)
- {
- var currentDirection = directions[i];
- for (int moovingRow = 0; moovingRow < board.Length; moovingRow++)
- {
- for (int moovingCol = 0; moovingCol < board[moovingRow].Length; moovingCol++)
- {
- if (board[moovingRow][moovingCol] == 'b' && !samIsDead && !nicoladzeIsDead)
- {
- if (moovingRow == samRow && moovingCol < samCol)
- {
- samIsDead = true;
- board[samRow][samCol] = 'X';
- }
- else
- {
- if (moovingCol == board[moovingRow].Length - 1)
- {
- board[moovingRow][moovingCol] = 'd';
- if (samRow == moovingRow)
- {
- samIsDead = true;
- board[samRow][samCol] = 'X';
- break;
- }
- }
- else
- {
- board[moovingRow][moovingCol] = '.';
- board[moovingRow][moovingCol + 1] = 'b';
- break;
- }
- }
- }
- if (board[moovingRow][moovingCol] == 'd' && !samIsDead && !nicoladzeIsDead)
- {
- if (moovingRow == samRow && moovingCol > samCol)
- {
- samIsDead = true;
- board[samRow][samCol] = 'X';
- break;
- }
- else
- {
- if (moovingCol == 0)
- {
- board[moovingRow][moovingCol] = 'b';
- if (samRow == moovingRow)
- {
- samIsDead = true;
- board[samRow][samCol] = 'X';
- }
- break;
- }
- else
- {
- board[moovingRow][moovingCol] = '.';
- board[moovingRow][moovingCol - 1] = 'd';
- break;
- }
- }
- }
- }
- if (samIsDead == true || nicoladzeIsDead == true)
- {
- break;
- }
- }
- if (samIsDead == true || nicoladzeIsDead == true)
- {
- break;
- }
- switch (currentDirection)
- {
- case 'U':
- samRow--;
- board[samRow + 1][samCol] = '.';
- board[samRow][samCol] = 'S';
- if (nicoladzeRow == samRow)
- {
- nicoladzeIsDead = true;
- board[nicoladzeRow][nicoladzeCol] = 'X';
- }
- break;
- case 'D':
- samRow++;
- board[samRow][samCol] = 'S';
- board[samRow - 1][samCol] = '.';
- if (samRow == nicoladzeRow)
- {
- nicoladzeIsDead = true;
- board[nicoladzeRow][nicoladzeCol] = 'X';
- break;
- }
- break;
- case 'L':
- board[samRow][samCol] = '.';
- samCol -= 1;
- board[samRow][samCol] = 'S';
- break;
- case 'R':
- board[samRow][samCol] = '.';
- samCol += 1;
- board[samRow][samCol] = 'S';
- break;
- case 'W':
- break;
- }
- }
- if (samIsDead)
- {
- Console.WriteLine($"Sam died at {samRow}, {samCol}");
- PrintTheBoard(size, board);
- }
- else if (nicoladzeIsDead)
- {
- Console.WriteLine("Nikoladze killed!");
- PrintTheBoard(size, board);
- }
- }
- public static void PrintTheBoard(int size, char[][] board)
- {
- for (int row = 0; row < size; row++)
- {
- Console.WriteLine(string.Join(string.Empty, board[row]));
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement