Advertisement
Guest User

Advent of Code 2022 Day 25 C# Solution

a guest
Dec 25th, 2022
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.52 KB | Source Code | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.IO;
  5. using System.Linq;
  6.  
  7. namespace AdventOfCode2022_Task_Library
  8. {
  9.     public class Task25
  10.     {
  11.         public static void Part01and02()
  12.         {
  13.             Stopwatch sw = new Stopwatch();
  14.             sw.Start();
  15.  
  16.             var input = File.ReadAllLines(@"..\..\..\Inputs\Day25.txt").ToList();
  17.             var numbers = new List<Int64>();
  18.  
  19.             for (int i = 0; i < input.Count; i++)
  20.             {
  21.                 var numberString = input[i].Reverse();
  22.                 Int64 number = 0;
  23.  
  24.                 for (int j = numberString.Count() - 1; j >= 0; j--)
  25.                 {
  26.                     var multiplier = (Int64)Math.Pow(5, j);
  27.  
  28.                     if (numberString.ElementAt(j) == '=')
  29.                         number += multiplier * (-2);
  30.                     else if (numberString.ElementAt(j) == '-')
  31.                         number += multiplier * (-1);
  32.                     else
  33.                     {
  34.                         var value = (Int64)Char.GetNumericValue(numberString.ElementAt(j));
  35.                         number += multiplier * value;
  36.                     }
  37.                 }
  38.  
  39.                 numbers.Add(number);
  40.             }
  41.  
  42.             var result = numbers.Sum();
  43.             var resultToPrint = result;
  44.             var SNAFUResult = "";
  45.  
  46.             while (result > 0)
  47.             {
  48.                 var number = result % 5;
  49.                 result /= 5;
  50.  
  51.                 switch (number)
  52.                 {
  53.                     case 0:
  54.                         SNAFUResult = "0" + SNAFUResult;
  55.                         break;
  56.                     case 1:
  57.                         SNAFUResult = "1" + SNAFUResult;
  58.                         break;
  59.                     case 2:
  60.                         SNAFUResult = "2" + SNAFUResult;
  61.                         break;
  62.                     case 3:
  63.                         SNAFUResult = "=" + SNAFUResult;
  64.                         result++;
  65.                         break;
  66.                     case 4:
  67.                         SNAFUResult = "-" + SNAFUResult;
  68.                         result++;
  69.                         break;
  70.                     default:
  71.                         throw new Exception();
  72.                 }
  73.             }
  74.  
  75.             sw.Stop();
  76.             Console.WriteLine($"Fuel requirements sum: {resultToPrint} | SNAFU sum: {SNAFUResult}\nTime elapsed: {sw.Elapsed.Milliseconds}ms.\n\n");
  77.             Console.ReadKey();
  78.         }
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement