gothink

joined 2 years ago
[โ€“] gothink@lemmy.ca 11 points 2 months ago

As others have already mentioned the response just has to be in the form of a question. If you forget in the first round you get a pass and a reminder to "remember your phrasing". Then in double jeopardy if you forget, you'll be ruled incorrect.

Another fun fact is that if the correct response is already in the form of a question, you don't have to add anything. For instance "who's afraid of virginia woolf?" would be accepted as a correct response.

I've also seen a few instances of people unintentionally posing a question and it being accepted. Something along the lines of "oh, uhhh, is it Edward Albee?"

Also the question doesn't have to fit the clue. People often use "where is..." for places, but the clue is almost never describing the location of the place.

[โ€“] gothink@lemmy.ca 3 points 1 year ago (1 children)

I also used Go - my solution for part 1 was essentially identical to yours. I went a different route for part 2 that I think ended up being simpler though.

I just prepended do() and don't() to the original regex with a |, that way it captured all 3 in order and I just looped through all the matches once and toggled the isEnabled flag accordingly.

Always interesting to see how other people tackle the same problem!

Part 2 Code

func part2() {
	filePath := "input.txt"
	file, _ := os.Open(filePath)
	defer file.Close()

	pattern := regexp.MustCompile(`do\(\)|don't\(\)|mul\((\d{1,3}),(\d{1,3})\)`)
	productSum := 0
	isEnabled := true

	scanner := bufio.NewScanner(file)
	for scanner.Scan() {
		line := scanner.Text()
		matches := pattern.FindAllStringSubmatch(line, -1)

		for _, match := range matches {
			if match[0] == "do()" {
				isEnabled = true
			} else if match[0] == "don't()" {
				isEnabled = false
			} else if isEnabled && len(match) == 3 {
				n, _ := strconv.Atoi(match[1])
				m, _ := strconv.Atoi(match[2])
				productSum += n * m
			}
		}
	}

	fmt.Println("Total: ", productSum)
}