Tävlingsprogrammering/Uppgifter/Leksaksroboten

Från Wikibooks
Hoppa till navigering Hoppa till sök

Lösning[redigera]

Lösning i c#[redigera]

  using System;
  using System.Collections.Generic;
  namespace problem_4
 {
  
   class Program
   {
       static void Main(string[] args)
       {
           Console.WriteLine("Antal instruktioner ? ");
           int antalInstruktioner = int.Parse(Console.ReadLine());
           object[] inputs = new object[antalInstruktioner];
           for(int i = 0; i < antalInstruktioner; i++)
           {
               Console.WriteLine("Instruktion " + (i + 1) + " ? ");
               inputs[i] = Console.ReadLine();
           }
           int x = 0;
           int y = 0;
           int grader = 0;
           for(int i = 0; i< antalInstruktioner; i++)
           {
               if (inputs[i].ToString() == "H")
               {
                   grader += 90;
               }
               else if(inputs[i].ToString() == "V")
               {
                   grader -= 90;
               }
               else
               {
                   if(grader == 90 || grader == -270)
                   {
                       x += int.Parse(inputs[i].ToString());
                   }
                   else if(grader == 180 || grader == -180)
                   {
                       y -= int.Parse(inputs[i].ToString());
                   }
                   else if(grader == 270 || grader == -90)
                   {
                       x -= int.Parse(inputs[i].ToString());
                   }
                   else if(grader == 0 || grader == 360 || grader == -360)
                   {
                       y += int.Parse(inputs[i].ToString());
                       grader = 0;
                   }
               }
           }
           List<object> outputs = cleanInputs(x, y);
           Console.WriteLine("Ny List :");
           for(int i = 0; i<outputs.Count; i++)
           {
               Console.WriteLine(outputs[i].ToString());
           }
       }
       static List<object> cleanInputs(int x,int y)
       {
           List<object> instruktioner = new List<object>();
           if(y < 0)
           {
               if(x < 0)
               {
                   instruktioner.Add("V");
                   instruktioner.Add(0 - x);
                   instruktioner.Add("V");
                   instruktioner.Add(y*-1);
               }
               else if(x > 0)
               {
                   instruktioner.Add("H");
                   instruktioner.Add(x);
                   instruktioner.Add("H");
                   instruktioner.Add(y*-1);
               }
               else if(x == 0)
               {
                   instruktioner.Add("V");
                   instruktioner.Add("V");
                   instruktioner.Add(y*-1);
               }
           }
           else if(y > 0)
           {
               if(x < 0)
               {
                   instruktioner.Add(y);
                   instruktioner.Add("V");
                   instruktioner.Add(x*-1);
               }
               else if(x > 0)
               {
                   instruktioner.Add(y);
                   instruktioner.Add("H");
                   instruktioner.Add(x);
               }
               else if(x == 0)
               {
                   instruktioner.Add(y);
               }
           }
           else if(y == 0)
           {
               if(x > 0)
               {
                   instruktioner.Add("H");
                   instruktioner.Add(x);
               }
               else if(x < 0)
               {
                   instruktioner.Add("V");
                   instruktioner.Add(x*-1);
               }
              
           }
           return instruktioner;
           
           
       }
       
   }
 }