This program is suppose to allow the user to play Aristotles Puzzle with an arra
ID: 3698335 • Letter: T
Question
This program is suppose to allow the user to play Aristotles Puzzle with an array of ints. Can anyone finish this code for me?
import java.util.Arrays;
import java.util.Scanner;
public class AristotlesPuzzle
{
public static void main(String[] args)
{
int[][] board = new int[5][];
configureBoard(board);
populateBoard(board);
printBoard(board);
testIfWinner(board);
}//end main
//method to configure a 2D Array of int
private static void configureBoard(int[][] boardPassed)
{
boardPassed[0] = new int[3];
boardPassed[1] = new int[4];
boardPassed[2] = new int[5];
boardPassed[3] = new int[4];
boardPassed[4] = new int[3];
}//end method
//method to populate a ragged 2D array of ints with 0
private static void populateBoard(int[][] arrayPassed)
{
for(int i = 0; i < arrayPassed.length; ++i)
for(int j = 0; j < arrayPassed[i].length; ++j)
arrayPassed[i][j] = 0;
}//end method
//method to create board
private static void printBoard(int[][] arrayPassed)
{
for(int i = 0; i < arrayPassed.length; ++i)
{
if (arrayPassed[i].length == 3)
{
System.out.print(" ");
}
if (arrayPassed[i].length == 4)
{
System.out.print(" ");
}
if (arrayPassed[i].length == 5)
{
System.out.print(" ");
}
for(int j = 0; j < arrayPassed[i].length; j++)
{
System.out.printf("%2d", arrayPassed[i][j]);
if(j < arrayPassed[i].length - 1)
System.out.print(" | ");
}
System.out.println();
}
}//end method
public static void playerMove(int[][] boardPassed)
{
Scanner keyboard = new Scanner(System.in);
int userRow, userColumn;
do
{
do
{
System.out.println("Please enter your row");
userRow = keyboard.nextInt();
}while(userRow < 1 || userRow > 5);
do
{
System.out.println("Please enter your column");
userColumn = keyboard.nextInt();
}while(userColumn < 1 || userColumn > boardPassed[userRow].length);
userRow--;
userColumn--;
}while(boardPassed[userRow][userColumn] != 0);
}//end method
//FINISH
//PICK NUMBER NOT YET SELECTED
private static void boardUsed(int[][] arrayPassed)
{
for(int i = 0; i < arrayPassed.length; ++i)
for(int j = 0; j < arrayPassed[i].length; ++j)
//PLACE NUMBER IN SPACE
public static boolean testIfWinner(int[][] boardPassed)
{
if(boardPassed[0][0]+ boardPassed[0][1] + boardPassed[0][2] == 38 &&
boardPassed[1][0]+ boardPassed[1][1] + boardPassed[1][2] + boardPassed[1][3] == 38 &&
boardPassed[2][0]+ boardPassed[2][1] + boardPassed[2][2] + boardPassed[2][3] + boardPassed[2][4] == 38 &&
boardPassed[3][0]+ boardPassed[3][1] + boardPassed[3][2] + boardPassed[3][3] == 38 &&
boardPassed[4][0]+ boardPassed[4][1] + boardPassed[4][2] == 38 &&
boardPassed[0][2]+ boardPassed[1][3] + boardPassed[2][4] == 38 &&
boardPassed[0][1]+ boardPassed[1][2] + boardPassed[2][3] + boardPassed[3][3] == 38 &&
boardPassed[0][0]+ boardPassed[1][1] + boardPassed[2][2] + boardPassed[3][2] + boardPassed[4][2] == 38 &&
boardPassed[1][0]+ boardPassed[2][1] + boardPassed[3][1] + boardPassed[4][1] == 38 &&
boardPassed[2][0]+ boardPassed[3][0] + boardPassed[4][0] == 38 &&
boardPassed[2][0]+ boardPassed[1][0] + boardPassed[0][0] == 38 &&
boardPassed[3][0]+ boardPassed[2][1] + boardPassed[1][1] + boardPassed[0][1] == 38 &&
boardPassed[4][0]+ boardPassed[3][1] + boardPassed[2][2] + boardPassed[1][2] + boardPassed[0][2] == 38 &&
boardPassed[4][1]+ boardPassed[3][2] + boardPassed[2][3] + boardPassed[1][3] == 38 &&
boardPassed[4][0]+ boardPassed[4][1] + boardPassed[4][2] == 38)
{
System.out.println("You win.");
return true;
}
else
System.out.println("You lose.");
return false;
}//end method
}//end class
Explanation / Answer
// main.c
// Aristotle Solver
//
// Created by Paul Asimow on 1/1/15.
// Copyright (c) 2015 Paul Asimow. All rights reserved.
//
#include
int a[19];
int tiles[20];
int fill[15];
int sums[15];
// 0 1 2
// 11 12 13 3
// 10 17 18 14 4
// 9 16 15 5
// 8 7 6
void fillfill(void) {
fill[0] = (a[0] && a[1] && a[2]);
fill[1] = (a[2] && a[3] && a[4]);
fill[2] = (a[4] && a[5] && a[6]);
fill[3] = (a[6] && a[7] && a[8]);
fill[4] = (a[8] && a[9] && a[10]);
fill[5] = (a[10] && a[11] && a[0]);
fill[6] = (a[11] && a[12] && a[13] && a[3]);
fill[7] = (a[9] && a[16] && a[15] && a[5]);
fill[8] = (a[1] && a[13] && a[14] && a[5]);
fill[9] = (a[11] && a[17] && a[16] && a[7]);
fill[10] = (a[1] && a[12] && a[17] && a[9]);
fill[11] = (a[3] && a[14] && a[15] && a[7]);
fill[12] = (a[0] && a[12] && a[18] && a[15] && a[6]);
fill[13] = (a[2] && a[13] && a[18] && a[16] && a[8]);
fill[14] = (a[10] && a[17] && a[18] && a[14] && a[4]);
}
void fillsums(void) {
sums[0] = (a[0] + a[1] + a[2]);
sums[1] = (a[2] + a[3] + a[4]);
sums[2] = (a[4] + a[5] + a[6]);
sums[3] = (a[6] + a[7] + a[8]);
sums[4] = (a[8] + a[9] + a[10]);
sums[5] = (a[10] + a[11] + a[0]);
sums[6] = (a[11] + a[12] + a[13] + a[3]);
sums[7] = (a[9] + a[16] + a[15] + a[5]);
sums[8] = (a[1] + a[13] + a[14] + a[5]);
sums[9] = (a[11] + a[17] + a[16] + a[7]);
sums[10] = (a[1] + a[12] + a[17] + a[9]);
sums[11] = (a[3] + a[14] + a[15] + a[7]);
sums[12] = (a[0] + a[12] + a[18] + a[15] + a[6]);
sums[13] = (a[2] + a[13] + a[18] + a[16] + a[8]);
sums[14] = (a[10] + a[17] + a[18] + a[14] + a[4]);
}
int test(void) {
int result, i;
fillfill();
fillsums();
for (i=0,result=1;i<15;i++) {
result = result && (!fill[i] || sums[i]==38);
}
return result;
}
void assign(int i) {
int j;
for (j=1;j<20;j++) {
if (tiles[j] == -1) {
a[i] = j;
tiles[j] = i;
if (test()) {
if (i==18) {
printf(" %2d %2d %2d ", a[0],a[1],a[2]);
printf(" %2d %2d %2d %2d ", a[11],a[12],a[13],a[3]);
printf("%2d %2d %2d %2d %2d ", a[10],a[17],a[18],a[14],a[4]);
printf(" %2d %2d %2d %2d ", a[9],a[16],a[15],a[5]);
printf(" %2d %2d %2d ", a[8],a[7],a[6]);
exit(0);
}
assign(i+1);
a[i+1] = 0;
tiles[j] = -1;
} else {
a[i] = 0;
tiles[j] = -1;
}
}
}
}
int main(int argc, const char * argv[]) {
int i;
for (i=0;i<19;i++) {
a[i] = 0;
tiles[i+1] = -1;
}
assign(0);
return 0;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.