Welcome! Are you ready to dive into the world of array manipulations? Today, we’ll explore an engaging problem that combines logic, simulation, and programming skills. Imagine a small town with houses, balloons, and a unique sharing game.
Let’s uncover the solution step by step!
In a small town, houses are numbered sequentially from 1 to n
, each initially holding a specific number of balloons. During a town festival, the houses participate in a game where they share balloons according to these rules:
- At each step, each house sends half of its balloons to the next house. For the last house, the next house is the first one, creating a circular pattern.
- The number of balloons shared is always rounded down (e.g., if a house has 5 balloons, it sends 2).
- The game ends when the number of balloons at each house stops changing between steps.
Your task is to implement a Ruby function simulate_balloon_game(balloons)
that simulates this game and returns the number of steps it takes for the balloon distribution to stabilize.
Example:
If balloons = [4, 1, 2]
, the output should be 3
. Here’s why:
- After step 1:
[3, 3, 1]
- After step 2:
[2, 3, 2]
- After step 3:
[2, 3, 2]
(no change from the previous step)
