Click here to Skip to main content
15,885,985 members
Articles / Programming Languages / Lua

ObjectScript: A new programming language

Rate me:
Please Sign up or sign in to vote.
4.24/5 (6 votes)
9 Oct 2012MIT9 min read 67.1K   107   21  
The ObjectScript is a new programing language that mixes benefits of JavaScript, Lua, and PHP. The ObjectScript has syntax from JavaScript, multiple results from Lua, OOP from PHP and much more.
local function fannkuch(n)
  local p, q, s, sign, maxflips, sum = {}, {}, {}, 1, 0, 0
  for i=1,n do p[i] = i; q[i] = i; s[i] = i end
  repeat
    -- Copy and flip.
    local q1 = p[1]				-- Cache 1st element.
    if q1 ~= 1 then
      for i=2,n do q[i] = p[i] end		-- Work on a copy.
      local flips = 1
      repeat
		local qq = q[q1]
		if qq == 1 then				-- ... until 1st element is 1.
		  sum = sum + sign*flips
		  if flips > maxflips then 
			maxflips = flips 
		  end -- New maximum?
		  break
		end
		q[q1] = q1
		if q1 >= 4 then
		  local i, j = 2, q1 - 1
		  repeat q[i], q[j] = q[j], q[i]; i = i + 1; j = j - 1; until i >= j
		end
		q1 = qq; flips = flips + 1
      until false
    end
    -- Permute.
    if sign == 1 then
      p[2], p[1] = p[1], p[2]; sign = -1	-- Rotate 1<-2.
    else
      p[2], p[3] = p[3], p[2]; sign = 1		-- Rotate 1<-2 and 1<-2<-3.
      for i=3,n do
		local sx = s[i]
		if sx ~= 1 then s[i] = sx-1; break end
		if i == n then return sum, maxflips end	-- Out of permutations.
		s[i] = i
		-- Rotate 1<-...<-i+1.
		local t = p[1]; for j=1,i do p[j] = p[j+1] end; p[i+1] = t
      end
    end
  until false
end
local start_time = os.time()
local n = tonumber(arg and arg[1]) or 1
local sum, flips = fannkuch(n)
io.write(sum, "\nPfannkuchen(", n, ") = ", flips, "\n", "time = ", os.time() - start_time)

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The MIT License


Written By
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions