From af98f5448ed09eab256501739b99fb17444b430a Mon Sep 17 00:00:00 2001 From: Abigail Date: Thu, 18 Mar 2021 01:58:24 +0100 Subject: Alternative Lua solution for week 104, part 1 --- challenge-104/abigail/lua/ch-1a.lua | 49 +++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 challenge-104/abigail/lua/ch-1a.lua (limited to 'challenge-104/abigail/lua/ch-1a.lua') 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") -- cgit