solve_1.go 843 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. }