summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkballou <kballou@devnulllabs.io>2016-03-18 23:18:38 -0600
committerkballou <kballou@devnulllabs.io>2016-03-18 23:18:38 -0600
commit295bf24053425eed651f69b1660c778d0efab62d (patch)
treeabb2fef2dcfe72eff53a17315fbe720aa422f1ee
parentf6dbc3e24ae3aaccc2c2485441dca56e029b4ad5 (diff)
downloadfunc-w-elixir-295bf24053425eed651f69b1660c778d0efab62d.tar.gz
func-w-elixir-295bf24053425eed651f69b1660c778d0efab62d.tar.xz
Misc code example updates
Use more idiomatic examples
-rw-r--r--src/code/2/fib_itr.exs7
-rw-r--r--src/code/2/fib_perf.out4
-rw-r--r--src/code/2/qs.exs9
-rw-r--r--src/code/2/qs.out5
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]