Skip to content

Commit e95271f

Browse files
committed
Use sum_by and product_by
1 parent 0d22dba commit e95271f

File tree

19 files changed

+28
-57
lines changed

19 files changed

+28
-57
lines changed

lib/2015/day_02.ex

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,13 @@ defmodule AdventOfCode.Y2015.Day02 do
2222
end
2323

2424
defp run_1(input) do
25-
input
26-
|> Enum.map(fn n -> n |> Enum.map(&String.to_integer/1) |> required_paper() end)
27-
|> Enum.sum()
25+
Enum.sum_by(input, fn n -> n |> Enum.map(&String.to_integer/1) |> required_paper() end)
2826
end
2927

3028
defp run_2(input) do
31-
input
32-
|> Enum.map(fn n ->
33-
n |> Enum.map(&String.to_integer/1) |> smallest_perimeter_plus_volume()
29+
Enum.sum_by(input, fn n ->
30+
Enum.map(n, &String.to_integer/1) |> smallest_perimeter_plus_volume()
3431
end)
35-
|> Enum.reduce(&Kernel.+/2)
3632
end
3733

3834
@spec required_paper([pos_integer(), ...]) :: pos_integer()

lib/2015/day_12.ex

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,7 @@ defmodule AdventOfCode.Y2015.Day12 do
4545
parsed
4646
|> Enum.join()
4747
|> String.split()
48-
|> Enum.map(&String.to_integer/1)
49-
|> Enum.sum()
48+
|> Enum.sum_by(&String.to_integer/1)
5049
end
5150

5251
def total(obj) when is_map(obj) do
@@ -56,11 +55,10 @@ defmodule AdventOfCode.Y2015.Day12 do
5655

5756
def total(obj) when is_list(obj) do
5857
obj
59-
|> Enum.map(fn
58+
|> Enum.sum_by(fn
6059
value when is_map(value) or is_list(value) -> total(value)
6160
value when is_integer(value) -> value
6261
_ -> 0
6362
end)
64-
|> Enum.sum()
6563
end
6664
end

lib/2015/day_15.ex

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@ defmodule AdventOfCode.Y2015.Day15 do
7676

7777
def total_of(nutrients, type) do
7878
nutrients
79-
|> Enum.map(& &1[type])
80-
|> Enum.sum()
79+
|> Enum.sum_by(& &1[type])
8180
|> then(&((&1 < 0 && 0) || &1))
8281
end
8382

lib/2015/day_20.ex

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,7 @@ defmodule AdventOfCode.Y2015.Day20 do
3939
gifts =
4040
house
4141
|> Arithmetics.divisors()
42-
|> Enum.map(&(&1 * 10))
43-
|> Enum.sum()
42+
|> Enum.sum_by(&(&1 * 10))
4443

4544
{house, gifts}
4645
end
@@ -50,8 +49,7 @@ defmodule AdventOfCode.Y2015.Day20 do
5049
house
5150
|> Arithmetics.divisors()
5251
|> Enum.filter(fn divisor -> div(house, divisor) < 50 end)
53-
|> Enum.map(&(&1 * 11))
54-
|> Enum.sum()
52+
|> Enum.sum_by(&(&1 * 11))
5553

5654
{house, gifts}
5755
end

lib/2017/day_01.ex

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,10 @@ defmodule AdventOfCode.Y2017.Day01 do
4040
end
4141

4242
defp matching_pair_sum({a, b}) do
43-
a
44-
|> Enum.zip(b)
45-
|> Enum.map(fn
43+
Enum.zip(a, b)
44+
|> Enum.sum_by(fn
4645
{a, a} -> a + a
4746
_ -> 0
4847
end)
49-
|> Enum.sum()
5048
end
5149
end

lib/2017/day_13.ex

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ defmodule AdventOfCode.Y2017.Day13 do
5959
defp severity(detections, input) do
6060
input
6161
|> Map.take(detections)
62-
|> Enum.map(fn {k, v} -> k * v end)
63-
|> Enum.sum()
62+
|> Enum.sum_by(fn {k, v} -> k * v end)
6463
end
6564
end

lib/2017/day_14.ex

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ defmodule AdventOfCode.Y2017.Day14 do
2020

2121
defp run_1(squares) do
2222
squares
23-
|> Enum.map(&Enum.count(&1, fn i -> i == "1" end))
24-
|> Enum.sum()
23+
|> Enum.sum_by(&Enum.count(&1, fn i -> i == "1" end))
2524
end
2625

2726
defp run_2(_squares) do

lib/2018/day_06.ex

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,7 @@ defmodule AdventOfCode.Y2018.Day06 do
9595

9696
defp within_distance_threshold(distances, threshold) do
9797
distances
98-
|> Enum.map(&elem(&1, 1))
99-
|> Enum.sum()
98+
|> Enum.sum_by(&elem(&1, 1))
10099
|> case do
101100
n when n < threshold -> 1
102101
_ -> 0

lib/2019/day_01.ex

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,15 @@ defmodule AdventOfCode.Y2019.Day01 do
1515
end
1616

1717
def run_1(input) do
18-
input
19-
|> Enum.map(&fuel_required/1)
20-
|> Enum.sum()
18+
Enum.sum_by(input, &fuel_required/1)
2119
end
2220

2321
def run_2(input) do
2422
input
25-
|> Enum.map(fn mass ->
23+
|> Enum.sum_by(fn mass ->
2624
required_fuel = fuel_required(mass)
2725
refuel(required_fuel, required_fuel)
2826
end)
29-
|> Enum.sum()
3027
end
3128

3229
def parse(data) do

lib/2020/day_14.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ defmodule AdventOfCode.Y2020.Day14 do
3333
{Map.put(memory, address, (value ||| or_mask) &&& and_mask), masks}
3434
end
3535

36-
defp memory_sum({memory, _}), do: memory |> Enum.map(&elem(&1, 1)) |> Enum.sum()
36+
defp memory_sum({memory, _}), do: memory |> Enum.sum_by(&elem(&1, 1))
3737

3838
defp instruction_2("mask" <> _ = line, {memory, _}),
3939
do: {memory, line |> String.split(" = ") |> Enum.at(-1) |> String.graphemes()}

0 commit comments

Comments
 (0)