mirror of
https://github.com/ckaczor/Advent2019.git
synced 2026-01-13 17:22:15 -05:00
Day 10 - Part 1
This commit is contained in:
60
Day10/Day10.cs
Normal file
60
Day10/Day10.cs
Normal file
@@ -0,0 +1,60 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
||||
namespace Advent
|
||||
{
|
||||
public static class Day10
|
||||
{
|
||||
public static void Execute()
|
||||
{
|
||||
var lines = File.ReadAllLines(@".\Day10\input.txt");
|
||||
|
||||
var y = 0;
|
||||
|
||||
var asteroids = new List<Tuple<int, int>>();
|
||||
|
||||
foreach (var line in lines)
|
||||
{
|
||||
var x = 0;
|
||||
|
||||
foreach (var cell in line.ToCharArray())
|
||||
{
|
||||
if (cell == '#')
|
||||
asteroids.Add(new Tuple<int, int>(x, y));
|
||||
|
||||
x++;
|
||||
}
|
||||
|
||||
y++;
|
||||
}
|
||||
|
||||
var bestLocation = new Tuple<int, int>(-1, -1);
|
||||
var bestCount = 0;
|
||||
|
||||
foreach (var potentialAsteroid in asteroids)
|
||||
{
|
||||
var angles = new HashSet<double>();
|
||||
|
||||
foreach (var asteroid in asteroids)
|
||||
{
|
||||
if (asteroid.Equals(potentialAsteroid))
|
||||
continue;
|
||||
|
||||
var angle = Math.Atan2(asteroid.Item2 - potentialAsteroid.Item2, asteroid.Item1 - potentialAsteroid.Item1);
|
||||
|
||||
if (!angles.Contains(angle))
|
||||
angles.Add(angle);
|
||||
}
|
||||
|
||||
if (angles.Count > bestCount)
|
||||
{
|
||||
bestCount = angles.Count;
|
||||
bestLocation = potentialAsteroid;
|
||||
}
|
||||
}
|
||||
|
||||
Console.WriteLine($"{bestLocation.Item1},{bestLocation.Item2} = {bestCount}");
|
||||
}
|
||||
}
|
||||
}
|
||||
26
Day10/input.txt
Normal file
26
Day10/input.txt
Normal file
@@ -0,0 +1,26 @@
|
||||
.##.#.#....#.#.#..##..#.#.
|
||||
#.##.#..#.####.##....##.#.
|
||||
###.##.##.#.#...#..###....
|
||||
####.##..###.#.#...####..#
|
||||
..#####..#.#.#..#######..#
|
||||
.###..##..###.####.#######
|
||||
.##..##.###..##.##.....###
|
||||
#..#..###..##.#...#..####.
|
||||
....#.#...##.##....#.#..##
|
||||
..#.#.###.####..##.###.#.#
|
||||
.#..##.#####.##.####..#.#.
|
||||
#..##.#.#.###.#..##.##....
|
||||
#.#.##.#.##.##......###.#.
|
||||
#####...###.####..#.##....
|
||||
.#####.#.#..#.##.#.#...###
|
||||
.#..#.##.#.#.##.#....###.#
|
||||
.......###.#....##.....###
|
||||
#..#####.#..#..##..##.#.##
|
||||
##.#.###..######.###..#..#
|
||||
#.#....####.##.###....####
|
||||
..#.#.#.########.....#.#.#
|
||||
.##.#.#..#...###.####..##.
|
||||
##...###....#.##.##..#....
|
||||
..##.##.##.#######..#...#.
|
||||
.###..#.#..#...###..###.#.
|
||||
#..#..#######..#.#..#..#.#
|
||||
Reference in New Issue
Block a user