Advertisement
ralka

04. Trifon's Quest

Jun 13th, 2016
63
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.30 KB | None
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. class TrifonsQuest
  8. {
  9.     static void Main(string[] args)
  10.     {
  11.         long healthPoints = long.Parse(Console.ReadLine());
  12.         int[] size = Console.ReadLine()
  13.             .Split()
  14.             .Select(int.Parse)
  15.             .ToArray();
  16.  
  17.         int rows = size[0];
  18.         int cols = size[1];
  19.         char[][] map = FillMap(rows, cols);
  20.  
  21.         StartQuest(map, rows, cols, healthPoints);
  22.     }
  23.    
  24.  
  25.     private static void StartQuest(char[][] map, int rows, int cols, long healthPoints)
  26.     {
  27.         uint turns = 0;
  28.         bool alive = true;
  29.         int deadRow = -1;
  30.         int deadCol = -1;
  31.         for (int col = 0; col < cols; col++)
  32.         {
  33.             if (col % 2 == 0)
  34.             {
  35.                 for (int row = 0; row < rows; row++)
  36.                 {
  37.                     char cell = map[row][col];
  38.                     switch (cell)
  39.                     {
  40.                         case 'F': healthPoints -= turns / 2; break;
  41.                         case 'H': healthPoints += turns / 3; break;
  42.                         case 'T': turns += 2; break;
  43.                         case 'E': break;
  44.                     }
  45.                     if (healthPoints <= 0)
  46.                     {
  47.                         deadRow = row;
  48.                         deadCol = col;
  49.                         alive = false;
  50.                         break;
  51.                     }
  52.                     turns++;
  53.                 }
  54.                 if (!alive)
  55.                 {
  56.                     break;
  57.                 }                
  58.             }
  59.             else
  60.             {
  61.                 for (int row = rows - 1; row >= 0; row--)
  62.                 {
  63.                     char cell = map[row][col];
  64.                     switch (cell)
  65.                     {
  66.                         case 'F': healthPoints -= turns / 2; break;
  67.                         case 'H': healthPoints += turns / 3; break;
  68.                         case 'T': turns += 2; break;
  69.                         case 'E': break;
  70.                     }
  71.                     if (healthPoints <= 0)
  72.                     {
  73.                         deadRow = row;
  74.                         deadCol = col;
  75.                         alive = false;
  76.                         break;
  77.                     }
  78.                     turns++;
  79.                 }
  80.                 if (!alive)
  81.                 {
  82.                     break;
  83.                 }
  84.             }
  85.         }
  86.  
  87.         PrintResults(deadRow, deadCol, healthPoints, turns);
  88.     }
  89.  
  90.     private static void PrintResults(int deadRow, int deadCol, long healthPoints, uint turns)
  91.     {
  92.         if (deadRow == -1 && deadCol == -1)
  93.         {
  94.             Console.WriteLine("Quest completed!");
  95.             Console.WriteLine($"Health: {healthPoints}");
  96.             Console.WriteLine($"Turns: {turns}");
  97.         }
  98.         else
  99.         {
  100.             Console.WriteLine($"Died at: [{deadRow}, {deadCol}]");
  101.         }
  102.     }
  103.    
  104.     private static char[][] FillMap(int rows, int cols)
  105.     {
  106.         char[][] map = new char[rows][];
  107.  
  108.         for (int row = 0; row < rows; row++)
  109.         {
  110.             map[row] = Console.ReadLine().ToCharArray();
  111.         }
  112.  
  113.         return map;
  114.     }
  115. }
Advertisement
RAW Paste Data Copied
Advertisement