Day 1: Secret Entrance

Megathread guidelines

  • Keep top level comments as only solutions, if you want to say something other than a solution put it in a new post. (replies to comments can be whatever)
  • You can send code in code blocks by using three backticks, the code, and then three backticks or use something such as https://topaz.github.io/paste/ if you prefer sending it through a URL

FAQ

  • reboot6675@sopuli.xyz
    link
    fedilink
    arrow-up
    5
    ·
    edit-2
    21 days ago

    Golang

    func part1() {
    	// file, _ := os.Open("sample.txt")
    	file, _ := os.Open("input.txt")
    	defer file.Close()
    
    	scanner := bufio.NewScanner(file)
    	n := 100
    	current := 50
    	pointingAt0 := 0
    
    	for scanner.Scan() {
    		line := scanner.Text()
    		num, _ := strconv.Atoi(line[1:])
    		if line[0] == 'L' {
    			current = ((current-num)%n + n) % n
    		} else {
    			current = (current + num) % n
    		}
    		if current == 0 {
    			pointingAt0++
    		}
    	}
    
    	fmt.Println(pointingAt0)
    }
    
    func part2() {
    	// file, _ := os.Open("sample.txt")
    	file, _ := os.Open("input.txt")
    	defer file.Close()
    
    	scanner := bufio.NewScanner(file)
    	n := 100
    	current := 50
    	pointingAt0 := 0
    
    	for scanner.Scan() {
    		line := scanner.Text()
    		num, _ := strconv.Atoi(line[1:])
    
    		rounds := num / n
    		pointingAt0 += rounds
    		num = num % n
    		new := -1
    
    		if line[0] == 'L' {
    			new = ((current-num)%n + n) % n
    			if current != 0 && (new > current || new == 0) {
    				pointingAt0++
    			}
    		} else {
    			new = (current + num) % n
    			if current != 0 && (new < current || new == 0) {
    				pointingAt0++
    			}
    		}
    
    		current = new
    	}
    
    	fmt.Println(pointingAt0)
    }