Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
46
Task/Sum-to-100/Elixir/sum-to-100.elixir
Normal file
46
Task/Sum-to-100/Elixir/sum-to-100.elixir
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
defmodule Sum do
|
||||
def to(val) do
|
||||
generate
|
||||
|> Enum.map(&{eval(&1), &1})
|
||||
|> Enum.filter(fn {v, _s} -> v==val end)
|
||||
|> Enum.each(&IO.inspect &1)
|
||||
end
|
||||
|
||||
def max_solve do
|
||||
generate
|
||||
|> Enum.group_by(&eval &1)
|
||||
|> Enum.filter_map(fn {k,_} -> k>=0 end, fn {k,v} -> {length(v),k} end)
|
||||
|> Enum.max
|
||||
|> fn {len,sum} -> IO.puts "sum of #{sum} has the maximum number of solutions : #{len}" end.()
|
||||
end
|
||||
|
||||
def min_solve do
|
||||
solve = generate |> Enum.group_by(&eval &1)
|
||||
Stream.iterate(1, &(&1+1))
|
||||
|> Enum.find(fn n -> solve[n]==nil end)
|
||||
|> fn sum -> IO.puts "lowest positive sum that can't be expressed : #{sum}" end.()
|
||||
end
|
||||
|
||||
def highest_sums(n\\10) do
|
||||
IO.puts "highest sums :"
|
||||
generate
|
||||
|> Enum.map(&eval &1)
|
||||
|> Enum.uniq
|
||||
|> Enum.sort_by(fn sum -> -sum end)
|
||||
|> Enum.take(n)
|
||||
|> IO.inspect
|
||||
end
|
||||
|
||||
defp generate do
|
||||
x = ["+", "-", ""]
|
||||
for a <- ["-", ""], b <- x, c <- x, d <- x, e <- x, f <- x, g <- x, h <- x, i <- x,
|
||||
do: "#{a}1#{b}2#{c}3#{d}4#{e}5#{f}6#{g}7#{h}8#{i}9"
|
||||
end
|
||||
|
||||
defp eval(str), do: Code.eval_string(str) |> elem(0)
|
||||
end
|
||||
|
||||
Sum.to(100)
|
||||
Sum.max_solve
|
||||
Sum.min_solve
|
||||
Sum.highest_sums
|
||||
Loading…
Add table
Add a link
Reference in a new issue