Lua
Реализация языка программирования LuaСтандартная реализация Lua.
Ссылки:
Примеры:
Факториал:
Пример для версий Lua 5.0, Lua 5.1Используется рекурсивное определение факториала.
function factorial(n)
if (n == 0) then
return 1
else
return n * factorial(n - 1)
end
end
for n = 0, 16 do
io.write(n, "! = ", factorial(n), "\n")
end
Hello, World!:
Пример для версий Lua 5.0print("Hello, World!")
Числа Фибоначчи:
Пример для версий Lua 5.0Используется рекурсивное определение чисел Фибоначчи.
function fibonacci(n)
if n<3 then
return 1
else
return fibonacci(n-1) + fibonacci(n-2)
end
end
for n = 1, 16 do
io.write(fibonacci(n), ", ")
end
io.write("...\n")
Числа Фибоначчи:
Пример для версий Lua 5.0Вычисленные числа хранятся в ассоциативном массиве fib
и извлекаются из него для вычисления следующих. По умолчанию ассоциативные массивы в Lua используют целочисленные ключи, начинающиеся с 1, поэтому команда fib = {1, 1}
создает массив с индексами элементов 1 и 2.
fib = {1, 1}
for n = 3, 16 do
fib[n] = fib[n-1] + fib[n-2]
end
for n = 1, 16 do
io.write(fib[n], ", ")
end
io.write("...\n")
Квадратное уравнение:
Пример для версий Lua 5.1*n указывает на то, что читается число.
local A = io.read('*n')
if A==0 then
io.write('Not a quadratic equation.')
return
end
local B = io.read('*n')
local C = io.read('*n')
D = B*B-4*A*C
if D==0 then
io.write('x = ', -B/2/A)
else if D>0 then
io.write('x1 = ', (-B+math.sqrt(D))/2/A, '\nx2 = ', (-B-math.sqrt(D))/2/A)
else
io.write('x1 = (', -B/2/A, ',', math.sqrt(-D)/2/A, ')\nx2 = (', -B/2/A, ',', -math.sqrt(-D)/2/A, ')\n')
end
end
CamelCase:
Пример для версий Lua 5.1Создатели Lua ставили себе за цель создание максимально легкого языка, поэтому вместо полноценных регулярных выражений язык поддерживает pattern matching. Впрочем, это позволяет реализовать большинство функций регулярных выражений без лишних трудозатрат.
В данном примере первая строка читает строку для преобразования; функция io.read()
без аргумента читает строчный тип. Вторая строка изменяет регистр каждой последовательности букв к нужному; паттерн %a
соответствует букве в любом регистре, и для каждого соответствия паттерну вызывается анонимная функция, выполняющая преобразование. Третья строка убирает все последовательности не-букв, и, наконец, четвертая выводит результат на печать.
text = io.read()
text = text.gsub(text, '[%a]+', function(s)
return string.upper(string.sub(s,1,1)) .. string.lower(string.sub(s,2))
end)
text = text.gsub(text, '[%A]+', '')
io.write(text)
Комментарии
]]>blog comments powered by Disqus
]]>