Last active
December 10, 2024 20:38
-
-
Save i-am-unknown-81514525/58de6a414b39f0c66e4b3d342fa5d098 to your computer and use it in GitHub Desktop.
AOC csharp one-line
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| using System; | |
| using System.Linq; | |
| using System.IO; | |
| namespace D10 | |
| { | |
| internal class Program | |
| { | |
| static int P1(string[] d, int r = -1, int c = -1, Tuple<int, int>[] prev = null) => prev == null | |
| ? Enumerable.Range(0, d.Length) | |
| .Where(nr => d[nr] != "") | |
| .Select( | |
| nr => Enumerable.Range(0, d[nr].Length) | |
| .Where(nc => d[nr][nc] == '0') | |
| .Sum(nc => P1(d, nr, nc, new Tuple<int, int>[d.Length * d[nr].Length])) | |
| ).Sum() | |
| : prev.Contains(new Tuple<int, int>(r, c)) | |
| ? 0 | |
| : | |
| ((prev[Enumerable.Range(0, prev.Length) | |
| .SkipWhile(i => prev[i] != null) | |
| .Take(1) | |
| .ToArray()[0] | |
| ] = new Tuple<int, int>(r, c)).Item1 == 0?0:0) + | |
| ( | |
| d[r][c] == '9'? | |
| 1 | |
| : | |
| ( | |
| (r - 1 >= 0 ? d[r - 1][c] - d[r][c] == 1 ? P1(d, r - 1, c, prev) : 0 : 0) + | |
| (c - 1 >= 0 ? d[r][c - 1] - d[r][c] == 1 ? P1(d, r, c - 1, prev) : 0 : 0) + | |
| (r + 1 < d.Length ? d[r + 1][c] - d[r][c] == 1 ? P1(d, r + 1, c, prev) : 0 : 0) + | |
| (c + 1 < d[r].Length ? d[r][c + 1] - d[r][c] == 1 ? P1(d, r, c + 1, prev) : 0 : 0) | |
| ) | |
| ); | |
| static int P2(string[] d, int r = -1, int c = -1, Tuple<int, int>[] prev = null) => prev == null | |
| ? Enumerable.Range(0, d.Length) | |
| .Where(nr => d[nr] != "") | |
| .Select( | |
| nr => Enumerable.Range(0, d[nr].Length) | |
| .Where(nc => d[nr][nc] == '0') | |
| .Sum(nc => P2(d, nr, nc, new Tuple<int, int>[d.Length * d[nr].Length])) | |
| ).Sum() | |
| : prev.Contains(new Tuple<int, int>(r, c)) | |
| ? 0 | |
| : ( | |
| (prev[Enumerable.Range(0, prev.Length) | |
| .SkipWhile(i => prev[i] != null) | |
| .Take(1) | |
| .ToArray()[0] | |
| ] = new Tuple<int, int>(r, c)).Item1 == 0 ? 0 : 0 | |
| ) + (d[r][c] == '9' | |
| ? 1 | |
| : | |
| ( | |
| (r - 1 >= 0 ? d[r - 1][c] - d[r][c] == 1 ? P2(d, r - 1, c, prev.ToArray()) : 0 : 0) + | |
| (c - 1 >= 0 ? d[r][c - 1] - d[r][c] == 1 ? P2(d, r, c - 1, prev.ToArray()) : 0 : 0) + | |
| (r + 1 < d.Length ? d[r + 1][c] - d[r][c] == 1 ? P2(d, r + 1, c, prev.ToArray()) : 0 : 0) + | |
| (c + 1 < d[r].Length ? d[r][c + 1] - d[r][c] == 1 ? P2(d, r, c + 1, prev.ToArray()) : 0 : 0) | |
| ) | |
| ); | |
| static void Main(string[] _) => Console.WriteLine( | |
| "Part 1: "+P1(File.ReadAllLines(".aoc-cache/aoc-2024-10.content")).ToString()+ | |
| "\nPart 2: "+P2(File.ReadAllLines(".aoc-cache/aoc-2024-10.content"))+ | |
| "" | |
| ); | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| using System; | |
| using System.Linq; | |
| using System.IO; | |
| namespace D6 | |
| { | |
| internal class Program | |
| { | |
| static int P1(string[] d) => Enumerable.Range(1, 32768) // Limited cause amount of run is not in my control | |
| .Aggregate( | |
| new Tuple<bool, Tuple<int, int>, Tuple<int, int>[], Tuple<int, int>>[]{ | |
| new Tuple<bool, Tuple<int, int>, Tuple<int, int>[], Tuple<int, int>>( | |
| true, | |
| Enumerable.Range(0, d.Length) | |
| .SelectMany( | |
| r => Enumerable.Range(0, d[r].Length) | |
| .Where(c => d[r][c] == '^') | |
| .Select(c => new Tuple<int, int>(r, c)) | |
| ) | |
| .ToArray()[0], | |
| new Tuple<int, int>[d.Length * d[0].Length], | |
| new Tuple<int, int>(-1, 0) | |
| ) | |
| } | |
| .Select( | |
| x=>new Tuple<bool, Tuple<int,int>, Tuple<int,int>[], Tuple<int,int>>(x.Item1, x.Item2, (x.Item3[0]=x.Item2).Item1==-1?x.Item3:x.Item3,x.Item4) | |
| ).ToArray()[0], | |
| ((tuple, i) => | |
| !tuple.Item1 | |
| ? tuple | |
| : | |
| ( | |
| tuple.Item2.Item1 + tuple.Item4.Item1 < 0 || | |
| tuple.Item2.Item1 + tuple.Item4.Item1 >= d.Length || | |
| tuple.Item2.Item2 + tuple.Item4.Item2 < 0 || | |
| tuple.Item2.Item2 + tuple.Item4.Item2 >= d[tuple.Item2.Item1].Length | |
| ) | |
| ? | |
| new Tuple<bool, Tuple<int, int>, Tuple<int, int>[], Tuple<int, int>>(false, tuple.Item2, | |
| tuple.Item3, tuple.Item4) | |
| : d[tuple.Item2.Item1 + tuple.Item4.Item1][tuple.Item2.Item2 + tuple.Item4.Item2] == '#' | |
| ? new Tuple<bool, Tuple<int, int>, Tuple<int, int>[], Tuple<int, int>>(true, | |
| tuple.Item2, tuple.Item3, | |
| new Tuple<int, int>(tuple.Item4.Item2, -tuple.Item4.Item1)) | |
| : tuple.Item3.Contains(new Tuple<int, int>( | |
| tuple.Item2.Item1 + tuple.Item4.Item1, | |
| tuple.Item2.Item2 + tuple.Item4.Item2 | |
| )) | |
| ? new Tuple<bool, Tuple<int, int>, Tuple<int, int>[], Tuple<int, int>>( | |
| true, | |
| new Tuple<int, int>( | |
| tuple.Item2.Item1 + tuple.Item4.Item1, | |
| tuple.Item2.Item2 + tuple.Item4.Item2 | |
| ), | |
| tuple.Item3, | |
| tuple.Item4 | |
| ) | |
| : | |
| new Tuple<bool, Tuple<int, int>, Tuple<int, int>[], Tuple<int, int>>( | |
| true, | |
| new Tuple<int, int>( | |
| tuple.Item2.Item1 + tuple.Item4.Item1, | |
| tuple.Item2.Item2 + tuple.Item4.Item2 | |
| ), | |
| // new Tuple<int, int>[][] | |
| // { | |
| // tuple.Item3, | |
| // new Tuple<int, int>[]{ tuple.Item2 } | |
| // } | |
| // .SelectMany(x => x) | |
| // .ToArray(), | |
| (tuple.Item3[i]=new Tuple<int, int>( | |
| tuple.Item2.Item1 + tuple.Item4.Item1, | |
| tuple.Item2.Item2 + tuple.Item4.Item2 | |
| )).Item1==-1?tuple.Item3:tuple.Item3, | |
| tuple.Item4 | |
| ) | |
| ) | |
| ).Item3.Count(x=>x!=null); | |
| static int P2(string[] d)=>Enumerable.Range(0, 32768) // Limited cause amount of run is not in my control | |
| .Aggregate( | |
| new Tuple<bool, Tuple<int, int>, Tuple<int, int>[], Tuple<int, int>>( | |
| true, | |
| Enumerable.Range(0, d.Length) | |
| .SelectMany( | |
| r => Enumerable.Range(0, d[r].Length) | |
| .Where(c => d[r][c] == '^') | |
| .Select(c => new Tuple<int, int>(r, c)) | |
| ) | |
| .ToArray()[0], | |
| new Tuple<int, int>[d.Length*d[0].Length], | |
| new Tuple<int, int>(-1, 0) | |
| ), | |
| ((tuple, i) => | |
| !tuple.Item1 | |
| ? tuple | |
| : | |
| ( | |
| tuple.Item2.Item1 + tuple.Item4.Item1 < 0 || | |
| tuple.Item2.Item1 + tuple.Item4.Item1 >= d.Length || | |
| tuple.Item2.Item2 + tuple.Item4.Item2 < 0 || | |
| tuple.Item2.Item2 + tuple.Item4.Item2 >= d[tuple.Item2.Item1].Length | |
| ) | |
| ? | |
| new Tuple<bool, Tuple<int, int>, Tuple<int, int>[], Tuple<int, int>>(false, tuple.Item2, | |
| tuple.Item3, tuple.Item4) | |
| : d[tuple.Item2.Item1 + tuple.Item4.Item1][tuple.Item2.Item2 + tuple.Item4.Item2] == '#' | |
| ? new Tuple<bool, Tuple<int, int>, Tuple<int, int>[], Tuple<int, int>>(true, | |
| tuple.Item2, tuple.Item3, | |
| new Tuple<int, int>(tuple.Item4.Item2, -tuple.Item4.Item1)) | |
| : tuple.Item3.Contains(new Tuple<int, int>( | |
| tuple.Item2.Item1 + tuple.Item4.Item1, | |
| tuple.Item2.Item2 + tuple.Item4.Item2 | |
| )) | |
| ? new Tuple<bool, Tuple<int, int>, Tuple<int, int>[], Tuple<int, int>>( | |
| true, | |
| new Tuple<int, int>( | |
| tuple.Item2.Item1 + tuple.Item4.Item1, | |
| tuple.Item2.Item2 + tuple.Item4.Item2 | |
| ), | |
| tuple.Item3, | |
| tuple.Item4 | |
| ) | |
| : | |
| new Tuple<bool, Tuple<int, int>, Tuple<int, int>[], Tuple<int, int>>( | |
| true, | |
| new Tuple<int, int>( | |
| tuple.Item2.Item1 + tuple.Item4.Item1, | |
| tuple.Item2.Item2 + tuple.Item4.Item2 | |
| ), | |
| // new Tuple<int, int>[][] | |
| // { | |
| // tuple.Item3, | |
| // new Tuple<int, int>[]{ tuple.Item2 } | |
| // } | |
| // .SelectMany(x => x) | |
| // .ToArray(), | |
| (tuple.Item3[i]=new Tuple<int, int>( | |
| tuple.Item2.Item1 + tuple.Item4.Item1, | |
| tuple.Item2.Item2 + tuple.Item4.Item2 | |
| )).Item1==-1?tuple.Item3:tuple.Item3, | |
| tuple.Item4 | |
| ) | |
| ) | |
| ).Item3 | |
| .Where(x=>x!=null) | |
| .Where( | |
| coord=>Enumerable.Range(0,10000).Aggregate( | |
| new Tuple<int, Tuple<int,int>,Tuple<int,int,int,int>[], Tuple<int,int>>( | |
| 0, | |
| Enumerable.Range(0, d.Length) | |
| .SelectMany( | |
| r => Enumerable.Range(0, d[r].Length) | |
| .Where(c => d[r][c] == '^') | |
| .Select(c => new Tuple<int, int>(r, c)) | |
| ) | |
| .ToArray()[0] | |
| , | |
| new Tuple<int,int,int,int>[d.Length*d[0].Length*4], | |
| new Tuple<int,int> (-1,0) | |
| ), | |
| ( | |
| (tuple, i) => tuple.Item1!=0? | |
| tuple: | |
| ( | |
| tuple.Item2.Item1 + tuple.Item4.Item1 < 0 || | |
| tuple.Item2.Item1 + tuple.Item4.Item1 >= d.Length || | |
| tuple.Item2.Item2 + tuple.Item4.Item2 < 0 || | |
| tuple.Item2.Item2 + tuple.Item4.Item2 >= d[tuple.Item2.Item1].Length | |
| )? | |
| new Tuple<int, Tuple<int,int>,Tuple<int,int,int,int>[], Tuple<int,int>> ( | |
| 1, | |
| tuple.Item2, | |
| tuple.Item3, | |
| tuple.Item4 | |
| ): | |
| (d[tuple.Item2.Item1 + tuple.Item4.Item1][tuple.Item2.Item2 + tuple.Item4.Item2] == '#' || | |
| ( | |
| tuple.Item2.Item1 + tuple.Item4.Item1 == coord.Item1 && | |
| tuple.Item2.Item2 + tuple.Item4.Item2 == coord.Item2) | |
| )? | |
| tuple.Item3.Contains(new Tuple<int,int,int,int> ( | |
| tuple.Item2.Item1+tuple.Item4.Item1, | |
| tuple.Item2.Item2+tuple.Item4.Item2, | |
| tuple.Item4.Item1, | |
| tuple.Item4.Item2) | |
| )? | |
| new Tuple<int, Tuple<int,int>,Tuple<int,int,int,int>[], Tuple<int,int>> ( | |
| 2, | |
| tuple.Item2, | |
| tuple.Item3, | |
| tuple.Item4 | |
| ): | |
| new Tuple<int, Tuple<int,int>,Tuple<int,int,int,int>[], Tuple<int,int>> ( | |
| 0, | |
| tuple.Item2, | |
| (tuple.Item3[i] = new Tuple<int, int, int, int>( | |
| tuple.Item2.Item1 + tuple.Item4.Item1, | |
| tuple.Item2.Item2 + tuple.Item4.Item2, | |
| tuple.Item4.Item1, | |
| tuple.Item4.Item2)).Item1==-1?tuple.Item3:tuple.Item3, | |
| new Tuple<int, int>(tuple.Item4.Item2, -tuple.Item4.Item1) | |
| ) | |
| : | |
| new Tuple<int, Tuple<int, int>, Tuple<int, int,int,int>[], Tuple<int, int>>( | |
| 0, | |
| new Tuple<int, int>( | |
| tuple.Item2.Item1 + tuple.Item4.Item1, | |
| tuple.Item2.Item2 + tuple.Item4.Item2 | |
| ), | |
| tuple.Item3, | |
| tuple.Item4 | |
| ) | |
| ) | |
| ).Item1 == 2 | |
| ).Count(); | |
| static void Main(string[] _)=>Console.WriteLine( | |
| "Part 1: "+P1(File.ReadAllLines(".aoc-cache/aoc-2024-6.content")).ToString()+ | |
| "\nPart 2: "+P2(File.ReadAllLines(".aoc-cache/aoc-2024-6.content"))+ | |
| "" | |
| ); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment