about summary refs log tree commit diff
path: root/aoc2021/Day03.cs
diff options
context:
space:
mode:
authorBen Harris <ben@tilde.team>2021-12-03 01:05:45 -0500
committerBen Harris <ben@tilde.team>2021-12-03 01:05:45 -0500
commit15cf1a6a5650efb644ee9edfb4327736daef24f6 (patch)
tree5fa0ace67237494b8c301b532703cc589bff120f /aoc2021/Day03.cs
parent437ad3ecfa330b53af289785758eabf807c62e37 (diff)
day 3 part 1
Diffstat (limited to 'aoc2021/Day03.cs')
-rw-r--r--aoc2021/Day03.cs38
1 files changed, 38 insertions, 0 deletions
diff --git a/aoc2021/Day03.cs b/aoc2021/Day03.cs
new file mode 100644
index 0000000..a9e5c38
--- /dev/null
+++ b/aoc2021/Day03.cs
@@ -0,0 +1,38 @@
+namespace aoc2021;
+
+/// <summary>
+/// Day 3: <see href="https://adventofcode.com/2021/day/3"/>
+/// </summary>
+public sealed class Day03 : Day
+{
+    private readonly List<string> _report;
+    
+    public Day03() : base(3, "Binary Diagnostic")
+    {
+        _report = Input.ToList();
+    }
+
+    public override string Part1()
+    {
+        var l = _report.Count / 2;
+        var g = new StringBuilder();
+        var e = new StringBuilder();
+        
+        foreach (var i in Enumerable.Range(0, _report[0].Length))
+        {
+            var ones = _report.Select(r => r[i]).Count(c => c == '1');
+            g.Append(ones > l ? '1' : '0');
+            e.Append(ones > l ? '0' : '1');
+        }
+
+        var gamma   = Convert.ToInt32(g.ToString(), 2);
+        var epsilon = Convert.ToInt32(e.ToString(), 2);
+
+        return $"{gamma * epsilon}";
+    }
+
+    public override string Part2()
+    {
+        return "";
+    }
+}