diff options
Diffstat (limited to 'challenge-102/paulo-custodio/lua/ch-2.lua')
| -rw-r--r-- | challenge-102/paulo-custodio/lua/ch-2.lua | 46 |
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]))) |
