2016 Update

This commit is contained in:
Tina Müller 2016-12-05 22:15:40 +01:00
parent 948b86eafa
commit dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions

View file

@ -0,0 +1,24 @@
defmodule Hofstadter do
defp flip(v2, v1) when v1 > v2, do: 1
defp flip(_v2, _v1), do: 0
defp list_terms(max, n, acc), do: Enum.map_join(n..max, ", ", &acc[&1])
defp hofstadter(n, n, acc, flips) do
IO.puts "The first ten terms are: #{list_terms(10, 1, acc)}"
IO.puts "The 1000'th term is #{acc[1000]}"
IO.puts "Number of flips: #{flips}"
end
defp hofstadter(max, n, acc, flips) do
qn1 = acc[n-1]
qn = acc[n - qn1] + acc[n - acc[n-2]]
hofstadter(max, n+1, Map.put(acc, n, qn), flips + flip(qn, qn1))
end
def main(max \\ 100_000) do
acc = %{1 => 1, 2 => 1}
hofstadter(max+1, 3, acc, 0)
end
end
Hofstadter.main