Problem:
Nine coins are placed in a 3-by-3 matrix with some face up and some face down. You can represent the state of the coins using a 3-by-3 matrix with values 0 (head) and 1 (tail). Here are some examples:
0 0 0 1 0 1 1 1 0 1 0 1 1 0 0
0 1 0 0 0 1 1 0 0 1 1 0 1 1 1
0 0 0 1 0 0 0 0 1 1 0 0 1 1 0
Each state can also be represented using a binary number. For example, the preceding matrices correspond to the numbers:
000010000 101001100 110100001 101110100 100111110
There are a total of 512 possibilities. So, you can use decimal numbers 0, 1, 2, 3,
and 511 to represent all states of the matrix. Write a program that prompts the
user to enter a number between 0 and 511 and displays the corresponding matrix
with characters H and T.
Output:
Enter a number between 0 and 511
458
T T T
H H T
H T H
458
T T T
H H T
H T H
Solution:
import java.util.Scanner;
public class HeadsAndTails
{
public static int[] decimalToBinary(int decimal)
{
int[] nums = new int[9];
for (int i = nums.length-1;i>=0 && decimal >0;i--)
{
if ( decimal% 2 == 0)
nums[i] = 0;
else
nums[i] = 1;
decimal /= 2;
}
return nums;
}
public static void printHeadsAndTails(int[] nums)
{
for (int i =0; i<9;i++)
{
if (nums[i] == 0) System.out.print("H ");
else System.out.print("T ");
if ((i+1) % 3 == 0) System.out.println();
}
}
public static void main (String[] args)
{
Scanner scan = new Scanner (System.in);
System.out.println("Enter a number between 0 and 511");
int number = scan.nextInt();
int[] nums = decimalToBinary(number);
printHeadsAndTails(nums);
}
}
i dont think this works lol
ReplyDeletenevermind it does work. lol
DeleteSorry but I don't understand the problem from the start.... Where did you get
Delete0 0 0 1 0 1 1 1 0 1 0 1 1 0 0
0 1 0 0 0 1 1 0 0 1 1 0 1 1 1
0 0 0 1 0 0 0 0 1 1 0 0 1 1 0 ?
I thought it was only a 3x3 matrix?
Please explain
Thanks!
I'm sorry I forgot to add spaces between the examples. This is how it looks now:
ReplyDelete0 0 0 1 0 1 1 1 0 1 0 1 1 0 0
0 1 0 0 0 1 1 0 0 1 1 0 1 1 1
0 0 0 1 0 0 0 0 1 1 0 0 1 1 0.
Happy Coding :)