SDE Path

Cricket Scoreboard

Easy

Cricket Scoreboard

Runs, wickets, and overs from a stream of deliveries — the design work is pinning the extras and over rules precisely.

Scoring rules

  • normal — add runs to the total and count one legal ball.
  • wide — add runs + 1 (one penalty run plus any runs taken); it is not a legal ball.
  • noball — add runs + 1 (one penalty run plus runs off the delivery); it is not a legal ball.
  • wicket — add runs (runs completed on the delivery still count, e.g. a run-out), increment the wicket tally, and count one legal ball.
  • An over is 6 legal balls. overs reports "<completedOvers>.<legalBallsInCurrentOver>" — e.g. after 7 legal balls it reads 1.1; wides and no-balls never advance it.
  • All values are cumulative from the start of the innings, and the class is fully deterministic.

API to implement

Implement the class Scoreboard. The I/O driver is already written in the starter code — it parses the command script below and calls your methods. You only implement the class.

| Command | Returns | Behavior | |---|---|---| | ball <runs> <event> | — | Record one delivery worth runs runs with outcome event ∈ {normal, wide, noball, wicket}. See the scoring rules below. | | score | int | Total runs scored so far (including extras). | | wickets | int | Number of wickets fallen. | | overs | string | Overs bowled as "<completedOvers>.<legalBallsInCurrentOver>" (6 legal balls = 1 over). |

Input format

The first line contains Q, the number of operations. Each of the next Q lines is one command as listed above. String arguments contain no spaces.

Output format

For each command with a non-void return, print its result on its own line, in order. The driver does this for you — your methods just return values.

This is a design problem: the hidden tests exercise edge cases and interaction sequences, not performance tricks. Model the state cleanly and the tests will pass.

Sample cases

Example 1
Input
9
ball 0 wide
ball 0 noball
ball 4 normal
score
overs
ball 1 wide
score
overs
wickets
Expected output
6
0.1
8
0.1
0
Example 2
Input
11
ball 1 normal
ball 2 normal
ball 0 normal
ball 4 normal
ball 1 normal
ball 0 wicket
overs
score
wickets
ball 6 normal
overs
Expected output
1.0
8
1
1.1