day22.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package main
  2. import (
  3. "bufio"
  4. "fmt"
  5. "log"
  6. "os"
  7. "strconv"
  8. )
  9. func readFile(file *os.File) [2][]int {
  10. var decks [2][]int
  11. index := 0
  12. changed := false
  13. scanner := bufio.NewScanner(file)
  14. for scanner.Scan() {
  15. line := scanner.Text()
  16. if line == "" {
  17. if changed {
  18. break
  19. }
  20. continue
  21. }
  22. if line == "Player 1:" {
  23. continue
  24. }
  25. if line == "Player 2:" {
  26. index++
  27. changed = true
  28. continue
  29. }
  30. card, err := strconv.Atoi(line)
  31. if err != nil {
  32. log.Fatalf("Error processing card for %s: %s", line, err)
  33. }
  34. decks[index] = append(decks[index], card)
  35. }
  36. if err := scanner.Err(); err != nil {
  37. log.Fatalf("Scanner error: %s", err)
  38. }
  39. return decks
  40. }
  41. func main() {
  42. if len(os.Args) < 2 {
  43. log.Fatal("You need to specify a file!")
  44. }
  45. filePath := os.Args[1]
  46. file, err := os.Open(filePath)
  47. if err != nil {
  48. log.Fatalf("Failed to open %s!\n", filePath)
  49. }
  50. decks := readFile(file)
  51. if err := file.Close(); err != nil {
  52. log.Fatalf("Failed to close file: %s", err)
  53. }
  54. fmt.Println(decks)
  55. }