2 Komitmen 7670788553 ... baf921144d

Pembuat SHA1 Pesan Tanggal
  Piotr Czajkowski baf921144d Just think and it'll come 1 tahun lalu
  Piotr Czajkowski 79913f6dca Won't do it by brute force 1 tahun lalu
1 mengubah file dengan 20 tambahan dan 1 penghapusan
  1. 20 1
      04/code.go

+ 20 - 1
04/code.go

@@ -12,6 +12,8 @@ type Card struct {
 	id      int
 	winning []int
 	owned   []int
+	wins    int
+	count   int
 }
 
 func readNumbers(part string) []int {
@@ -48,7 +50,7 @@ func readInput(file *os.File) []Card {
 			break
 		}
 
-		var current Card
+		current := Card{count: 1}
 		n, err := fmt.Sscanf(line, "Card %d:", &current.id)
 		if n != 1 || err != nil {
 			log.Fatalf("Failed to read card id: %s\n%s", line, err)
@@ -104,6 +106,22 @@ func part1(cards []Card) int {
 		if count > 0 {
 			result += pow(count - 1)
 		}
+
+		cards[i].wins = count
+	}
+
+	return result
+}
+
+func part2(cards []Card) int {
+	var result int
+	for i := range cards {
+		result += cards[i].count
+		if cards[i].wins > 0 {
+			for j := i + 1; j <= i+cards[i].wins; j++ {
+				cards[j].count += cards[i].count
+			}
+		}
 	}
 
 	return result
@@ -123,4 +141,5 @@ func main() {
 
 	cards := readInput(file)
 	fmt.Println("Part1:", part1(cards))
+	fmt.Println("Part2:", part2(cards))
 }