From 295bf24053425eed651f69b1660c778d0efab62d Mon Sep 17 00:00:00 2001 From: kballou Date: Fri, 18 Mar 2016 23:18:38 -0600 Subject: Misc code example updates Use more idiomatic examples --- src/code/2/fib_itr.exs | 7 +++---- src/code/2/fib_perf.out | 4 ++-- src/code/2/qs.exs | 9 ++++++--- src/code/2/qs.out | 5 +++-- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/code/2/fib_itr.exs b/src/code/2/fib_itr.exs index 2eafcee..affd347 100644 --- a/src/code/2/fib_itr.exs +++ b/src/code/2/fib_itr.exs @@ -1,14 +1,13 @@ defmodule Fib do def seq(0), do: 0 def seq(1), do: 1 - def seq(n) when n > 1, do: compute_seq(n, 1, [0, 1]) + def seq(n) when n > 1, do: compute_seq(n, 1, [1, 0]) defp compute_seq(n, i, acc) when n == i do - Enum.at(acc, length(acc) - 1) + hd(acc) end defp compute_seq(n, i, acc) do - len = length(acc) - compute_seq(n, i + 1, acc++[Enum.at(acc, len-1) + Enum.at(acc, len-2)]) + compute_seq(n, i+1, [Enum.at(acc, 0) + Enum.at(acc, 1) | acc]) end end diff --git a/src/code/2/fib_perf.out b/src/code/2/fib_perf.out index dda3a70..0d99ac5 100644 --- a/src/code/2/fib_perf.out +++ b/src/code/2/fib_perf.out @@ -5,5 +5,5 @@ % /usr/bin/time elixir fib_itr.exs 12586269025 -0.24user 0.06system 0:00.28elapsed 110%CPU (0avgtext+0avgdata 33916maxresident)k -0inputs+0outputs (0major+7617minor)pagefaults 0swaps +0.25user 0.05system 0:00.27elapsed 112%CPU (0avgtext+0avgdata 38668maxresident)k +0inputs+0outputs (0major+7450minor)pagefaults 0swaps diff --git a/src/code/2/qs.exs b/src/code/2/qs.exs index 38c90c9..5e244d3 100644 --- a/src/code/2/qs.exs +++ b/src/code/2/qs.exs @@ -1,10 +1,13 @@ defmodule Quicksort do def sort([]), do: [] def sort([h|t]) do - lower = t |> Enum.filter(&(&1 <= h)) - upper = t |> Enum.filter(&(&1 > h)) + {lower, upper} = t |> Enum.partition(&(&1 <= h)) sort(lower) ++ [h] ++ sort(upper) end end -1..10 |> Enum.shuffle |> Quicksort.sort |> IO.inspect +1..10 + |> Enum.shuffle + |> IO.inspect + |> Quicksort.sort + |> IO.inspect diff --git a/src/code/2/qs.out b/src/code/2/qs.out index 9569cda..963c1af 100644 --- a/src/code/2/qs.out +++ b/src/code/2/qs.out @@ -1,4 +1,5 @@ -% elixir qs.exs +% /usr/bin/time elixir qs.exs +[4, 3, 5, 6, 7, 8, 10, 9, 1, 2] +[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 0.28user 0.02system 0:00.27elapsed 112%CPU (0avgtext+0avgdata 38936maxresident)k 0inputs+8outputs (0major+6654minor)pagefaults 0swaps -[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] -- cgit v1.2.1