day 4 brevity
This commit is contained in:
parent
b7744eb2a3
commit
2916c3c816
1 changed files with 6 additions and 16 deletions
|
@ -1,12 +1,9 @@
|
||||||
defmodule Card do
|
defmodule Card do
|
||||||
defp to_list_numbers(str) do
|
defp split(str) do
|
||||||
str
|
str
|
||||||
|
|> String.trim()
|
||||||
|> String.split(" ")
|
|> String.split(" ")
|
||||||
|> Enum.filter(fn s -> String.length(s) !== 0 end)
|
|> Enum.filter(fn s -> String.length(s) !== 0 end)
|
||||||
|> Enum.map(fn u ->
|
|
||||||
{i, _} = Integer.parse(u)
|
|
||||||
i
|
|
||||||
end)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
defp count_winning_cards(player_card, winning_numbers) do
|
defp count_winning_cards(player_card, winning_numbers) do
|
||||||
|
@ -17,11 +14,12 @@ defmodule Card do
|
||||||
[_, numbers] = rest |> String.split(":")
|
[_, numbers] = rest |> String.split(":")
|
||||||
[winning, player] = numbers |> String.split("|")
|
[winning, player] = numbers |> String.split("|")
|
||||||
|
|
||||||
[winning |> String.trim() |> to_list_numbers(), player |> String.trim() |> to_list_numbers()]
|
[winning |> split(), player |> split()]
|
||||||
end
|
end
|
||||||
|
|
||||||
def parse(input) do
|
def parse(input) do
|
||||||
for card <- input |> String.split("\n"),
|
for card <- input |> String.split("\n"),
|
||||||
|
card != "",
|
||||||
[winning_numbers, our_numbers] = parse_card(card) do
|
[winning_numbers, our_numbers] = parse_card(card) do
|
||||||
[winning_numbers, our_numbers]
|
[winning_numbers, our_numbers]
|
||||||
end
|
end
|
||||||
|
@ -38,18 +36,10 @@ defmodule Card do
|
||||||
end
|
end
|
||||||
|
|
||||||
def part2(cards) do
|
def part2(cards) do
|
||||||
copies_of_each_card =
|
|
||||||
cards
|
|
||||||
|> Enum.with_index()
|
|
||||||
|> Enum.map(fn {_, _} ->
|
|
||||||
1
|
|
||||||
end)
|
|
||||||
|> Enum.into([])
|
|
||||||
|
|
||||||
cards
|
cards
|
||||||
|> Enum.with_index()
|
|> Enum.with_index()
|
||||||
|> Enum.reduce(
|
|> Enum.reduce(
|
||||||
copies_of_each_card,
|
List.duplicate(1, cards |> Enum.count()),
|
||||||
fn {[winning, player], idx}, copies ->
|
fn {[winning, player], idx}, copies ->
|
||||||
self_copies = Enum.at(copies, idx)
|
self_copies = Enum.at(copies, idx)
|
||||||
won = count_winning_cards(player, winning)
|
won = count_winning_cards(player, winning)
|
||||||
|
|
Loading…
Add table
Reference in a new issue