X-Git-Url: http://git.scottworley.com/slidingtile/blobdiff_plain/2bf3412d1ed0c9da3c83d9ca276a7c91e4356d6a..e86755d75f4040ae6619702a6501325ea81b03e1:/sliding_tile.go?ds=inline diff --git a/sliding_tile.go b/sliding_tile.go deleted file mode 100644 index 68cd4b1..0000000 --- a/sliding_tile.go +++ /dev/null @@ -1,90 +0,0 @@ -package main - -import "flag" -import "fmt" -import "os" -import "reflect" -import "strconv" - -import "github.com/petar/GoLLRB/llrb" -import "github.com/willf/bloom" - -var bloomsize = flag.Int("bloomsize", 2000000, "Size bloomfilter for this many states.") - -const HOLE = 0 -const BOARD_DIM = 4 -const BOARD_SIZE = BOARD_DIM * BOARD_DIM - -type Space int8 -type Board [BOARD_SIZE]Space -type Step struct { - board Board - prev *Step - length int -} - -const ( - LEFT = -1 - RIGHT = +1 - UP = -BOARD_DIM - DOWN = +BOARD_DIM -) - -func read_board_from_strings(in []string) (*Board, error) { - if len(in) != BOARD_SIZE { - return nil, fmt.Errorf("Please provide %d values", BOARD_SIZE) - } - var b Board - for i, s := range in { - num, err := strconv.Atoi(s) - b[i] = Space(num) - if err != nil { - return nil, err - } - } - return &b, nil -} - -func adjacent_spaces(s Space) []Space { - if s < 0 || s >= BOARD_SIZE { - panic("Invalid space") - } - var adjacent []Space - if s >= BOARD_DIM { - adjacent = append(adjacent, s+UP) - } - if s < BOARD_SIZE-BOARD_DIM { - adjacent = append(adjacent, s+DOWN) - } - if s%BOARD_DIM != 0 { - adjacent = append(adjacent, s+LEFT) - } - if s%BOARD_DIM != BOARD_DIM-1 { - adjacent = append(adjacent, s+RIGHT) - } - return adjacent -} - -func create_successors(start *Step) { - for _, adj := adjacent_spaces(start. -} - -func sliding_tile(start *Board) error { - seen := bloom.NewWithEstimates(uint(*bloomsize), 0.0001) - seen.Add(reflect.ValueOf(*start).Bytes()) - return nil -} - -func main() { - flag.Parse() - start, err := read_board_from_strings(flag.Args()) - if err != nil { - fmt.Println(err) - os.Exit(1) - } - err = sliding_tile(start) - if err != nil { - fmt.Println(err) - os.Exit(1) - } -}