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()
Author: demonplus, 2016-09-16

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