rapport/sequence.lua

25 lines
677 B
Lua

--Partial sequence s:S->N, S <= N, N = { 1, 2, 3, ... }
--Consists of:
--A sequence stored as a (sparse) array
--["cmin"], a key whose value is the smallest element outside the support of the sequence
local sequence = {}
sequence.__index = sequence
function sequence.new( name )
return setmetatable( { cmin = 1, name = name }, sequence )
end
function sequence:insert( x, y )
if self.cmin == x then
repeat self.cmin = self.cmin + 1 until not self[self.cmin]
end
self[x] = y
--debug:
--print( "First unclaimed element:", self.name, self.cmin )
end
--Maybe leave this for later, we'll inline it for now.
function sequence:complement()
end
return sequence