/** * * * @author (Dubi Kaufmann) * @version (1.0 9-27-2004) */ public class brutforce { // instance variables - replace the example below with your own public boolean[] pieces=new boolean[16]; public int solutions,diagonal; /** * Constructor for objects of class brutforce */ public static void main(String[] args) { brutforce mybrutforce=new brutforce(); mybrutforce.solve(); } public brutforce() { // initialise instance variables pieces[0] = true; pieces[1] = true; pieces[2] = true; pieces[3] = true; pieces[4] =true; pieces[5] = true; pieces[6] = true; pieces[7] = true; pieces[8] = true; pieces[9] = true; pieces[10] = true; pieces[11] = true; pieces[12] = true; pieces[13] = true; pieces[14] = true; pieces[15] = true; solutions=0; diagonal=0; } public int get_right(int piecenum){ int temp=(int)Math.ceil((piecenum-(piecenum%4))%8/8.0); return (temp+1)%2; } public int get_top(int piecenum){ int temp=(int)Math.ceil((piecenum-(piecenum%2))%4/4.0); return 8*((temp+1)%2); } public boolean checkThird(int piecenum1,int piecenum2,int piecenum3){ if ((piecenum1+piecenum2+piecenum3>14) && (piecenum1+piecenum2+piecenum3<31)) { int a4=30-piecenum1-piecenum2-piecenum3; if (pieces[a4]) { if (a4!=piecenum3) { if (get_right(piecenum3)==a4%2) return true; } } } return false; } public boolean checkThirdV(int piecenum1,int piecenum2,int piecenum3){ if ((piecenum1+piecenum2+piecenum3>14) && (piecenum1+piecenum2+piecenum3<31)) { int a13=30-piecenum1-piecenum2-piecenum3; if (pieces[a13]) { if (a13!=piecenum3) { if (get_top(piecenum3)==a13-(a13%8)) return true; } } } return false; } public boolean checkfourth(int piecenum1,int piecenum2,int piecenum3){ if ((piecenum1+piecenum2+piecenum3>14) && (piecenum1+piecenum2+piecenum3<31)) { if (pieces[30-piecenum1-piecenum2-piecenum3]) return true; } return false; } public void solve() { for (int a1=0; a1<16; a1++) { System.out.println(get_top(a1)); pieces[a1]=false; for (int a2=get_right(a1); a2<16; a2=a2+2) { if (pieces[a2]) { pieces[a2]=false; for (int a3=get_right(a2); a3<16; a3=a3+2) { if (checkThird(a1,a2,a3)&&pieces[a3]) { int a4=30-a1-a2-a3; pieces[a3]=false; pieces[a4]=false; for (int a5=get_top(a1);a5