A star algorithm on go lang
Here is an example of usage :
err, road := a_alg.SearchStandardAStar2D(
". . . . # . . . . . . . # . . . . . .\n" +
". . O . # . . . . . . . # . . . # . .\n" +
". # # . # . . . . . . . # . . . # . .\n" +
". . # # # . . . . . . . # . . . # . .\n" +
". . . # . . # . . . . . # . . . # . .\n" +
". . . . . . . . . # . . # . . . # . .\n" +
". . . # . . . # . . # . # . . . # . .\n" +
". . . # # # # # # . # . # . . . # . .\n" +
". . . # . . . . . . # . # . . . # . .\n" +
". . . # . . . . # # # . # . . . # . .\n" +
". . . # # # # . . # . . # . . . # . .\n" +
". # . . . . # . . . . . . . . . # . .\n" +
". . . # # # . # . # . # # # # # # . .\n" +
". # . . . # . # . . . # . . . # . . .\n" +
". . # # . . . . # # # # . . X # . . .\n" +
". # . . . . . . . . . # . . . . . . .\n")
if err != nil {
log.Println(err)
} else {
log.Printf("\n%v", road)
}
*It prints ->
. . . . # . . . . . . . # . . . ↙ . .
. → O . # . . . . . . . # . . ↙ # ↖ .
↗ # # . # . . . . . . . # . ↓ . # ↑ .
. ↖ # # # . . . . . . . # . ↓ . # ↑ .
. . ↖ # . . # . . . . . # . ↓ . # ↑ .
. . . ↖ ← ← ← ← . # ↙ . # . ↓ . # ↑ .
. . . # . . . # ↖ ← # ↖ # . ↓ . # ↑ .
. . . # # # # # # . # ↑ # . ↓ . # ↑ .
. . . # . . . . . . # ↑ # . ↓ . # ↑ .
. . . # . . . . # # # ↑ # . ↙ . # ↑ .
. . . # # # # . . # . ↑ # ↙ . . # ↑ .
. # . . . . # . . . . . ↖ . . . # ↑ .
. . . # # # . # . # . # # # # # # ↑ .
. # . . . # . # . . . # . . . # ↗ . .
. . # # . . . . # # # # . . X # ↑ . .
. # . . . . . . . . . # . . . ↗ . . .