aboutsummaryrefslogtreecommitdiff
path: root/challenge-104/abigail/lua/ch-1a.lua
diff options
context:
space:
mode:
author冯昶 <seaker@qq.com>2021-04-23 11:23:51 +0800
committer冯昶 <seaker@qq.com>2021-04-23 11:23:51 +0800
commit9f5a7a1af0399189b53be44ee94d534606cb8bdd (patch)
treecf1e2bfe0ff9e63af11cb3dea9f7a79c1d2b726d /challenge-104/abigail/lua/ch-1a.lua
parentf07721a447942936d7189b4beec3c2acae0c635d (diff)
parent9571f967ddd4d11a0195c2b9f8f3fbb63fad9a15 (diff)
downloadperlweeklychallenge-club-9f5a7a1af0399189b53be44ee94d534606cb8bdd.tar.gz
perlweeklychallenge-club-9f5a7a1af0399189b53be44ee94d534606cb8bdd.tar.bz2
perlweeklychallenge-club-9f5a7a1af0399189b53be44ee94d534606cb8bdd.zip
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-104/abigail/lua/ch-1a.lua')
-rw-r--r--challenge-104/abigail/lua/ch-1a.lua49
1 files changed, 49 insertions, 0 deletions
diff --git a/challenge-104/abigail/lua/ch-1a.lua b/challenge-104/abigail/lua/ch-1a.lua
new file mode 100644
index 0000000000..16569bf822
--- /dev/null
+++ b/challenge-104/abigail/lua/ch-1a.lua
@@ -0,0 +1,49 @@
+#!/opt/local/bin/lua
+
+--
+-- See ../README.md
+--
+
+--
+-- Run as: lua ch-1a.lua
+--
+
+--
+-- Initialize the cache
+--
+
+local cache = {}
+cache [0] = 0
+cache [1] = 1
+local max = 50
+
+--
+-- Fusc sequence is defined as:
+-- ( n, 0 <= n <= 1
+-- fusc (n) = { fusc (n / 2), n > 1 && n even
+-- ( fusc ((n - 1) / 2) + fusc ((n + 1) / 2), n > 1 && n odd
+--
+
+function fusc (n)
+ if cache [n] == nil then
+ if n % 2 == 1 then
+ cache [n] = fusc ((n - 1) / 2) + fusc ((n + 1) / 2)
+ else
+ cache [n] = fusc (n / 2)
+ end
+ end
+ return cache [n]
+end
+
+
+--
+-- Calculate the values and print them
+--
+
+for i = 0, max - 1 do
+ if i > 0
+ then io . write (" ")
+ end
+ io . write (fusc (i))
+end
+io . write ("\n")