solve_1.go 835 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package main
  2. import (
  3. "bufio"
  4. "fmt"
  5. "log"
  6. "os"
  7. "strconv"
  8. )
  9. func main() {
  10. nb_occ_zero := 0
  11. lock_num := 50
  12. direction := 1
  13. var nb_ticks int
  14. var instruction string
  15. f, err := os.Open("1/input")
  16. if err != nil {
  17. log.Fatal(err)
  18. }
  19. defer f.Close()
  20. scanner := bufio.NewScanner(f)
  21. // We read input line by line
  22. for scanner.Scan() {
  23. instruction = scanner.Text()
  24. switch instruction[0] {
  25. case 'L':
  26. direction = -1
  27. case 'R':
  28. direction = 1
  29. default:
  30. panic("unrecognized instruction")
  31. }
  32. nb_ticks, err = strconv.Atoi(instruction[1:])
  33. if err != nil {
  34. log.Fatal(err)
  35. }
  36. lock_num = (lock_num + direction*nb_ticks) % 100
  37. if lock_num < 0 {
  38. lock_num = lock_num + 100
  39. }
  40. if lock_num == 0 {
  41. nb_occ_zero++
  42. }
  43. }
  44. if err = scanner.Err(); err != nil {
  45. log.Fatal(err)
  46. }
  47. fmt.Println(nb_occ_zero)
  48. }