start . me .
Directory path . lua , lessons .

File : min-and-max.lua

if os.getenv("LOCAL_LUA_DEBUGGER_VSCODE") == "1" then
  require("lldebugger").start()
end

----require "debugger":start "127.0.0.1:12306":event "wait"
----print "ok"

print("min-and-max.lua")
print("min-and-max.lua : min and max of numbers table")

-- min-and-max.lua

---@diagnostic disable-next-line: deprecated
Spread = table.unpack or unpack -- fix for differences of API

-- min of numbers table
local numbers_table = { 1, 3, 2 }
print("math.min of numbers table : ", math.min(Spread(numbers_table)))

function ReadNumber()
  ---@diagnostic disable-next-line: discard-returns
  ----io.read() -- fix : https://stackoverflow.com/questions/14343502/io-read-isnt-working
  local number = io.read('*n')
  ---@diagnostic disable-next-line: discard-returns
  io.read() -- fix : https://stackoverflow.com/questions/14343502/io-read-isnt-working
  return number
end

-- read numbers table
local numbers = {}
while true do
  io.write('insert a number for table.insert() or quit : ')
  local number = ReadNumber()
  if not number then
    print("quit received")
    break
  end
  print("number : ", number)
  table.insert(numbers, number)
end

-- max of previous numbers table
if #numbers == 0 then
  print("math.max : no number")
else
  print("math.max : ", math.max(Spread(numbers)))
end

-- no table but both min and max respectively

local min, max
while true do
  io.write('insert a number , but no table.insert() or quit : ')
  local number = ReadNumber()
  if not number then
    print("quit received")
    break
  end
  print("number : ", number)

  -- minimum
  if not min then min = number end
  if number < min then min = number end
  print("min : ", min)

  -- maximum
  if not max then max = number end
  if number > max then max = number end
  print("max : ", max)
end

print("program end")