From 39a4bf3929118980e89cc48b05c7846fff5cb8ff Mon Sep 17 00:00:00 2001 From: Jan Krňávek Date: Sun, 8 Sep 2024 21:03:08 +0200 Subject: solution week 285-2 -- Elixir --- challenge-285/wambash/elixir/ch-2.exs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 challenge-285/wambash/elixir/ch-2.exs diff --git a/challenge-285/wambash/elixir/ch-2.exs b/challenge-285/wambash/elixir/ch-2.exs new file mode 100644 index 0000000000..499304306b --- /dev/null +++ b/challenge-285/wambash/elixir/ch-2.exs @@ -0,0 +1,30 @@ +defmodule Change do + defp _making({0,_}),do: [1] + defp _making({_,[]}),do: [0] + defp _making({amount, [hc| coins]}) when hc > amount, do: _making({amount,coins}) + defp _making({amount, coins}) do + coins + |> Enum.flat_map(fn + x -> _making( + { + amount - x, + coins |> Enum.drop_while( & &1 > x ) + } + ) + end) + end + def making(w) do + _making(w) |> Enum.sum + end +end + +ExUnit.start() + +defmodule ChangeTest do + use ExUnit.Case + test "Change" do + assert Change.making({9,[50,25,10,5,1]}) == 2 + assert Change.making({100,[50,25,10,5,1]}) == 292 + assert Change.making({15,[50,25,10,5,1]}) == 6 + end +end -- cgit