The Problem Statement

You are keeping the scores for a baseball game with a unique set of rules. At the beginning of the game, you start with an empty record. You're given a list of strings operations, where each element represents an operation to apply to the record. The operations include:

  1. An integer x: Record a new score of x.
  2. '+': Record a new score that is the sum of the previous two scores.
  3. 'D': Record a new score that is double the previous score.
  4. 'C': Invalidate the previous score, removing it from the record.

Your task is to return the sum of all the scores on the record after applying all the operations.

Solving the Problem

To solve this problem, we'll iterate through the list of operations and update the record accordingly. Let's break down the steps:

  1. Initialize an Empty Record: We start with an empty list to store the scores.
  2. Iterate Through Operations: For each operation in the given list:
  • If the operation is '+', we add the sum of the last two scores to the record.
  • If the operation is 'D', we double the last score and add it to the record.
  • If the operation is 'C', we remove the last score from the record.
  • Otherwise, if it's an integer, we add it directly to the record.
  1. Calculate the Sum: After applying all operations, we calculate the sum of all scores in the record.
  2. Return the Sum: Finally, we return the sum as the result.

Python Solution

Let's now translate the above steps into Python code using a class named Solution:

from typing import List

class Solution:
    def calPoints(self, operations: List[str]) -> int:
        # Initialize an empty record
        arr = []

        # Iterate through operations
        for i in range(len(operations)):
            # Check each operation
            match operations[i]:
                case "+":
                    arr.append(arr[-1] + arr[-2])  # Record sum of last two scores
                case "D":
                    arr.append(2 * arr[-1])  # Record double of last score
                case "C":
                    arr.pop()  # Remove last score
                case _:
                    arr.append(int(operations[i]))  # Record the score directly
        
        # Calculate the sum of all scores
        total_sum = sum(arr)
        
        # Return the sum
        return total_sum

Conclusion

In this blog, we tackled a coding problem involving baseball scoring with unique rules. By breaking down the problem statement and following a systematic approach, we arrived at a Python solution that efficiently calculates the sum of all scores. This problem not only tests your coding skills but also challenges your ability to handle different types of operations effectively. Happy coding!