Moved Day1 to Day1.cs and called it from Program.cs
This commit is contained in:
		
							parent
							
								
									f3d7d0649d
								
							
						
					
					
						commit
						d3ec82e9f8
					
				
							
								
								
									
										76
									
								
								Advent24/Day1.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								Advent24/Day1.cs
									
									
									
									
									
										Normal file
									
								
							@ -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)
 | 
			
		||||
        {
 | 
			
		||||
            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();
 | 
			
		||||
            _ = new Day1();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user