|
@@ -0,0 +1,54 @@
|
|
|
|
|
+package main
|
|
|
|
|
+
|
|
|
|
|
+import (
|
|
|
|
|
+ "bufio"
|
|
|
|
|
+ "fmt"
|
|
|
|
|
+ "log"
|
|
|
|
|
+ "os"
|
|
|
|
|
+ "strconv"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+func main() {
|
|
|
|
|
+ nb_occ_zero := 0
|
|
|
|
|
+ lock_num := 50
|
|
|
|
|
+ direction := 1
|
|
|
|
|
+ var nb_ticks int;
|
|
|
|
|
+ var instruction string
|
|
|
|
|
+ f, err := os.Open("1/input")
|
|
|
|
|
+ if err != nil{
|
|
|
|
|
+ log.Fatal(err)
|
|
|
|
|
+ }
|
|
|
|
|
+ defer f.Close()
|
|
|
|
|
+ scanner := bufio.NewScanner(f)
|
|
|
|
|
+
|
|
|
|
|
+ // We read input line by line
|
|
|
|
|
+ for scanner.Scan(){
|
|
|
|
|
+ instruction = scanner.Text()
|
|
|
|
|
+ switch (instruction[0]){
|
|
|
|
|
+ case 'L':
|
|
|
|
|
+ direction = -1
|
|
|
|
|
+ case 'R':
|
|
|
|
|
+ direction = 1
|
|
|
|
|
+ default:
|
|
|
|
|
+ panic("unrecognized instruction")
|
|
|
|
|
+ }
|
|
|
|
|
+ nb_ticks, err = strconv.Atoi(instruction[1:])
|
|
|
|
|
+ if err != nil{
|
|
|
|
|
+ log.Fatal(err)
|
|
|
|
|
+ }
|
|
|
|
|
+ lock_num = (lock_num + direction * nb_ticks) % 100
|
|
|
|
|
+ if lock_num < 0 {
|
|
|
|
|
+ lock_num = lock_num + 100
|
|
|
|
|
+ }
|
|
|
|
|
+ if lock_num == 0 {
|
|
|
|
|
+ nb_occ_zero++
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if err = scanner.Err(); err != nil {
|
|
|
|
|
+ log.Fatal(err)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ fmt.Println(nb_occ_zero)
|
|
|
|
|
+}
|