From a6ef6c20b09906aad7b0af502f036a85ab813a4d Mon Sep 17 00:00:00 2001 From: encse Date: Sun, 22 Dec 2024 07:22:19 +0100 Subject: [PATCH] 2024/22 wip --- 2024/Day22/README.md | 6 +++ 2024/Day22/Solution.cs | 82 ++++++++++++++++++++++++++++++++++++++++ 2024/Day22/input.in | Bin 0 -> 18803 bytes 2024/Day22/input.refout | 2 + 2024/SplashScreen.cs | 74 ++++++++++++++++++++++-------------- 2024/calendar.svg | 28 +++++++------- 6 files changed, 149 insertions(+), 43 deletions(-) create mode 100644 2024/Day22/README.md create mode 100644 2024/Day22/Solution.cs create mode 100644 2024/Day22/input.in create mode 100644 2024/Day22/input.refout diff --git a/2024/Day22/README.md b/2024/Day22/README.md new file mode 100644 index 00000000..6d05ba3d --- /dev/null +++ b/2024/Day22/README.md @@ -0,0 +1,6 @@ +## --- Day 22: Monkey Market --- +As you're all teleported deep into the jungle, a [monkey](/2022/day/11) steals The Historians' device! You'll need get it back while The Historians are looking for the Chief. + +The monkey that stole the device seems willing to trade it, but only in exchange for an absurd number of bananas. Your only option is to buy bananas on the Monkey Exchange Market. + +_Visit the website for the full story and [full puzzle](https://adventofcode.com/2024/day/22) description._ diff --git a/2024/Day22/Solution.cs b/2024/Day22/Solution.cs new file mode 100644 index 00000000..52934a0a --- /dev/null +++ b/2024/Day22/Solution.cs @@ -0,0 +1,82 @@ +namespace AdventOfCode.Y2024.Day22; + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Text.RegularExpressions; +using System.Text; +using System.Numerics; + +[ProblemName("Monkey Market")] +class Solution : Solver { + + public object PartOne(string input) { + return GetNums(input).Select(x => (long)Step(x).Last()).Sum(); + } + + public object PartTwo(string input) { + var mainDict = new Dictionary<(int a, int b, int c, int d), int>(); + foreach(var num in GetNums(input)) { + var banana = GetBanana(num); + foreach(var k in banana.Keys){ + mainDict[k] = mainDict.GetValueOrDefault(k) + banana[k]; + } + } + return mainDict.Values.Max(); + } + + Dictionary<(int a, int b, int c, int d), int> GetBanana(int num) { + var res = new Dictionary<(int a, int b, int c, int d), int>(); + + var prices = Step(num).Select(n => n % 10).ToArray(); + for(var i = 5;i < prices.Length; i++) { + var slice = prices[(i-5) .. i]; + var diff = Diff(slice); + var key = (diff[0], diff[1], diff[2], diff[3]); + if (!res.ContainsKey(key)) { + res[key] = slice.Last(); + } + } + return res; + // var diff = Diff(steps).ToArray(); + + // var res = 0; + // for(var i = seq.Length-1; i Quads(int[] nums) { + for(var i = 4;i<=nums.Length;i++) { + yield return nums[(i-4) .. i]; + } + + } + + + int[] Diff(IEnumerable x) { + return x.Zip(x.Skip(1)).Select(p => p.Second - p.First).ToArray(); + } + IEnumerable Step(int a) { + yield return a; + for(var i = 0;i< 2000;i++) { + var b = (long)a; + b = Mix(b, b * 64); + b = Prune(b); + b = Mix(b, b/32); + b = Prune(b); + b = Mix(b, b*2048); + b = Prune(b); + a = (int)b; + yield return a; + } + } + long Mix(long a, long b) => a ^ b; + long Prune(long a) => a % 16777216; + + IEnumerable GetNums(string input) => + input.Split("\n").Select(int.Parse); +} \ No newline at end of file diff --git a/2024/Day22/input.in b/2024/Day22/input.in new file mode 100644 index 0000000000000000000000000000000000000000..c00da3daed3ada53fafff6e9007a260109711939 GIT binary patch literal 18803 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[o;`FxaA`D9H5nRKOw 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"); + Write(0xff0000, true, "@"); + Write(0x9900, false, "<<"); + Write(0xffff66, true, "*"); + Write(0x9900, false, "<"); + Write(0x66ff, true, "O"); + Write(0xcccccc, false, "| 22 "); + Write(0xffff66, false, "**\n "); Write(0x333333, false, "| | | | "); - Write(0x666666, false, "22\n 23\n "); - Write(0x666666, false, " 24\n 25\n "); - Write(0x666666, false, " \n"); + Write(0x666666, false, "23\n 24\n "); + Write(0x666666, false, " 25\n \n"); Console.ForegroundColor = color; Console.WriteLine(); diff --git a/2024/calendar.svg b/2024/calendar.svg index c5fe6742..994bc444 100644 --- a/2024/calendar.svg +++ b/2024/calendar.svg @@ -1,4 +1,4 @@ - +