Solve triangle solitaire puzzle: Difference between revisions

Content added Content deleted
Line 375: Line 375:
solution$ = ""
solution$ = ""
#
#
func try_move pos dir . res .
func try_move pos dir . .
res = 0
if brd$[pos] = "●" and brd$[pos + dir] = "●" and brd$[pos + 2 * dir] = "·"
if brd$[pos] = "●" and brd$[pos + dir] = "●" and brd$[pos + 2 * dir] = "·"
brd$[pos] = "·"
brd$[pos] = "·"
brd$[pos + dir] = "·"
brd$[pos + dir] = "·"
brd$[pos + 2 * dir] = "●"
brd$[pos + 2 * dir] = "●"
res = 1
.
.
.
.
Line 389: Line 387:
brd$[pos + 2 * dir] = "·"
brd$[pos + 2 * dir] = "·"
.
.
func solve . res .
func solve . solved .
for pos range len brd$[]
for pos range len brd$[]
if brd$[pos] = "●"
if brd$[pos] = "●"
for dir in [ -13 -11 2 13 11 -2 ]
for dir in [ -13 -11 2 13 11 -2 ]
call try_move pos dir moved
call try_move pos dir
if moved = 1
if brd$[pos] = "·"
call solve solved
call solve solved
call undo_move pos dir
call undo_move pos dir
Line 402: Line 400:
.
.
.
.
n_tees += 1
npegs += 1
.
.
.
.
if solved = 1 or npegs = 1
res = 0
if solved = 1 or n_tees = 1
solution$ = str_join brd$[] & solution$
solution$ = str_join brd$[] & solution$
res = 1
solved = 1
.
.
.
.
call solve res
call solve h
print solution$
print solution$
</lang>
</lang>