| 1234567891011121314151617181920212223242526272829303132333435363738 |
- -- ================
- -- Private helpers
- -- ================
- local setmetatable = setmetatable
- -- Internal class constructor
- local class = function(...)
- local klass = {}
- klass.__index = klass
- klass.__call = function(_,...) return klass:new(...) end
- function klass:new(...)
- local instance = setmetatable({}, klass)
- klass.__init(instance, ...)
- return instance
- end
- return setmetatable(klass,{__call = klass.__call})
- end
- local Node = class()
- Node.__tostring = function(n)
- local res = 'Node %d (%d neighbours)'
- res = res:format(n.id, #n.neighbours)
- for _,nn in pairs(n.neighbours) do
- res = res..('\n=> %d'):format(nn.id)
- end
- return res
- end
- function Node:__init( id )
- self.id = id
- self.neighbours = {}
- end
- function Node:link( node )
- table.insert(self.neighbours, node)
- end
- return Node
|