]> fbox.kageds.com Git - adventofcode.git/blobdiff - day2/day2.erl
Merge branch 'master' of https://fbox.kageds.com/gitweb/advent2021
[adventofcode.git] / day2 / day2.erl
index 1d6662d2566d615478721baff1b837bdbee6fe9d..7fd7f061702af4dbbd5dca2a29721609a693ac75 100644 (file)
@@ -1,9 +1,52 @@
 -module(day2).
 
 -module(day2).
 
--export ([solve/1, solve/2]).
+-export ([solve/0, solve/1, solve/2]).
+
+solve() ->
+    solve(['1']),
+    solve(['2']),
+    init:stop().
 
 solve(A) ->
 
 solve(A) ->
-    D = [
+    solve(A, get_data()).
+
+solve(['1'], D) ->
+    io:format("The solution to ~p puzzle1 is: ~p~n", [?MODULE, solve(1, D)]);
+solve(1, D) ->
+    solution1(D);
+solve(['2'], D) ->
+    io:format("The solution to ~p puzzle2 is: ~p~n", [?MODULE, solve(2, D)]);
+solve(2, D) ->
+    solution2(D).
+
+solution1(D) ->
+    {X, Y} =
+    lists:foldl(fun({Dir, Dis}, {X, Y}) ->
+        case Dir of
+            'up' -> {X, Y - Dis};
+            'down' -> {X, Y + Dis};
+            'forward' -> {X + Dis, Y}
+        end
+        end,
+   {0, 0},
+   D),
+   X * Y.
+
+solution2(D) ->
+    {X, Y, _} =
+    lists:foldl(fun({Dir, Dis}, {X, Y, Aim}) ->
+        case Dir of
+            'up' -> {X, Y, Aim - Dis};
+            'down' -> {X, Y, Aim + Dis};
+            'forward' -> {X + Dis, Y + (Dis * Aim), Aim}
+        end
+        end,
+   {0,0,0},
+   D),
+   X * Y.
+
+get_data() ->
+[
 {forward, 3},
 {down, 4},
 {forward, 3},
 {forward, 3},
 {down, 4},
 {forward, 3},
@@ -1004,36 +1047,4 @@ solve(A) ->
 {forward, 5},
 {forward, 3},
 {forward, 7}
 {forward, 5},
 {forward, 3},
 {forward, 7}
-],
-
-    solve(A, D).
-
-solve(['1'], D) ->
-    io:format("The solution to puzzle day2 is: ~p", [solve(1, D)]);
-solve(1, D) ->
-    {X, Y} = 
-    lists:foldl(fun({Dir, Dis}, {X, Y}) ->
-        case Dir of 
-            'up' -> {X, Y - Dis};
-            'down' -> {X, Y + Dis};
-            'forward' -> {X + Dis, Y}
-        end
-        end,
-   {0, 0},
-   D),
-   X * Y;
-solve(['2'], D) ->
-    io:format("The solution to puzzle day2 is: ~p", [solve(2, D)]);
-solve(2, D) ->
-    {X, Y, _} =
-    lists:foldl(fun({Dir, Dis}, {X, Y, Aim}) ->
-        case Dir of
-            'up' -> {X, Y, Aim - Dis};
-            'down' -> {X, Y, Aim + Dis};
-            'forward' -> {X + Dis, Y + (Dis * Aim), Aim}
-        end
-        end,
-   {0,0,0},
-   D),
-   X * Y.
-
+].