Browse Source

Solved part1

Piotr Czajkowski 2 years ago
parent
commit
c9d3ad6089
2 changed files with 49 additions and 1 deletions
  1. 47 1
      21/code.go
  2. 2 0
      21/input

+ 47 - 1
21/code.go

@@ -43,11 +43,57 @@ func readInput(file string) (int, int) {
 	return player1, player2
 }
 
+var dice int
+
+func roll() int {
+	dice++
+	return dice
+}
+
+func part1(player1, player2 int) int {
+	var score1, score2 int
+	first := true
+	countDice := 0
+
+	for {
+		if score1 >= 1000 || score2 >= 1000 {
+			break
+		}
+
+		if first {
+			player1 = (roll() + roll() + roll() + player1) % 10
+			if player1 == 0 {
+				player1 = 10
+			}
+
+			score1 += player1
+			first = false
+			countDice += 3
+		} else {
+			player2 = (roll() + roll() + roll() + player2) % 10
+			if player2 == 0 {
+				player2 = 10
+			}
+
+			score2 += player2
+			first = true
+			countDice += 3
+		}
+	}
+
+	if score1 > score2 {
+		return score2 * countDice
+	}
+
+	return score1 * countDice
+}
+
 func main() {
 	if len(os.Args) < 2 {
 		log.Fatal("Please provide a file name as argument")
 	}
 
 	player1, player2 := readInput(os.Args[1])
-	fmt.Println(player1, player2)
+	dice = 0
+	fmt.Println("Part1:", part1(player1, player2))
 }

+ 2 - 0
21/input

@@ -0,0 +1,2 @@
+Player 1 starting position: 7
+Player 2 starting position: 4