Hide

Problem F
Snakes and Ladders

/problems/snakesandladders/file/statement/en/img-0001.jpg
Snakes and Ladders

Write a program that plays the legendary board game, Snakes and Ladders.

The game is played on a board with exactly 100 squares, numbered from 1 to 100.

The rules of the game are as follows:

  • In each turn, a player rolls a die and moves forward by the same number of squares as indicated by the die.

  • After having moved, if the player is located at the bottom of a ladder, the player moves up the ladder. If a player is instead located at the head of a snake, the player moves down to the tail of the snake.

  • If a player rolls 6, then that player gets to roll the die again. It doesn’t matter if the player just moved up a ladder or down a snake, they are still entitled to another roll.

  • The player who is first to reach the last square wins.

  • If a player is close to the last square and overshoots by rolling a number higher than required, then the player still moves to square 100 and wins the game.

The starter code includes a main() function and a function named roll_die() that shall be used to simulate the rolling of a single 6-sided die.

Input

First the program should prompt the user for n, the number of snakes and ladders on the board.

The second part of the input contains n lines, where each line i contains two integers si and ei, separated by a space, indicating which squares on the board are connected by snakes or ladders, where si designates the starting square and ei the end square of a particular connection.

If si>ei then the pair is considered to be a snake, but if ei>si then it will be a ladder.

Lastly the program should prompt the user for two names, p1 and p2, the names of Player 1 and Player 2. The program then proceeds to play the game following the rules indicated above. Player 1 starts the game.

In the tests n will be restricted to 1n49. It is guaranteed that no snake/ladder will overlap one another. The names p1 and p2 will be of length 1|p1|,|p2|10.

Output

For each turn of the game the program should output the rolls and locations of the players as such:

  • {p} rolled {r} and is now at {d}.”

where p is the name of the given player, r is the number that came up on the die, and d is the number of the destination square where the player ended up after moving according to the die. Additionally it should display one of these messages when players land on a start of a snake or a ladder:

  • Darn! A snake brought {p} down to square {d}.”

  • Splendid! {p} climbed a ladder up to square {d}.”

where d is the square the snake or ladder took the player to. When the game is over, the program should output

  • {p} won the game.”

Sample Input 1 Sample Output 1
9
21 75
30 60
7 18
67 30
85 94
89 60
50 75
11 26
52 16
Joseph
Donald
Joseph rolled 5 and is now at square 5.
Donald rolled 5 and is now at square 5.
Joseph rolled 6 and is now at square 11.
Splendid! Joseph climbed a ladder up to square 26.
Joseph rolled 3 and is now at square 29.
Donald rolled 5 and is now at square 10.
Joseph rolled 5 and is now at square 34.
Donald rolled 6 and is now at square 16.
Donald rolled 2 and is now at square 18.
Joseph rolled 3 and is now at square 37.
Donald rolled 4 and is now at square 22.
Joseph rolled 6 and is now at square 43.
Joseph rolled 3 and is now at square 46.
Donald rolled 3 and is now at square 25.
Joseph rolled 4 and is now at square 50.
Splendid! Joseph climbed a ladder up to square 75.
Donald rolled 6 and is now at square 31.
Donald rolled 2 and is now at square 33.
Joseph rolled 6 and is now at square 81.
Joseph rolled 3 and is now at square 84.
Donald rolled 1 and is now at square 34.
Joseph rolled 4 and is now at square 88.
Donald rolled 6 and is now at square 40.
Donald rolled 4 and is now at square 44.
Joseph rolled 1 and is now at square 89.
Darn! A snake brought Joseph down to square 60.
Donald rolled 5 and is now at square 49.
Joseph rolled 6 and is now at square 66.
Joseph rolled 6 and is now at square 72.
Joseph rolled 3 and is now at square 75.
Donald rolled 4 and is now at square 53.
Joseph rolled 4 and is now at square 79.
Donald rolled 6 and is now at square 59.
Donald rolled 3 and is now at square 62.
Joseph rolled 6 and is now at square 85.
Splendid! Joseph climbed a ladder up to square 94.
Joseph rolled 1 and is now at square 95.
Donald rolled 3 and is now at square 65.
Joseph rolled 5 and is now at square 100.
Joseph won the game.
Hide

Please log in to submit a solution to this problem

Log in