ai :: SearchProblem :: initial_state
# The starting state for the problem
fun initial_state: S is abstract
lib/ai/search.nit:63,2--64,33
# Construct a state form `initial_grid`
redef fun initial_state do
var g = initial_grid
var len = g.length
var width = len.sqrt.to_i
self.width = width
if width * width != len then
print "Error: {g} has {len} tiles. A square number, like {width*width} is needed"
exit 1
end
var res = new ArrayCmp[Tile]
for i in [0..g.length[ do
var c = g.chars[i]
if c == ' ' or c == '.' then
var hole = new Tile('.', -1)
self.hole = hole
res.add hole
else if c >= '1' and c <= '9' then
var t = new Tile(c, '1'.distance(c))
res.add t
else if c >= 'a' and c <= 'z' then
var t = new Tile(c, 'a'.distance(c))
res.add t
else if c >= 'A' and c <= 'Z' then
var t = new Tile(c, 'A'.distance(c))
res.add t
else
print "Error: illegal tile {c} in {g}"
exit 1
end
end
return res
end
lib/ai/examples/puzzle.nit:63,2--95,4