Sha256: 23682e537b813c1514c278c8b07078332beba2432731d575fa69c73b3ef64d14

Contents?: true

Size: 1.51 KB

Versions: 366

Compression:

Stored size: 1.51 KB

Contents

local ones = {
  [1] = 'one',
  [2] = 'two',
  [3] = 'three',
  [4] = 'four',
  [5] = 'five',
  [6] = 'six',
  [7] = 'seven',
  [8] = 'eight',
  [9] = 'nine'
}

local teens = {
  [10] = 'ten',
  [11] = 'eleven',
  [12] = 'twelve',
  [13] = 'thirteen',
  [14] = 'fourteen',
  [15] = 'fifteen',
  [16] = 'sixteen',
  [17] = 'seventeen',
  [18] = 'eighteen',
  [19] = 'nineteen',
}

local tens = {
  [2] = 'twenty',
  [3] = 'thirty',
  [4] = 'forty',
  [5] = 'fifty',
  [6] = 'sixty',
  [7] = 'seventy',
  [8] = 'eighty',
  [9] = 'ninety'
}

local group_name = {
  'thousand',
  'million',
  'billion'
}

local function say_group(n)
  local said = ''

  if n // 100 > 0 then
    said = said .. ones[n // 100] .. ' hundred'
    n = n - (n // 100) * 100
    if n > 0 then said = said .. ' ' end
  end

  if tens[n // 10] then
    said = said .. tens[n // 10]
    n = n - (n // 10) * 10
    if n > 0 then said = said .. '-' end
  end

  if teens[n] then
    said = said .. teens[n]
  elseif ones[n] then
    said = said .. ones[n]
  end

  return said
end

return function(n)
  if n < 0 or n > 999999999999 then return -1 end

  local groups = {}
  local group_index = 0

  while n > 0 do
    local group = say_group(n % 1000)

    if group ~= '' then
      if group_name[group_index] then
        group = group .. ' ' .. group_name[group_index]
      end
      table.insert(groups, 1, group)
    end

    n = n // 1000
    group_index = group_index + 1
  end

  if #groups == 0 then
    return 'zero'
  else
    return table.concat(groups, ' ')
  end
end

Version data entries

366 entries across 366 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/lua/exercises/say/example.lua
trackler-2.2.1.179 tracks/lua/exercises/say/example.lua
trackler-2.2.1.178 tracks/lua/exercises/say/example.lua
trackler-2.2.1.177 tracks/lua/exercises/say/example.lua
trackler-2.2.1.176 tracks/lua/exercises/say/example.lua
trackler-2.2.1.175 tracks/lua/exercises/say/example.lua
trackler-2.2.1.174 tracks/lua/exercises/say/example.lua
trackler-2.2.1.173 tracks/lua/exercises/say/example.lua
trackler-2.2.1.172 tracks/lua/exercises/say/example.lua
trackler-2.2.1.171 tracks/lua/exercises/say/example.lua
trackler-2.2.1.170 tracks/lua/exercises/say/example.lua
trackler-2.2.1.169 tracks/lua/exercises/say/example.lua
trackler-2.2.1.167 tracks/lua/exercises/say/example.lua
trackler-2.2.1.166 tracks/lua/exercises/say/example.lua
trackler-2.2.1.165 tracks/lua/exercises/say/example.lua
trackler-2.2.1.164 tracks/lua/exercises/say/example.lua
trackler-2.2.1.163 tracks/lua/exercises/say/example.lua
trackler-2.2.1.162 tracks/lua/exercises/say/example.lua
trackler-2.2.1.161 tracks/lua/exercises/say/example.lua
trackler-2.2.1.160 tracks/lua/exercises/say/example.lua