Part 1 181206 working

This commit is contained in:
2018-12-16 23:15:40 +01:00
parent 0b5083be40
commit 31bfc56ca9

View File

@ -14,47 +14,141 @@ namespace _2018_06
{ {
string[] resTab = File.ReadAllLines(@"..\..\..\Data\Adventofcode_181206\2018_06_data.txt"); string[] resTab = File.ReadAllLines(@"..\..\..\Data\Adventofcode_181206\2018_06_data.txt");
List<Tuple<string, int, int>> koords = new List<Tuple<string, int, int>>(); List<Tuple<string, int, int>> koords = new List<Tuple<string, int, int>>();
Tuple<int, int> tuple = null; Tuple<string, int, int> tuple = null;
int antal = 0;
foreach (string v in resTab) foreach (string v in resTab)
{ {
string[] nums = v.Split(new char[] { ',' }); string[] nums = v.Split(new char[] { ',' });
tuple = Tuple.Create(int.Parse(nums[0]), int.Parse(nums[1])); tuple = Tuple.Create(ChNumber(antal), int.Parse(nums[0]), int.Parse(nums[1]));
koords.Add(tuple); koords.Add(tuple);
antal++;
} }
int points = 0; int points = 0;
int a=0; int a = 0;
int b = 0; int b = 0;
foreach (Tuple<int,int> tp in koords) foreach (Tuple<string, int, int> tp in koords)
{ {
points++; points++;
WriteLine($"point {points}, X: {tp.Item1} Y: {tp.Item2}"); WriteLine($"point {points}, id: {tp.Item1}, X: {tp.Item2} Y: {tp.Item3}");
if (tp.Item1 > a) if (tp.Item2 > a)
{ {
a = tp.Item1; a = tp.Item2;
} }
if (tp.Item2 > b) if (tp.Item3 > b)
{ {
b = tp.Item2; b = tp.Item3;
} }
} }
WriteLine($"max value: {a},{b}"); WriteLine($"max value: {a},{b}");
ReadKey(); ReadKey();
string[,] area = new string[360, 360];
for (int i = 0; i < 360; i++)
{
for (int j = 0; j < 360; j++)
{
int dist = 10000;
foreach (Tuple<string, int, int> tp1 in koords)
{
int part1 = tp1.Item2 - i;
int part2 = tp1.Item3 - j;
int ldist = Math.Abs(part1) + Math.Abs(part2);
if (ldist < dist)
{
dist = ldist;
area[i, j] = tp1.Item1;
}
else
{
if (ldist == dist)
{
area[i, j] = ".";
}
}
}
//Write($" {area[i, j]}");
}
//WriteLine();
}
WriteLine("Skapat avståndsmap");
ReadKey();
SortedSet<string> infinites = new SortedSet<string>();
for (int i = 0; i < 360; i++)
{
try
{
infinites.Add(area[0, i]);
infinites.Add(area[359, i]);
infinites.Add(area[i, 0]);
infinites.Add(area[i, 359]);
}
catch (Exception) { }
}
foreach (var item in infinites)
{
Write($" {item}");
}
WriteLine();
WriteLine("Kontrollerat ytterkanter");
ReadKey();
Dictionary<string, int> areas = new Dictionary<string, int>();
foreach (var item in area)
{
if (infinites.Contains(item))
{ }
else
{
if (areas.Keys.Contains(item))
{
areas[item]++;
}
else areas.Add(item, 1);
}
}
int maxUnits = 0;
string maxArea = "";
foreach(var item in areas.Keys)
{
WriteLine($"{item}= {areas[item]}");
if (areas[item] > maxUnits)
{
maxUnits = areas[item];
maxArea = item;
}
}
WriteLine($"Vinnare {maxArea}= {areas[maxArea]}");
ReadKey();
} }
public string ChNumber(int i) public static string ChNumber(int i)
{ {
const string nbr = "ABCDEFGHIJKLMNOPQRSTUVXYZ"; const string nbr = "ABCDEFGHIJKLMNOPQRSTUVXYZ";
var cnbr = nbr.ToCharArray(); var cnbr = nbr.ToCharArray();
string tmpSvar = ""; string tmpSvar = "";
int a = i / 24;
int b = i - a * 24;
tmpSvar = cnbr[a].ToString() + cnbr[b].ToString();
return tmpSvar; return tmpSvar;
} }