From ec8ce0cd4ef81045053019b06cdfd9378e2d3eea Mon Sep 17 00:00:00 2001
From: Sloane Perrault <sloane.perrault@gmail.com>
Date: Wed, 21 Sep 2022 09:19:53 -0400
Subject: [PATCH] solve 2021 day 7

---
 2021/README.md     |  3 ++-
 2021/lib/2021/7.ex | 35 +++++++++++++++++++++++++++++++++++
 2 files changed, 37 insertions(+), 1 deletion(-)
 create mode 100644 2021/lib/2021/7.ex

diff --git a/2021/README.md b/2021/README.md
index 4c6bcfc..54008e1 100644
--- a/2021/README.md
+++ b/2021/README.md
@@ -15,7 +15,7 @@
 |  S  |  M  |  T  |  W  |  T  |  F  |  S  |
 | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
 |     |     |     | [1] | [2] | [3] | [4] |
-| [5] | [6] |  7  |  8  |  9  | 10  | 11  |
+| [5] | [6] | [7] |  8  |  9  | 10  | 11  |
 | 12  | 13  | 14  | 15  | 16  | 17  | 18  |
 | 19  | 20  | 21  | 22  | 23  | 24  | 25  |
 
@@ -27,3 +27,4 @@
 [4]: ./lib/2021/4.ex
 [5]: ./lib/2021/5.ex
 [6]: ./lib/2021/6.ex
+[7]: ./lib/2021/7.ex
diff --git a/2021/lib/2021/7.ex b/2021/lib/2021/7.ex
new file mode 100644
index 0000000..16b986c
--- /dev/null
+++ b/2021/lib/2021/7.ex
@@ -0,0 +1,35 @@
+import AOC
+
+aoc 2021, 7 do
+  use AOCHelpers
+
+  def p1 do
+    crabs = input_number_list()
+
+    max = Enum.max(crabs)
+
+    for position <- 1..max do
+      for crab <- crabs do
+        abs(crab - position)
+      end
+      |> Enum.sum()
+    end
+    |> Enum.min()
+  end
+
+  def p2 do
+    crabs = input_number_list()
+
+    max = Enum.max(crabs)
+
+    for position <- 1..max do
+      for crab <- crabs do
+        n = abs(crab - position)
+        1 / 2 * n * (n + 1)
+      end
+      |> Enum.sum()
+    end
+    |> Enum.min()
+    |> trunc()
+  end
+end