Completed 2015 Day 3
This commit is contained in:
75
2015/Day-03/Day03.cs
Normal file
75
2015/Day-03/Day03.cs
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
class Santa{
|
||||||
|
public int x;
|
||||||
|
public int y;
|
||||||
|
|
||||||
|
public void move(char direction){
|
||||||
|
switch(direction){
|
||||||
|
case '^':
|
||||||
|
this.y++;
|
||||||
|
break;
|
||||||
|
case 'v':
|
||||||
|
this.y--;
|
||||||
|
break;
|
||||||
|
case '>':
|
||||||
|
this.x++;
|
||||||
|
break;
|
||||||
|
case '<':
|
||||||
|
this.x--;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new InvalidDataException("Input did not match expected format!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Program{
|
||||||
|
// Load in the input.
|
||||||
|
static string input = File.ReadAllText(@"input.txt").ToString();
|
||||||
|
|
||||||
|
static int partOne(){
|
||||||
|
Santa santa = new Santa();
|
||||||
|
|
||||||
|
// Put all houses we've delivered to in a list.
|
||||||
|
List<string> delivered = new List<string>();
|
||||||
|
foreach(char direction in input){
|
||||||
|
delivered.Add(santa.x.ToString() + "," + santa.y.ToString());
|
||||||
|
santa.move(direction);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dedupe the list.
|
||||||
|
return(delivered.Distinct().ToList().Count());
|
||||||
|
}
|
||||||
|
|
||||||
|
static int partTwo(){
|
||||||
|
Santa realSanta = new Santa();
|
||||||
|
Santa roboSanta = new Santa();
|
||||||
|
|
||||||
|
// Evry other move, move one set of coordinates and add them to the list.
|
||||||
|
int currentMove = 0;
|
||||||
|
List<string> delivered = new List<string>();
|
||||||
|
|
||||||
|
foreach(char move in input){
|
||||||
|
switch(currentMove%2){
|
||||||
|
case 0:
|
||||||
|
delivered.Add(roboSanta.x.ToString() + "," + roboSanta.y.ToString());
|
||||||
|
roboSanta.move(move);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
delivered.Add(realSanta.x.ToString() + "," + realSanta.y.ToString());
|
||||||
|
realSanta.move(move);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
currentMove++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the deduped list.
|
||||||
|
return(delivered.Distinct().ToList().Count());
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Main(){
|
||||||
|
// Print Answers.
|
||||||
|
Console.WriteLine("Part 1: " + partOne().ToString());
|
||||||
|
Console.WriteLine("Part 2: " + partTwo().ToString());
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user