Lua functional programming
Can someone help you how to redo the code, under the functional programming paradigm
local function main()
print("Введите строку")
p = 0
m = 0
str = io.read()
a = string.len(str)
for i = 1, a do
if str:sub(i,i) == "+" and str:sub(i+3,i+3) == "+" then
p=p+1
else if str:sub(i,i)== "-" and str:sub(i+3,i+3) == "-" then
m = m+1
end
end
end
if p > m then
print("Положительная последовательность больше")
else if m > p then
print("Отрицательная последовательность больше")
else
print("Последовательности равны")
end
end
end
main()
0
2 answers
local function main()
local p, m = 0, 0
local str, a = parse_string()
p, m = count(p, m, a)
print_result(p, m)
end
function parse_string()
print("Введите строку")
str = io.read()
a = string.len(str)
return str, a
end
function count(p, m, a)
for i = 1, a do
if str:sub(i, i) == "+" and str:sub(i + 3, i + 3) == "+" then
p = p + 1
elseif str:sub(i, i)== "-" and str:sub(i + 3, i + 3) == "-" then
m = m + 1
end
end
return p, m
end
function print_result(p, m)
if p > m then
print("Положительная последовательность больше")
elseif m > p then
print("Отрицательная последовательность больше")
else
print("Последовательности равны")
end
end
main()
2
Author: Amir, 2016-09-23 04:59:40
я так сделал.
local function main()
print("Enter string : ")
str = io.read()
analysis(1,str)
end
function plus(n,str)
return (str:sub(n,n) == "+" and str:sub(n+3,n+3) == "+") and 1 or 0
end
function minus(n,str)
return (str:sub(n,n) == "-" and str:sub(n+3,n+3) == "-") and 1 or 0
end
function analysis(n,str)
b = n > string.len(str) and 1 or
plus(n,str)
minus(n,str)
s = plus(n,str) > minus(n,str) and print("пара с знаком (+)") or plus(n,str) < minus(n,str) and print("пара с знаком (-)")
return analysis(n+1,str)
end
main()
0
Author: P.L, 2016-09-24 08:47:30