ivandrofly

Power of Thor

Mar 9th, 2021 (edited)
356
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.29 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.IO;
  4. using System.Text;
  5. using System.Collections;
  6. using System.Collections.Generic;
  7.  
  8. /**
  9.  * Solve this puzzle by writing the shortest code.
  10.  * Whitespaces (spaces, new lines, tabs...) are counted in the total amount of chars.
  11.  * These comments should be burnt after reading!
  12.  **/
  13. class Player
  14. {
  15.     static void Main(string[] args)
  16.     {
  17.         string[] inputs = Console.ReadLine().Split(' ');
  18.         int LX = int.Parse(inputs[0]); // the X position of the light of power
  19.         int LY = int.Parse(inputs[1]); // the Y position of the light of power
  20.         int TX = int.Parse(inputs[2]); // Thor's starting X position
  21.         int TY = int.Parse(inputs[3]); // Thor's starting Y position
  22.  
  23.         int currentX = TX;
  24.         int currentY = TY;
  25.         // game loop
  26.         while (true)
  27.         {
  28.             int remainingTurns = int.Parse(Console.ReadLine()); // The level of Thor's remaining energy, representing the number of moves he can still make.
  29.  
  30.             // Write an action using Console.WriteLine()
  31.             // To debug: Console.Error.WriteLine("Debug messages...");
  32.  
  33.             if (LY == TY && TX > LX) Console.WriteLine("W");
  34.             else if (LY == TY && TX < LX) Console.WriteLine("E");
  35.             else if (TX == LX && TY > LY) Console.WriteLine("N");
  36.             else if (TX == LX && TY < LY) Console.WriteLine("S");
  37.             else if (LX > TX && LY > TX)
  38.             {
  39.  
  40.  
  41.                 // find slope == 1
  42.                 int value = (LY - currentY) / (LX - currentX);
  43.  
  44.                 // if ((LX - TX ) / 2 == currentX)
  45.                 if (value == 1)
  46.                 {
  47.                     Console.WriteLine("SE"); ;
  48.                 }
  49.                 else
  50.                 {
  51.                     Console.WriteLine("E");
  52.                     currentX++;
  53.                 }
  54.             }
  55.             else if (LX < TX)
  56.             {
  57.                 int slope = Math.Abs((LY - currentY) / (LX - currentX));
  58.                 // note: thor Y and light Y won't be == here, so it's safe to use >
  59.                 if (LY > TY)
  60.                 {
  61.                     // int slope = Math.Abs((LY - currentY) / (LX - currentX));
  62.                     if (slope == 1)
  63.                     {
  64.                         Console.WriteLine("SW");
  65.                     }
  66.                     else
  67.                     {
  68.                         Console.WriteLine("W");
  69.                         currentX--;
  70.                     }
  71.                 }
  72.                 else
  73.                 {
  74.                     // todo: handle when slope is < 1
  75.                     // in that case thor must move E 1st
  76.                     if (slope == 1)
  77.                     {
  78.                         Console.WriteLine("NW");
  79.                     }
  80.                     else
  81.                     {
  82.                         Console.WriteLine("W");
  83.                         currentX--;
  84.                     }
  85.                 }
  86.             }
  87.  
  88.             // A single line providing the move to be made: N NE E SE S SW W or NW
  89.             // Console.WriteLine("SE");
  90.             Console.Error.WriteLine($"{currentX}, {currentY}");
  91.  
  92.         }
  93.     }
  94. }
  95.  
  96.  
  97. // NOTE: THIS WILL PASS THE THE TEST IN GAME. BUT THERE ARE SOME CASE THAT NEED TO BE HANDLED. CHECK THE TODO
Add Comment
Please, Sign In to add comment