Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class QueenUnrolled {
- public static void main(String[] args) {
- qq();
- qq();
- qq();
- qq();
- qq();
- }
- private static void qq() {
- long start = System.currentTimeMillis();
- long res = calcQueens();
- System.out.println("res = " + res+", "+(System.currentTimeMillis()-start));
- }
- private static long calcQueens() {
- return queens_0(new int[8]);
- }
- public static boolean good_0_0(int[] qs) {
- return true;
- }
- public static boolean good_0_1(int[] qs) {
- return true;
- }
- public static boolean good_0_2(int[] qs) {
- return true;
- }
- public static boolean good_0_3(int[] qs) {
- return true;
- }
- public static boolean good_0_4(int[] qs) {
- return true;
- }
- public static boolean good_0_5(int[] qs) {
- return true;
- }
- public static boolean good_0_6(int[] qs) {
- return true;
- }
- public static boolean good_0_7(int[] qs) {
- return true;
- }
- public static boolean good_1_0(int[] qs) {
- return (qs[0] & 3) == 0 ;
- }
- public static boolean good_1_1(int[] qs) {
- return (qs[0] & 7) == 0 ;
- }
- public static boolean good_1_2(int[] qs) {
- return (qs[0] & 14) == 0 ;
- }
- public static boolean good_1_3(int[] qs) {
- return (qs[0] & 28) == 0 ;
- }
- public static boolean good_1_4(int[] qs) {
- return (qs[0] & 56) == 0 ;
- }
- public static boolean good_1_5(int[] qs) {
- return (qs[0] & 112) == 0 ;
- }
- public static boolean good_1_6(int[] qs) {
- return (qs[0] & 224) == 0 ;
- }
- public static boolean good_1_7(int[] qs) {
- return (qs[0] & 192) == 0 ;
- }
- public static boolean good_2_0(int[] qs) {
- return (qs[0] & 5) == 0 && (qs[1] & 3) == 0 ;
- }
- public static boolean good_2_1(int[] qs) {
- return (qs[0] & 10) == 0 && (qs[1] & 7) == 0 ;
- }
- public static boolean good_2_2(int[] qs) {
- return (qs[0] & 21) == 0 && (qs[1] & 14) == 0 ;
- }
- public static boolean good_2_3(int[] qs) {
- return (qs[0] & 42) == 0 && (qs[1] & 28) == 0 ;
- }
- public static boolean good_2_4(int[] qs) {
- return (qs[0] & 84) == 0 && (qs[1] & 56) == 0 ;
- }
- public static boolean good_2_5(int[] qs) {
- return (qs[0] & 168) == 0 && (qs[1] & 112) == 0 ;
- }
- public static boolean good_2_6(int[] qs) {
- return (qs[0] & 80) == 0 && (qs[1] & 224) == 0 ;
- }
- public static boolean good_2_7(int[] qs) {
- return (qs[0] & 160) == 0 && (qs[1] & 192) == 0 ;
- }
- public static boolean good_3_0(int[] qs) {
- return (qs[0] & 9) == 0 && (qs[1] & 5) == 0 && (qs[2] & 3) == 0 ;
- }
- public static boolean good_3_1(int[] qs) {
- return (qs[0] & 18) == 0 && (qs[1] & 10) == 0 && (qs[2] & 7) == 0 ;
- }
- public static boolean good_3_2(int[] qs) {
- return (qs[0] & 36) == 0 && (qs[1] & 21) == 0 && (qs[2] & 14) == 0 ;
- }
- public static boolean good_3_3(int[] qs) {
- return (qs[0] & 73) == 0 && (qs[1] & 42) == 0 && (qs[2] & 28) == 0 ;
- }
- public static boolean good_3_4(int[] qs) {
- return (qs[0] & 146) == 0 && (qs[1] & 84) == 0 && (qs[2] & 56) == 0 ;
- }
- public static boolean good_3_5(int[] qs) {
- return (qs[0] & 36) == 0 && (qs[1] & 168) == 0 && (qs[2] & 112) == 0 ;
- }
- public static boolean good_3_6(int[] qs) {
- return (qs[0] & 72) == 0 && (qs[1] & 80) == 0 && (qs[2] & 224) == 0 ;
- }
- public static boolean good_3_7(int[] qs) {
- return (qs[0] & 144) == 0 && (qs[1] & 160) == 0 && (qs[2] & 192) == 0 ;
- }
- public static boolean good_4_0(int[] qs) {
- return (qs[0] & 17) == 0 && (qs[1] & 9) == 0 && (qs[2] & 5) == 0 && (qs[3] & 3) == 0 ;
- }
- public static boolean good_4_1(int[] qs) {
- return (qs[0] & 34) == 0 && (qs[1] & 18) == 0 && (qs[2] & 10) == 0 && (qs[3] & 7) == 0 ;
- }
- public static boolean good_4_2(int[] qs) {
- return (qs[0] & 68) == 0 && (qs[1] & 36) == 0 && (qs[2] & 21) == 0 && (qs[3] & 14) == 0 ;
- }
- public static boolean good_4_3(int[] qs) {
- return (qs[0] & 136) == 0 && (qs[1] & 73) == 0 && (qs[2] & 42) == 0 && (qs[3] & 28) == 0 ;
- }
- public static boolean good_4_4(int[] qs) {
- return (qs[0] & 17) == 0 && (qs[1] & 146) == 0 && (qs[2] & 84) == 0 && (qs[3] & 56) == 0 ;
- }
- public static boolean good_4_5(int[] qs) {
- return (qs[0] & 34) == 0 && (qs[1] & 36) == 0 && (qs[2] & 168) == 0 && (qs[3] & 112) == 0 ;
- }
- public static boolean good_4_6(int[] qs) {
- return (qs[0] & 68) == 0 && (qs[1] & 72) == 0 && (qs[2] & 80) == 0 && (qs[3] & 224) == 0 ;
- }
- public static boolean good_4_7(int[] qs) {
- return (qs[0] & 136) == 0 && (qs[1] & 144) == 0 && (qs[2] & 160) == 0 && (qs[3] & 192) == 0 ;
- }
- public static boolean good_5_0(int[] qs) {
- return (qs[0] & 33) == 0 && (qs[1] & 17) == 0 && (qs[2] & 9) == 0 && (qs[3] & 5) == 0 && (qs[4] & 3) == 0 ;
- }
- public static boolean good_5_1(int[] qs) {
- return (qs[0] & 66) == 0 && (qs[1] & 34) == 0 && (qs[2] & 18) == 0 && (qs[3] & 10) == 0 && (qs[4] & 7) == 0 ;
- }
- public static boolean good_5_2(int[] qs) {
- return (qs[0] & 132) == 0 && (qs[1] & 68) == 0 && (qs[2] & 36) == 0 && (qs[3] & 21) == 0 && (qs[4] & 14) == 0 ;
- }
- public static boolean good_5_3(int[] qs) {
- return (qs[0] & 8) == 0 && (qs[1] & 136) == 0 && (qs[2] & 73) == 0 && (qs[3] & 42) == 0 && (qs[4] & 28) == 0 ;
- }
- public static boolean good_5_4(int[] qs) {
- return (qs[0] & 16) == 0 && (qs[1] & 17) == 0 && (qs[2] & 146) == 0 && (qs[3] & 84) == 0 && (qs[4] & 56) == 0 ;
- }
- public static boolean good_5_5(int[] qs) {
- return (qs[0] & 33) == 0 && (qs[1] & 34) == 0 && (qs[2] & 36) == 0 && (qs[3] & 168) == 0 && (qs[4] & 112) == 0 ;
- }
- public static boolean good_5_6(int[] qs) {
- return (qs[0] & 66) == 0 && (qs[1] & 68) == 0 && (qs[2] & 72) == 0 && (qs[3] & 80) == 0 && (qs[4] & 224) == 0 ;
- }
- public static boolean good_5_7(int[] qs) {
- return (qs[0] & 132) == 0 && (qs[1] & 136) == 0 && (qs[2] & 144) == 0 && (qs[3] & 160) == 0 && (qs[4] & 192) == 0 ;
- }
- public static boolean good_6_0(int[] qs) {
- return (qs[0] & 65) == 0 && (qs[1] & 33) == 0 && (qs[2] & 17) == 0 && (qs[3] & 9) == 0 && (qs[4] & 5) == 0 && (qs[5] & 3) == 0 ;
- }
- public static boolean good_6_1(int[] qs) {
- return (qs[0] & 130) == 0 && (qs[1] & 66) == 0 && (qs[2] & 34) == 0 && (qs[3] & 18) == 0 && (qs[4] & 10) == 0 && (qs[5] & 7) == 0 ;
- }
- public static boolean good_6_2(int[] qs) {
- return (qs[0] & 4) == 0 && (qs[1] & 132) == 0 && (qs[2] & 68) == 0 && (qs[3] & 36) == 0 && (qs[4] & 21) == 0 && (qs[5] & 14) == 0 ;
- }
- public static boolean good_6_3(int[] qs) {
- return (qs[0] & 8) == 0 && (qs[1] & 8) == 0 && (qs[2] & 136) == 0 && (qs[3] & 73) == 0 && (qs[4] & 42) == 0 && (qs[5] & 28) == 0 ;
- }
- public static boolean good_6_4(int[] qs) {
- return (qs[0] & 16) == 0 && (qs[1] & 16) == 0 && (qs[2] & 17) == 0 && (qs[3] & 146) == 0 && (qs[4] & 84) == 0 && (qs[5] & 56) == 0 ;
- }
- public static boolean good_6_5(int[] qs) {
- return (qs[0] & 32) == 0 && (qs[1] & 33) == 0 && (qs[2] & 34) == 0 && (qs[3] & 36) == 0 && (qs[4] & 168) == 0 && (qs[5] & 112) == 0 ;
- }
- public static boolean good_6_6(int[] qs) {
- return (qs[0] & 65) == 0 && (qs[1] & 66) == 0 && (qs[2] & 68) == 0 && (qs[3] & 72) == 0 && (qs[4] & 80) == 0 && (qs[5] & 224) == 0 ;
- }
- public static boolean good_6_7(int[] qs) {
- return (qs[0] & 130) == 0 && (qs[1] & 132) == 0 && (qs[2] & 136) == 0 && (qs[3] & 144) == 0 && (qs[4] & 160) == 0 && (qs[5] & 192) == 0 ;
- }
- public static boolean good_7_0(int[] qs) {
- return (qs[0] & 129) == 0 && (qs[1] & 65) == 0 && (qs[2] & 33) == 0 && (qs[3] & 17) == 0 && (qs[4] & 9) == 0 && (qs[5] & 5) == 0 && (qs[6] & 3) == 0 ;
- }
- public static boolean good_7_1(int[] qs) {
- return (qs[0] & 2) == 0 && (qs[1] & 130) == 0 && (qs[2] & 66) == 0 && (qs[3] & 34) == 0 && (qs[4] & 18) == 0 && (qs[5] & 10) == 0 && (qs[6] & 7) == 0 ;
- }
- public static boolean good_7_2(int[] qs) {
- return (qs[0] & 4) == 0 && (qs[1] & 4) == 0 && (qs[2] & 132) == 0 && (qs[3] & 68) == 0 && (qs[4] & 36) == 0 && (qs[5] & 21) == 0 && (qs[6] & 14) == 0 ;
- }
- public static boolean good_7_3(int[] qs) {
- return (qs[0] & 8) == 0 && (qs[1] & 8) == 0 && (qs[2] & 8) == 0 && (qs[3] & 136) == 0 && (qs[4] & 73) == 0 && (qs[5] & 42) == 0 && (qs[6] & 28) == 0 ;
- }
- public static boolean good_7_4(int[] qs) {
- return (qs[0] & 16) == 0 && (qs[1] & 16) == 0 && (qs[2] & 16) == 0 && (qs[3] & 17) == 0 && (qs[4] & 146) == 0 && (qs[5] & 84) == 0 && (qs[6] & 56) == 0 ;
- }
- public static boolean good_7_5(int[] qs) {
- return (qs[0] & 32) == 0 && (qs[1] & 32) == 0 && (qs[2] & 33) == 0 && (qs[3] & 34) == 0 && (qs[4] & 36) == 0 && (qs[5] & 168) == 0 && (qs[6] & 112) == 0 ;
- }
- public static boolean good_7_6(int[] qs) {
- return (qs[0] & 64) == 0 && (qs[1] & 65) == 0 && (qs[2] & 66) == 0 && (qs[3] & 68) == 0 && (qs[4] & 72) == 0 && (qs[5] & 80) == 0 && (qs[6] & 224) == 0 ;
- }
- public static boolean good_7_7(int[] qs) {
- return (qs[0] & 129) == 0 && (qs[1] & 130) == 0 && (qs[2] & 132) == 0 && (qs[3] & 136) == 0 && (qs[4] & 144) == 0 && (qs[5] & 160) == 0 && (qs[6] & 192) == 0 ;
- }
- private static long queens_0(int[] qs) {
- long result = 0;
- if(good_0_0(qs)) {
- qs[0] = 1;
- result += queens_1(qs);
- }
- if(good_0_1(qs)) {
- qs[0] = 2;
- result += queens_1(qs);
- }
- if(good_0_2(qs)) {
- qs[0] = 4;
- result += queens_1(qs);
- }
- if(good_0_3(qs)) {
- qs[0] = 8;
- result += queens_1(qs);
- }
- if(good_0_4(qs)) {
- qs[0] = 16;
- result += queens_1(qs);
- }
- if(good_0_5(qs)) {
- qs[0] = 32;
- result += queens_1(qs);
- }
- if(good_0_6(qs)) {
- qs[0] = 64;
- result += queens_1(qs);
- }
- if(good_0_7(qs)) {
- qs[0] = 128;
- result += queens_1(qs);
- }
- return result;
- }
- private static long queens_1(int[] qs) {
- long result = 0;
- if(good_1_0(qs)) {
- qs[1] = 1;
- result += queens_2(qs);
- }
- if(good_1_1(qs)) {
- qs[1] = 2;
- result += queens_2(qs);
- }
- if(good_1_2(qs)) {
- qs[1] = 4;
- result += queens_2(qs);
- }
- if(good_1_3(qs)) {
- qs[1] = 8;
- result += queens_2(qs);
- }
- if(good_1_4(qs)) {
- qs[1] = 16;
- result += queens_2(qs);
- }
- if(good_1_5(qs)) {
- qs[1] = 32;
- result += queens_2(qs);
- }
- if(good_1_6(qs)) {
- qs[1] = 64;
- result += queens_2(qs);
- }
- if(good_1_7(qs)) {
- qs[1] = 128;
- result += queens_2(qs);
- }
- return result;
- }
- private static long queens_2(int[] qs) {
- long result = 0;
- if(good_2_0(qs)) {
- qs[2] = 1;
- result += queens_3(qs);
- }
- if(good_2_1(qs)) {
- qs[2] = 2;
- result += queens_3(qs);
- }
- if(good_2_2(qs)) {
- qs[2] = 4;
- result += queens_3(qs);
- }
- if(good_2_3(qs)) {
- qs[2] = 8;
- result += queens_3(qs);
- }
- if(good_2_4(qs)) {
- qs[2] = 16;
- result += queens_3(qs);
- }
- if(good_2_5(qs)) {
- qs[2] = 32;
- result += queens_3(qs);
- }
- if(good_2_6(qs)) {
- qs[2] = 64;
- result += queens_3(qs);
- }
- if(good_2_7(qs)) {
- qs[2] = 128;
- result += queens_3(qs);
- }
- return result;
- }
- private static long queens_3(int[] qs) {
- long result = 0;
- if(good_3_0(qs)) {
- qs[3] = 1;
- result += queens_4(qs);
- }
- if(good_3_1(qs)) {
- qs[3] = 2;
- result += queens_4(qs);
- }
- if(good_3_2(qs)) {
- qs[3] = 4;
- result += queens_4(qs);
- }
- if(good_3_3(qs)) {
- qs[3] = 8;
- result += queens_4(qs);
- }
- if(good_3_4(qs)) {
- qs[3] = 16;
- result += queens_4(qs);
- }
- if(good_3_5(qs)) {
- qs[3] = 32;
- result += queens_4(qs);
- }
- if(good_3_6(qs)) {
- qs[3] = 64;
- result += queens_4(qs);
- }
- if(good_3_7(qs)) {
- qs[3] = 128;
- result += queens_4(qs);
- }
- return result;
- }
- private static long queens_4(int[] qs) {
- long result = 0;
- if(good_4_0(qs)) {
- qs[4] = 1;
- result += queens_5(qs);
- }
- if(good_4_1(qs)) {
- qs[4] = 2;
- result += queens_5(qs);
- }
- if(good_4_2(qs)) {
- qs[4] = 4;
- result += queens_5(qs);
- }
- if(good_4_3(qs)) {
- qs[4] = 8;
- result += queens_5(qs);
- }
- if(good_4_4(qs)) {
- qs[4] = 16;
- result += queens_5(qs);
- }
- if(good_4_5(qs)) {
- qs[4] = 32;
- result += queens_5(qs);
- }
- if(good_4_6(qs)) {
- qs[4] = 64;
- result += queens_5(qs);
- }
- if(good_4_7(qs)) {
- qs[4] = 128;
- result += queens_5(qs);
- }
- return result;
- }
- private static long queens_5(int[] qs) {
- long result = 0;
- if(good_5_0(qs)) {
- qs[5] = 1;
- result += queens_6(qs);
- }
- if(good_5_1(qs)) {
- qs[5] = 2;
- result += queens_6(qs);
- }
- if(good_5_2(qs)) {
- qs[5] = 4;
- result += queens_6(qs);
- }
- if(good_5_3(qs)) {
- qs[5] = 8;
- result += queens_6(qs);
- }
- if(good_5_4(qs)) {
- qs[5] = 16;
- result += queens_6(qs);
- }
- if(good_5_5(qs)) {
- qs[5] = 32;
- result += queens_6(qs);
- }
- if(good_5_6(qs)) {
- qs[5] = 64;
- result += queens_6(qs);
- }
- if(good_5_7(qs)) {
- qs[5] = 128;
- result += queens_6(qs);
- }
- return result;
- }
- private static long queens_6(int[] qs) {
- long result = 0;
- if(good_6_0(qs)) {
- qs[6] = 1;
- result += queens_7(qs);
- }
- if(good_6_1(qs)) {
- qs[6] = 2;
- result += queens_7(qs);
- }
- if(good_6_2(qs)) {
- qs[6] = 4;
- result += queens_7(qs);
- }
- if(good_6_3(qs)) {
- qs[6] = 8;
- result += queens_7(qs);
- }
- if(good_6_4(qs)) {
- qs[6] = 16;
- result += queens_7(qs);
- }
- if(good_6_5(qs)) {
- qs[6] = 32;
- result += queens_7(qs);
- }
- if(good_6_6(qs)) {
- qs[6] = 64;
- result += queens_7(qs);
- }
- if(good_6_7(qs)) {
- qs[6] = 128;
- result += queens_7(qs);
- }
- return result;
- }
- private static long queens_7(int[] qs) {
- long result = 0;
- if(good_7_0(qs)) {
- result += 1;
- }
- if(good_7_1(qs)) {
- result += 1;
- }
- if(good_7_2(qs)) {
- result += 1;
- }
- if(good_7_3(qs)) {
- result += 1;
- }
- if(good_7_4(qs)) {
- result += 1;
- }
- if(good_7_5(qs)) {
- result += 1;
- }
- if(good_7_6(qs)) {
- result += 1;
- }
- if(good_7_7(qs)) {
- result += 1;
- }
- return result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement