Petals Around The Rose (Java)

This question is from Programmingpraxis:

Petals Around The Rose. Here’s a sample game:

Let's play 'Petals Around The Rose.The name of the game is significant. At each turn I will roll five dice, then ask you for the score, which will always be zero or an even number. After you guess the score, I will tell you if you are right, or tell you the correct score if you are wrong. The game ends when you prove that you know the secret by guessing the score correctly six times in a row.

The five dice are: 4 2 5 5 4.
What is the score? 6
The correct score is 8.

The five dice are: 2 5 1 3 3.
What is the score? 8
Correct

The five dice are: 2 5 2 5 6.
What is the score? 8
Correct

The five dice are: 6 2 5 3 2.
What is the score? 8
The correct score is 6.

The five dice are: 4 2 1 1 2.
What is the score? 6
The correct score is 0.

The five dice are: 5 6 3 6 6.
What is the score? 6
Correct

The five dice are: 2 6 2 2 4.
What is the score? 6
The correct score is 0.

The five dice are: 3 2 4 2 1.
What is the score? 0
The correct score is 2.

The five dice are: 4 4 2 6 3.
What is the score? 2
Correct

The five dice are: 2 1 5 1 5.
What is the score? 8
Correct

The five dice are: 1 5 5 2 4.
What is the score? 8
Correct

The five dice are: 5 2 4 6 3.
What is the score? 6
Correct

The five dice are: 1 6 1 5 3.
What is the score? 6
Correct

The five dice are: 1 4 3 2 6.
What is the score? 2
Correct

Congratulations! You are now a member of the Fraternity of the Petals Around The Rose. You must pledge never to reveal the secret to anyone.

Solution:

import java.util.*;

public class Petals_Around_The_Rose {
	static String intro = "Let's play 'Petals Around The Rose."
			+"\nThe name of the game is significant."
			+"\nAt each turn I will roll five dice,"
			+"\nthen ask you for the score, which"
			+"\nwill always be zero or an even number."
			+"\nAfter you guess the score, I will tell"
			+"\nyou if you are right, or tell you the"
			+"\ncorrect score if you are wrong. The game"
			+"\nends when you prove that you know the"
			+"\nsecret by guessing the score correctly";
	public static void main(String[] args) {
		int count = 0;//counting number of correct answer
		System.out.println(intro);

		while(count < 5){
			int [] a = roll();
			System.out.println("\nThe five dice are: " + Arrays.toString(a));
			System.out.print("What is the score?");
			Scanner input = new Scanner(System.in);
			Integer ans = input.nextInt();
			int expected = secret(a);
			if(ans == expected){
				count++;
				System.out.println("Correct.\n");
			} else {
				count = 0;
				System.out.println("The correct score is " + expected + ".");
			}

		}

		System.out.println("\nCongratulations! You are now a member"
				+ "\nof the Fraternity of the Petals Around"
				+ "\nThe Rose. You must pledge never to"
				+ "\nreveal the secret to anyone.");
	}
	//check if answer is correct
	public static int secret(int [] roll){
		int ans = 0;
		for(int i = 0; i < roll.length; i++){
			if(roll[i] == 3)
				ans += 2;
			if(roll[i] == 5)
				ans += 4;
		}
		return ans;
	}
	//rolling dice
	public static int[] roll(){
		int roll[] = new int[5];
		Random generator = new Random();

		for(int i = 0; i < 5; i++)
			roll[i] = generator.nextInt(6) + 1;
		return roll;
	}
}

3 thoughts on “Petals Around The Rose (Java)

  1. This blog entry solves an exercise from Programming Praxis. In the future, please put a link to the original exercise somewhere in the text of your blog entry; it’s proper netiquette to do so, and also required by the Creative Commons BY-NC-SA license under which the exercise is published. Many thanks.

Leave a reply to programmingpraxis Cancel reply