Advertisement
Guest User

Untitled

a guest
Jul 20th, 2019
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.87 KB | None | 0 0
  1. public class QueenUnrolled {
  2. public static void main(String[] args) {
  3. qq();
  4. qq();
  5. qq();
  6. qq();
  7. qq();
  8. }
  9.  
  10. private static void qq() {
  11. long start = System.currentTimeMillis();
  12. long res = calcQueens();
  13. System.out.println("res = " + res+", "+(System.currentTimeMillis()-start));
  14. }
  15.  
  16. private static long calcQueens() {
  17. return queens_0(new int[8]);
  18. }
  19. public static boolean good_0_0(int[] qs) {
  20. return true;
  21. }
  22.  
  23. public static boolean good_0_1(int[] qs) {
  24. return true;
  25. }
  26.  
  27. public static boolean good_0_2(int[] qs) {
  28. return true;
  29. }
  30.  
  31. public static boolean good_0_3(int[] qs) {
  32. return true;
  33. }
  34.  
  35. public static boolean good_0_4(int[] qs) {
  36. return true;
  37. }
  38.  
  39. public static boolean good_0_5(int[] qs) {
  40. return true;
  41. }
  42.  
  43. public static boolean good_0_6(int[] qs) {
  44. return true;
  45. }
  46.  
  47. public static boolean good_0_7(int[] qs) {
  48. return true;
  49. }
  50.  
  51. public static boolean good_1_0(int[] qs) {
  52. return (qs[0] & 3) == 0 ;
  53. }
  54.  
  55. public static boolean good_1_1(int[] qs) {
  56. return (qs[0] & 7) == 0 ;
  57. }
  58.  
  59. public static boolean good_1_2(int[] qs) {
  60. return (qs[0] & 14) == 0 ;
  61. }
  62.  
  63. public static boolean good_1_3(int[] qs) {
  64. return (qs[0] & 28) == 0 ;
  65. }
  66.  
  67. public static boolean good_1_4(int[] qs) {
  68. return (qs[0] & 56) == 0 ;
  69. }
  70.  
  71. public static boolean good_1_5(int[] qs) {
  72. return (qs[0] & 112) == 0 ;
  73. }
  74.  
  75. public static boolean good_1_6(int[] qs) {
  76. return (qs[0] & 224) == 0 ;
  77. }
  78.  
  79. public static boolean good_1_7(int[] qs) {
  80. return (qs[0] & 192) == 0 ;
  81. }
  82.  
  83. public static boolean good_2_0(int[] qs) {
  84. return (qs[0] & 5) == 0 && (qs[1] & 3) == 0 ;
  85. }
  86.  
  87. public static boolean good_2_1(int[] qs) {
  88. return (qs[0] & 10) == 0 && (qs[1] & 7) == 0 ;
  89. }
  90.  
  91. public static boolean good_2_2(int[] qs) {
  92. return (qs[0] & 21) == 0 && (qs[1] & 14) == 0 ;
  93. }
  94.  
  95. public static boolean good_2_3(int[] qs) {
  96. return (qs[0] & 42) == 0 && (qs[1] & 28) == 0 ;
  97. }
  98.  
  99. public static boolean good_2_4(int[] qs) {
  100. return (qs[0] & 84) == 0 && (qs[1] & 56) == 0 ;
  101. }
  102.  
  103. public static boolean good_2_5(int[] qs) {
  104. return (qs[0] & 168) == 0 && (qs[1] & 112) == 0 ;
  105. }
  106.  
  107. public static boolean good_2_6(int[] qs) {
  108. return (qs[0] & 80) == 0 && (qs[1] & 224) == 0 ;
  109. }
  110.  
  111. public static boolean good_2_7(int[] qs) {
  112. return (qs[0] & 160) == 0 && (qs[1] & 192) == 0 ;
  113. }
  114.  
  115. public static boolean good_3_0(int[] qs) {
  116. return (qs[0] & 9) == 0 && (qs[1] & 5) == 0 && (qs[2] & 3) == 0 ;
  117. }
  118.  
  119. public static boolean good_3_1(int[] qs) {
  120. return (qs[0] & 18) == 0 && (qs[1] & 10) == 0 && (qs[2] & 7) == 0 ;
  121. }
  122.  
  123. public static boolean good_3_2(int[] qs) {
  124. return (qs[0] & 36) == 0 && (qs[1] & 21) == 0 && (qs[2] & 14) == 0 ;
  125. }
  126.  
  127. public static boolean good_3_3(int[] qs) {
  128. return (qs[0] & 73) == 0 && (qs[1] & 42) == 0 && (qs[2] & 28) == 0 ;
  129. }
  130.  
  131. public static boolean good_3_4(int[] qs) {
  132. return (qs[0] & 146) == 0 && (qs[1] & 84) == 0 && (qs[2] & 56) == 0 ;
  133. }
  134.  
  135. public static boolean good_3_5(int[] qs) {
  136. return (qs[0] & 36) == 0 && (qs[1] & 168) == 0 && (qs[2] & 112) == 0 ;
  137. }
  138.  
  139. public static boolean good_3_6(int[] qs) {
  140. return (qs[0] & 72) == 0 && (qs[1] & 80) == 0 && (qs[2] & 224) == 0 ;
  141. }
  142.  
  143. public static boolean good_3_7(int[] qs) {
  144. return (qs[0] & 144) == 0 && (qs[1] & 160) == 0 && (qs[2] & 192) == 0 ;
  145. }
  146.  
  147. public static boolean good_4_0(int[] qs) {
  148. return (qs[0] & 17) == 0 && (qs[1] & 9) == 0 && (qs[2] & 5) == 0 && (qs[3] & 3) == 0 ;
  149. }
  150.  
  151. public static boolean good_4_1(int[] qs) {
  152. return (qs[0] & 34) == 0 && (qs[1] & 18) == 0 && (qs[2] & 10) == 0 && (qs[3] & 7) == 0 ;
  153. }
  154.  
  155. public static boolean good_4_2(int[] qs) {
  156. return (qs[0] & 68) == 0 && (qs[1] & 36) == 0 && (qs[2] & 21) == 0 && (qs[3] & 14) == 0 ;
  157. }
  158.  
  159. public static boolean good_4_3(int[] qs) {
  160. return (qs[0] & 136) == 0 && (qs[1] & 73) == 0 && (qs[2] & 42) == 0 && (qs[3] & 28) == 0 ;
  161. }
  162.  
  163. public static boolean good_4_4(int[] qs) {
  164. return (qs[0] & 17) == 0 && (qs[1] & 146) == 0 && (qs[2] & 84) == 0 && (qs[3] & 56) == 0 ;
  165. }
  166.  
  167. public static boolean good_4_5(int[] qs) {
  168. return (qs[0] & 34) == 0 && (qs[1] & 36) == 0 && (qs[2] & 168) == 0 && (qs[3] & 112) == 0 ;
  169. }
  170.  
  171. public static boolean good_4_6(int[] qs) {
  172. return (qs[0] & 68) == 0 && (qs[1] & 72) == 0 && (qs[2] & 80) == 0 && (qs[3] & 224) == 0 ;
  173. }
  174.  
  175. public static boolean good_4_7(int[] qs) {
  176. return (qs[0] & 136) == 0 && (qs[1] & 144) == 0 && (qs[2] & 160) == 0 && (qs[3] & 192) == 0 ;
  177. }
  178.  
  179. public static boolean good_5_0(int[] qs) {
  180. return (qs[0] & 33) == 0 && (qs[1] & 17) == 0 && (qs[2] & 9) == 0 && (qs[3] & 5) == 0 && (qs[4] & 3) == 0 ;
  181. }
  182.  
  183. public static boolean good_5_1(int[] qs) {
  184. return (qs[0] & 66) == 0 && (qs[1] & 34) == 0 && (qs[2] & 18) == 0 && (qs[3] & 10) == 0 && (qs[4] & 7) == 0 ;
  185. }
  186.  
  187. public static boolean good_5_2(int[] qs) {
  188. return (qs[0] & 132) == 0 && (qs[1] & 68) == 0 && (qs[2] & 36) == 0 && (qs[3] & 21) == 0 && (qs[4] & 14) == 0 ;
  189. }
  190.  
  191. public static boolean good_5_3(int[] qs) {
  192. return (qs[0] & 8) == 0 && (qs[1] & 136) == 0 && (qs[2] & 73) == 0 && (qs[3] & 42) == 0 && (qs[4] & 28) == 0 ;
  193. }
  194.  
  195. public static boolean good_5_4(int[] qs) {
  196. return (qs[0] & 16) == 0 && (qs[1] & 17) == 0 && (qs[2] & 146) == 0 && (qs[3] & 84) == 0 && (qs[4] & 56) == 0 ;
  197. }
  198.  
  199. public static boolean good_5_5(int[] qs) {
  200. return (qs[0] & 33) == 0 && (qs[1] & 34) == 0 && (qs[2] & 36) == 0 && (qs[3] & 168) == 0 && (qs[4] & 112) == 0 ;
  201. }
  202.  
  203. public static boolean good_5_6(int[] qs) {
  204. return (qs[0] & 66) == 0 && (qs[1] & 68) == 0 && (qs[2] & 72) == 0 && (qs[3] & 80) == 0 && (qs[4] & 224) == 0 ;
  205. }
  206.  
  207. public static boolean good_5_7(int[] qs) {
  208. return (qs[0] & 132) == 0 && (qs[1] & 136) == 0 && (qs[2] & 144) == 0 && (qs[3] & 160) == 0 && (qs[4] & 192) == 0 ;
  209. }
  210.  
  211. public static boolean good_6_0(int[] qs) {
  212. 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 ;
  213. }
  214.  
  215. public static boolean good_6_1(int[] qs) {
  216. 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 ;
  217. }
  218.  
  219. public static boolean good_6_2(int[] qs) {
  220. 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 ;
  221. }
  222.  
  223. public static boolean good_6_3(int[] qs) {
  224. 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 ;
  225. }
  226.  
  227. public static boolean good_6_4(int[] qs) {
  228. 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 ;
  229. }
  230.  
  231. public static boolean good_6_5(int[] qs) {
  232. 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 ;
  233. }
  234.  
  235. public static boolean good_6_6(int[] qs) {
  236. 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 ;
  237. }
  238.  
  239. public static boolean good_6_7(int[] qs) {
  240. 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 ;
  241. }
  242.  
  243. public static boolean good_7_0(int[] qs) {
  244. 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 ;
  245. }
  246.  
  247. public static boolean good_7_1(int[] qs) {
  248. 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 ;
  249. }
  250.  
  251. public static boolean good_7_2(int[] qs) {
  252. 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 ;
  253. }
  254.  
  255. public static boolean good_7_3(int[] qs) {
  256. 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 ;
  257. }
  258.  
  259. public static boolean good_7_4(int[] qs) {
  260. 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 ;
  261. }
  262.  
  263. public static boolean good_7_5(int[] qs) {
  264. 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 ;
  265. }
  266.  
  267. public static boolean good_7_6(int[] qs) {
  268. 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 ;
  269. }
  270.  
  271. public static boolean good_7_7(int[] qs) {
  272. 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 ;
  273. }
  274.  
  275. private static long queens_0(int[] qs) {
  276. long result = 0;
  277. if(good_0_0(qs)) {
  278. qs[0] = 1;
  279. result += queens_1(qs);
  280. }
  281. if(good_0_1(qs)) {
  282. qs[0] = 2;
  283. result += queens_1(qs);
  284. }
  285. if(good_0_2(qs)) {
  286. qs[0] = 4;
  287. result += queens_1(qs);
  288. }
  289. if(good_0_3(qs)) {
  290. qs[0] = 8;
  291. result += queens_1(qs);
  292. }
  293. if(good_0_4(qs)) {
  294. qs[0] = 16;
  295. result += queens_1(qs);
  296. }
  297. if(good_0_5(qs)) {
  298. qs[0] = 32;
  299. result += queens_1(qs);
  300. }
  301. if(good_0_6(qs)) {
  302. qs[0] = 64;
  303. result += queens_1(qs);
  304. }
  305. if(good_0_7(qs)) {
  306. qs[0] = 128;
  307. result += queens_1(qs);
  308. }
  309. return result;
  310. }
  311.  
  312. private static long queens_1(int[] qs) {
  313. long result = 0;
  314. if(good_1_0(qs)) {
  315. qs[1] = 1;
  316. result += queens_2(qs);
  317. }
  318. if(good_1_1(qs)) {
  319. qs[1] = 2;
  320. result += queens_2(qs);
  321. }
  322. if(good_1_2(qs)) {
  323. qs[1] = 4;
  324. result += queens_2(qs);
  325. }
  326. if(good_1_3(qs)) {
  327. qs[1] = 8;
  328. result += queens_2(qs);
  329. }
  330. if(good_1_4(qs)) {
  331. qs[1] = 16;
  332. result += queens_2(qs);
  333. }
  334. if(good_1_5(qs)) {
  335. qs[1] = 32;
  336. result += queens_2(qs);
  337. }
  338. if(good_1_6(qs)) {
  339. qs[1] = 64;
  340. result += queens_2(qs);
  341. }
  342. if(good_1_7(qs)) {
  343. qs[1] = 128;
  344. result += queens_2(qs);
  345. }
  346. return result;
  347. }
  348.  
  349. private static long queens_2(int[] qs) {
  350. long result = 0;
  351. if(good_2_0(qs)) {
  352. qs[2] = 1;
  353. result += queens_3(qs);
  354. }
  355. if(good_2_1(qs)) {
  356. qs[2] = 2;
  357. result += queens_3(qs);
  358. }
  359. if(good_2_2(qs)) {
  360. qs[2] = 4;
  361. result += queens_3(qs);
  362. }
  363. if(good_2_3(qs)) {
  364. qs[2] = 8;
  365. result += queens_3(qs);
  366. }
  367. if(good_2_4(qs)) {
  368. qs[2] = 16;
  369. result += queens_3(qs);
  370. }
  371. if(good_2_5(qs)) {
  372. qs[2] = 32;
  373. result += queens_3(qs);
  374. }
  375. if(good_2_6(qs)) {
  376. qs[2] = 64;
  377. result += queens_3(qs);
  378. }
  379. if(good_2_7(qs)) {
  380. qs[2] = 128;
  381. result += queens_3(qs);
  382. }
  383. return result;
  384. }
  385.  
  386. private static long queens_3(int[] qs) {
  387. long result = 0;
  388. if(good_3_0(qs)) {
  389. qs[3] = 1;
  390. result += queens_4(qs);
  391. }
  392. if(good_3_1(qs)) {
  393. qs[3] = 2;
  394. result += queens_4(qs);
  395. }
  396. if(good_3_2(qs)) {
  397. qs[3] = 4;
  398. result += queens_4(qs);
  399. }
  400. if(good_3_3(qs)) {
  401. qs[3] = 8;
  402. result += queens_4(qs);
  403. }
  404. if(good_3_4(qs)) {
  405. qs[3] = 16;
  406. result += queens_4(qs);
  407. }
  408. if(good_3_5(qs)) {
  409. qs[3] = 32;
  410. result += queens_4(qs);
  411. }
  412. if(good_3_6(qs)) {
  413. qs[3] = 64;
  414. result += queens_4(qs);
  415. }
  416. if(good_3_7(qs)) {
  417. qs[3] = 128;
  418. result += queens_4(qs);
  419. }
  420. return result;
  421. }
  422.  
  423. private static long queens_4(int[] qs) {
  424. long result = 0;
  425. if(good_4_0(qs)) {
  426. qs[4] = 1;
  427. result += queens_5(qs);
  428. }
  429. if(good_4_1(qs)) {
  430. qs[4] = 2;
  431. result += queens_5(qs);
  432. }
  433. if(good_4_2(qs)) {
  434. qs[4] = 4;
  435. result += queens_5(qs);
  436. }
  437. if(good_4_3(qs)) {
  438. qs[4] = 8;
  439. result += queens_5(qs);
  440. }
  441. if(good_4_4(qs)) {
  442. qs[4] = 16;
  443. result += queens_5(qs);
  444. }
  445. if(good_4_5(qs)) {
  446. qs[4] = 32;
  447. result += queens_5(qs);
  448. }
  449. if(good_4_6(qs)) {
  450. qs[4] = 64;
  451. result += queens_5(qs);
  452. }
  453. if(good_4_7(qs)) {
  454. qs[4] = 128;
  455. result += queens_5(qs);
  456. }
  457. return result;
  458. }
  459.  
  460. private static long queens_5(int[] qs) {
  461. long result = 0;
  462. if(good_5_0(qs)) {
  463. qs[5] = 1;
  464. result += queens_6(qs);
  465. }
  466. if(good_5_1(qs)) {
  467. qs[5] = 2;
  468. result += queens_6(qs);
  469. }
  470. if(good_5_2(qs)) {
  471. qs[5] = 4;
  472. result += queens_6(qs);
  473. }
  474. if(good_5_3(qs)) {
  475. qs[5] = 8;
  476. result += queens_6(qs);
  477. }
  478. if(good_5_4(qs)) {
  479. qs[5] = 16;
  480. result += queens_6(qs);
  481. }
  482. if(good_5_5(qs)) {
  483. qs[5] = 32;
  484. result += queens_6(qs);
  485. }
  486. if(good_5_6(qs)) {
  487. qs[5] = 64;
  488. result += queens_6(qs);
  489. }
  490. if(good_5_7(qs)) {
  491. qs[5] = 128;
  492. result += queens_6(qs);
  493. }
  494. return result;
  495. }
  496.  
  497. private static long queens_6(int[] qs) {
  498. long result = 0;
  499. if(good_6_0(qs)) {
  500. qs[6] = 1;
  501. result += queens_7(qs);
  502. }
  503. if(good_6_1(qs)) {
  504. qs[6] = 2;
  505. result += queens_7(qs);
  506. }
  507. if(good_6_2(qs)) {
  508. qs[6] = 4;
  509. result += queens_7(qs);
  510. }
  511. if(good_6_3(qs)) {
  512. qs[6] = 8;
  513. result += queens_7(qs);
  514. }
  515. if(good_6_4(qs)) {
  516. qs[6] = 16;
  517. result += queens_7(qs);
  518. }
  519. if(good_6_5(qs)) {
  520. qs[6] = 32;
  521. result += queens_7(qs);
  522. }
  523. if(good_6_6(qs)) {
  524. qs[6] = 64;
  525. result += queens_7(qs);
  526. }
  527. if(good_6_7(qs)) {
  528. qs[6] = 128;
  529. result += queens_7(qs);
  530. }
  531. return result;
  532. }
  533.  
  534. private static long queens_7(int[] qs) {
  535. long result = 0;
  536. if(good_7_0(qs)) {
  537. result += 1;
  538. }
  539. if(good_7_1(qs)) {
  540. result += 1;
  541. }
  542. if(good_7_2(qs)) {
  543. result += 1;
  544. }
  545. if(good_7_3(qs)) {
  546. result += 1;
  547. }
  548. if(good_7_4(qs)) {
  549. result += 1;
  550. }
  551. if(good_7_5(qs)) {
  552. result += 1;
  553. }
  554. if(good_7_6(qs)) {
  555. result += 1;
  556. }
  557. if(good_7_7(qs)) {
  558. result += 1;
  559. }
  560. return result;
  561. }
  562.  
  563. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement