code.go 796 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package main
  2. import (
  3. "bufio"
  4. "fmt"
  5. "log"
  6. "os"
  7. )
  8. type Point struct {
  9. y, x int
  10. steps int
  11. }
  12. func readInput(file *os.File) (Point, [][]byte) {
  13. scanner := bufio.NewScanner(file)
  14. var board [][]byte
  15. var start Point
  16. var index int
  17. for scanner.Scan() {
  18. line := scanner.Text()
  19. if line == "" {
  20. break
  21. }
  22. var row []byte
  23. for i := range line {
  24. if line[i] == 'S' {
  25. start.x = i
  26. start.y = index
  27. }
  28. row = append(row, line[i])
  29. }
  30. board = append(board, row)
  31. index++
  32. }
  33. return start, board
  34. }
  35. func main() {
  36. if len(os.Args) < 2 {
  37. log.Fatal("You need to specify a file!")
  38. }
  39. filePath := os.Args[1]
  40. file, err := os.Open(filePath)
  41. if err != nil {
  42. log.Fatalf("Failed to open %s!\n", filePath)
  43. }
  44. start, board := readInput(file)
  45. fmt.Println(start, board)
  46. }