aboutsummaryrefslogtreecommitdiff
path: root/challenge-102/paulo-custodio/lua/ch-2.lua
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-102/paulo-custodio/lua/ch-2.lua')
-rw-r--r--challenge-102/paulo-custodio/lua/ch-2.lua46
1 files changed, 46 insertions, 0 deletions
diff --git a/challenge-102/paulo-custodio/lua/ch-2.lua b/challenge-102/paulo-custodio/lua/ch-2.lua
new file mode 100644
index 0000000000..72d378f496
--- /dev/null
+++ b/challenge-102/paulo-custodio/lua/ch-2.lua
@@ -0,0 +1,46 @@
+#!/usr/bin/env lua
+
+--[[
+Challenge 102
+
+TASK #2 > Hash-counting String
+Submitted by: Stuart Little
+
+You are given a positive integer $N.
+
+Write a script to produce Hash-counting string of that length.
+
+The definition of a hash-counting string is as follows:
+- the string consists only of digits 0-9 and hashes, '#'
+- there are no two consecutive hashes: '##' does not appear in your string
+- the last character is a hash
+- the number immediately preceding each hash (if it exists) is the position
+of that hash in the string, with the position being counted up from 1
+
+It can be shown that for every positive integer N there is exactly one such
+length-N string.
+Examples:
+
+(a) "#" is the counting string of length 1
+(b) "2#" is the counting string of length 2
+(c) "#3#" is the string of length 3
+(d) "#3#5#7#10#" is the string of length 10
+(e) "2#4#6#8#11#14#" is the string of length 14
+--]]
+
+function hash_counting(n)
+ local out, i = '', n
+ while i > 0 do
+ p = i
+ out = '#'..out
+ i = i - 1
+ while i > 0 and p ~= 0 do
+ out = tostring(p % 10)..out
+ i = i - 1
+ p = math.floor(p / 10)
+ end
+ end
+ return out
+end
+
+print(hash_counting(tonumber(arg[1])))