From 6b21ba5c2303a59a3cca7b693ea0a55faf766c95 Mon Sep 17 00:00:00 2001 From: Abigail Date: Tue, 11 May 2021 01:24:43 +0200 Subject: Ruby solutions for week 112 --- challenge-112/abigail/ruby/ch-1.rb | 27 +++++++++++++++++++++++++++ challenge-112/abigail/ruby/ch-2.rb | 22 ++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 challenge-112/abigail/ruby/ch-1.rb create mode 100644 challenge-112/abigail/ruby/ch-2.rb (limited to 'challenge-112/abigail/ruby') diff --git a/challenge-112/abigail/ruby/ch-1.rb b/challenge-112/abigail/ruby/ch-1.rb new file mode 100644 index 0000000000..e26463cb68 --- /dev/null +++ b/challenge-112/abigail/ruby/ch-1.rb @@ -0,0 +1,27 @@ +#!/usr/bin/ruby + +# +# See ../README.md +# + +# +# Run as: ruby ch-1.rb < input-file +# + +ARGF . each_line do + | line | + parts = line . strip() . split (/\/+/) + parts2 = [] + parts . each do + | part | + if part == "" or part == "." # Skip empty parts and current directory + next + end + if part == ".." # Remove parent directory + parts2 . pop + next + end + parts2 . push (part) # Add part + end + puts ("/" + parts2 . join("/")) # Print result +end diff --git a/challenge-112/abigail/ruby/ch-2.rb b/challenge-112/abigail/ruby/ch-2.rb new file mode 100644 index 0000000000..68c59fef40 --- /dev/null +++ b/challenge-112/abigail/ruby/ch-2.rb @@ -0,0 +1,22 @@ +#!/usr/bin/ruby + +# +# See ../README.md +# + +# +# Run as: ruby ch-1.rb < input-file +# + +$cache = {} +$cache [0] = 1 +$cache [1] = 1 + +def fib (n) + $cache [n] ||= fib(n - 1) + fib(n - 2) +end + +ARGF . each_line do + | n | + puts (fib(n . to_i)) +end -- cgit From d498fd3ea3e1df8c647b83e5e4922e6af971960b Mon Sep 17 00:00:00 2001 From: Abigail Date: Tue, 11 May 2021 19:29:08 +0200 Subject: Use closed form to calculate Fibonacci numbers for week 112, part 2. --- challenge-112/abigail/ruby/ch-2.rb | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) (limited to 'challenge-112/abigail/ruby') diff --git a/challenge-112/abigail/ruby/ch-2.rb b/challenge-112/abigail/ruby/ch-2.rb index 68c59fef40..003d99288f 100644 --- a/challenge-112/abigail/ruby/ch-2.rb +++ b/challenge-112/abigail/ruby/ch-2.rb @@ -5,18 +5,13 @@ # # -# Run as: ruby ch-1.rb < input-file +# Run as: ruby ch-2.rb < input-file # -$cache = {} -$cache [0] = 1 -$cache [1] = 1 - -def fib (n) - $cache [n] ||= fib(n - 1) + fib(n - 2) -end +SQRT5 = Math . sqrt 5 +PHI = (1 + SQRT5) / 2 ARGF . each_line do | n | - puts (fib(n . to_i)) + puts ((PHI ** (n . to_i + 1) / SQRT5) . round) end -- cgit