package main

import (
	"bufio"
	"fmt"
	"os"
	"regexp"
	"strconv"
	// "strings"
)

func main() {
  filePath := "input"
  file, err := os.Open(filePath)
  if err != nil {
    panic(err)
  }
  result := 0
  defer file.Close()
  scanner := bufio.NewScanner(file)
  r := regexp.MustCompile(`mul\([0-9]{1,3},[0-9]{1,3}\)|do\(\)|don't\(\)`)
  numbers := regexp.MustCompile(`[0-9]{1,3}`)
  enabled := true
  for scanner.Scan() {
    line := scanner.Text()
    matches := r.FindAllString(line, -1)
    fmt.Println(matches)
    for i := range matches {
      if matches[i] == "do()" {
        fmt.Println("Do")
        enabled = true
      } else if matches[i] == "don't()" {
        fmt.Println("Don't")
        enabled = false
      } else {
        if enabled {
          fmt.Println(matches[i], " enabled")
          multipliers := numbers.FindAllString(matches[i], -1)
          firstNumber, _ := strconv.Atoi(multipliers[0])
          secondNumber, _ := strconv.Atoi(multipliers[1])
          result = result + firstNumber * secondNumber
        } else {
          fmt.Println(matches[i], " disabled")
        }
      }
//      multipliers := numbers.FindAllString(matches[i], -1)
////      fmt.Println(multipliers)
////      fmt.Printf("%T\n", multipliers)
////      fmt.Println(len(multipliers))
////      fmt.Println(multipliers[0])
//      firstNumber, _ := strconv.Atoi(multipliers[0])
//      secondNumber, _ := strconv.Atoi(multipliers[1])
//      result = result + firstNumber * secondNumber
////      for j := range multipliers {
////        multipliersSplit := strings.Fields(multipliers[j])
////        multiplierInt1, _ := strconv.Atoi(multipliersSplit[0])
////        multiplierInt2, _ := strconv.Atoi(multipliersSplit[1])
////        result = result + multiplierInt1 * multiplierInt2
////      }
    }
  }
  fmt.Println(result)
}
