Moved Day1 to Day1.cs and called it from Program.cs
parent
f3d7d0649d
commit
d3ec82e9f8
|
@ -0,0 +1,76 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Advent24
|
||||||
|
{
|
||||||
|
internal class Day1
|
||||||
|
{
|
||||||
|
public Day1()
|
||||||
|
{
|
||||||
|
string fileData = System.IO.File.ReadAllText(@"..\..\..\inputd1.txt");
|
||||||
|
var pairsArray = fileData.Split('\n');
|
||||||
|
|
||||||
|
var list1 = new SortedList<Int32, Int32>(pairsArray.Length);
|
||||||
|
var list2 = new SortedList<Int32, Int32>(pairsArray.Length);
|
||||||
|
foreach (var pair in pairsArray)
|
||||||
|
{
|
||||||
|
if (System.String.IsNullOrEmpty(pair)) continue;
|
||||||
|
// pairArray has 4 elements, and the middle two are blanks
|
||||||
|
// because there are 3 spaces between the two numbers
|
||||||
|
var pairArray = pair.Split(' ');
|
||||||
|
Int32 myInteger = System.Convert.ToInt32(pairArray[0]);
|
||||||
|
if (list1.TryGetValue(myInteger, out int value1)) list1[myInteger] = ++value1;
|
||||||
|
else list1.Add(myInteger, 1);
|
||||||
|
Console.WriteLine("{0:d} {1:d}", myInteger, list1[myInteger]);
|
||||||
|
|
||||||
|
myInteger = System.Convert.ToInt32(pairArray[3]);
|
||||||
|
if (list2.TryGetValue(myInteger, out int value2)) list2[myInteger] = ++value2;
|
||||||
|
else list2.Add(myInteger, 1);
|
||||||
|
Console.WriteLine("{0:d} {1:d}", myInteger, list2[myInteger]);
|
||||||
|
}
|
||||||
|
|
||||||
|
Int32 sumOfDifferences = 0;
|
||||||
|
Int32 i = 0, j = 0;
|
||||||
|
|
||||||
|
var list1Copy = new SortedList<Int32, Int32>(list1);
|
||||||
|
var list2Copy = new SortedList<Int32, Int32>(list2);
|
||||||
|
|
||||||
|
while (i < list1.Count && j < list2.Count)
|
||||||
|
{
|
||||||
|
Int32 value1 = list1.GetKeyAtIndex(i);
|
||||||
|
Int32 value2 = list2.GetKeyAtIndex(j);
|
||||||
|
|
||||||
|
if (value1 > value2) sumOfDifferences += (value1 - value2);
|
||||||
|
else sumOfDifferences += (value2 - value1);
|
||||||
|
|
||||||
|
list1[value1]--; list2[value2]--;
|
||||||
|
|
||||||
|
if (list1[value1] == 0) i++;
|
||||||
|
if (list2[value2] == 0) j++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.WriteLine("{0:s} {1:d}", "Sum of differences = ", sumOfDifferences);
|
||||||
|
|
||||||
|
i = 0; Int32 similarityScore = 0;
|
||||||
|
while (i < list1Copy.Count)
|
||||||
|
{
|
||||||
|
Int32 value1 = list1Copy.GetKeyAtIndex(i);
|
||||||
|
list2Copy.TryGetValue(value1, out Int32 numberOfAppearancesInList2);
|
||||||
|
|
||||||
|
// default value of Int32 numberOfAppearancesInList2 is 0
|
||||||
|
similarityScore += value1 * numberOfAppearancesInList2;
|
||||||
|
|
||||||
|
list1Copy[value1]--;
|
||||||
|
|
||||||
|
if (list1Copy[value1] == 0) i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.WriteLine("{0:s} {1:d}", "Similarity score = ", similarityScore);
|
||||||
|
|
||||||
|
Console.ReadLine();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,67 +7,7 @@ namespace Advent24
|
||||||
{
|
{
|
||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
string fileData = System.IO.File.ReadAllText(@"..\..\..\inputd1.txt");
|
_ = new Day1();
|
||||||
var pairsArray = fileData.Split('\n');
|
|
||||||
|
|
||||||
var list1 = new SortedList<Int32, Int32>(pairsArray.Length);
|
|
||||||
var list2 = new SortedList<Int32, Int32>(pairsArray.Length);
|
|
||||||
foreach(var pair in pairsArray)
|
|
||||||
{
|
|
||||||
if (System.String.IsNullOrEmpty(pair)) continue;
|
|
||||||
// pairArray has 4 elements, and the middle two are blanks
|
|
||||||
// because there are 3 spaces between the two numbers
|
|
||||||
var pairArray = pair.Split(' ');
|
|
||||||
Int32 myInteger = System.Convert.ToInt32(pairArray[0]);
|
|
||||||
if (list1.TryGetValue(myInteger, out int value1)) list1[myInteger] = ++value1;
|
|
||||||
else list1.Add(myInteger, 1);
|
|
||||||
Console.WriteLine("{0:d} {1:d}", myInteger, list1[myInteger]);
|
|
||||||
|
|
||||||
myInteger = System.Convert.ToInt32(pairArray[3]);
|
|
||||||
if (list2.TryGetValue(myInteger, out int value2)) list2[myInteger] = ++value2;
|
|
||||||
else list2.Add(myInteger, 1);
|
|
||||||
Console.WriteLine("{0:d} {1:d}", myInteger, list2[myInteger]);
|
|
||||||
}
|
|
||||||
|
|
||||||
Int32 sumOfDifferences = 0;
|
|
||||||
Int32 i = 0, j = 0;
|
|
||||||
|
|
||||||
var list1Copy = new SortedList<Int32, Int32>(list1);
|
|
||||||
var list2Copy = new SortedList<Int32, Int32>(list2);
|
|
||||||
|
|
||||||
while (i < list1.Count && j < list2.Count)
|
|
||||||
{
|
|
||||||
Int32 value1 = list1.GetKeyAtIndex(i);
|
|
||||||
Int32 value2 = list2.GetKeyAtIndex(j);
|
|
||||||
|
|
||||||
if (value1 > value2) sumOfDifferences += (value1 - value2);
|
|
||||||
else sumOfDifferences += (value2 - value1);
|
|
||||||
|
|
||||||
list1[value1]--; list2[value2]--;
|
|
||||||
|
|
||||||
if (list1[value1] == 0) i++;
|
|
||||||
if (list2[value2] == 0) j++;
|
|
||||||
}
|
|
||||||
|
|
||||||
Console.WriteLine("{0:s} {1:d}", "Sum of differences = ", sumOfDifferences);
|
|
||||||
|
|
||||||
i = 0; Int32 similarityScore = 0;
|
|
||||||
while (i < list1Copy.Count)
|
|
||||||
{
|
|
||||||
Int32 value1 = list1Copy.GetKeyAtIndex(i);
|
|
||||||
list2Copy.TryGetValue(value1, out Int32 numberOfAppearancesInList2);
|
|
||||||
|
|
||||||
// default value of Int32 numberOfAppearancesInList2 is 0
|
|
||||||
similarityScore += value1 * numberOfAppearancesInList2;
|
|
||||||
|
|
||||||
list1Copy[value1]--;
|
|
||||||
|
|
||||||
if (list1Copy[value1] == 0) i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
Console.WriteLine("{0:s} {1:d}", "Similarity score = ", similarityScore);
|
|
||||||
|
|
||||||
Console.ReadLine();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue