Advertisement
Guest User

Untitled

a guest
Jul 20th, 2019
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.09 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[9]);
  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_0_8(int[] qs) {
  52. return true;
  53. }
  54.  
  55. public static boolean good_1_0(int[] qs) {
  56. return (qs[0] & 3) == 0 ;
  57. }
  58.  
  59. public static boolean good_1_1(int[] qs) {
  60. return (qs[0] & 7) == 0 ;
  61. }
  62.  
  63. public static boolean good_1_2(int[] qs) {
  64. return (qs[0] & 14) == 0 ;
  65. }
  66.  
  67. public static boolean good_1_3(int[] qs) {
  68. return (qs[0] & 28) == 0 ;
  69. }
  70.  
  71. public static boolean good_1_4(int[] qs) {
  72. return (qs[0] & 56) == 0 ;
  73. }
  74.  
  75. public static boolean good_1_5(int[] qs) {
  76. return (qs[0] & 112) == 0 ;
  77. }
  78.  
  79. public static boolean good_1_6(int[] qs) {
  80. return (qs[0] & 224) == 0 ;
  81. }
  82.  
  83. public static boolean good_1_7(int[] qs) {
  84. return (qs[0] & 448) == 0 ;
  85. }
  86.  
  87. public static boolean good_1_8(int[] qs) {
  88. return (qs[0] & 384) == 0 ;
  89. }
  90.  
  91. public static boolean good_2_0(int[] qs) {
  92. return (qs[0] & 5) == 0 && (qs[1] & 3) == 0 ;
  93. }
  94.  
  95. public static boolean good_2_1(int[] qs) {
  96. return (qs[0] & 10) == 0 && (qs[1] & 7) == 0 ;
  97. }
  98.  
  99. public static boolean good_2_2(int[] qs) {
  100. return (qs[0] & 21) == 0 && (qs[1] & 14) == 0 ;
  101. }
  102.  
  103. public static boolean good_2_3(int[] qs) {
  104. return (qs[0] & 42) == 0 && (qs[1] & 28) == 0 ;
  105. }
  106.  
  107. public static boolean good_2_4(int[] qs) {
  108. return (qs[0] & 84) == 0 && (qs[1] & 56) == 0 ;
  109. }
  110.  
  111. public static boolean good_2_5(int[] qs) {
  112. return (qs[0] & 168) == 0 && (qs[1] & 112) == 0 ;
  113. }
  114.  
  115. public static boolean good_2_6(int[] qs) {
  116. return (qs[0] & 336) == 0 && (qs[1] & 224) == 0 ;
  117. }
  118.  
  119. public static boolean good_2_7(int[] qs) {
  120. return (qs[0] & 160) == 0 && (qs[1] & 448) == 0 ;
  121. }
  122.  
  123. public static boolean good_2_8(int[] qs) {
  124. return (qs[0] & 320) == 0 && (qs[1] & 384) == 0 ;
  125. }
  126.  
  127. public static boolean good_3_0(int[] qs) {
  128. return (qs[0] & 9) == 0 && (qs[1] & 5) == 0 && (qs[2] & 3) == 0 ;
  129. }
  130.  
  131. public static boolean good_3_1(int[] qs) {
  132. return (qs[0] & 18) == 0 && (qs[1] & 10) == 0 && (qs[2] & 7) == 0 ;
  133. }
  134.  
  135. public static boolean good_3_2(int[] qs) {
  136. return (qs[0] & 36) == 0 && (qs[1] & 21) == 0 && (qs[2] & 14) == 0 ;
  137. }
  138.  
  139. public static boolean good_3_3(int[] qs) {
  140. return (qs[0] & 73) == 0 && (qs[1] & 42) == 0 && (qs[2] & 28) == 0 ;
  141. }
  142.  
  143. public static boolean good_3_4(int[] qs) {
  144. return (qs[0] & 146) == 0 && (qs[1] & 84) == 0 && (qs[2] & 56) == 0 ;
  145. }
  146.  
  147. public static boolean good_3_5(int[] qs) {
  148. return (qs[0] & 292) == 0 && (qs[1] & 168) == 0 && (qs[2] & 112) == 0 ;
  149. }
  150.  
  151. public static boolean good_3_6(int[] qs) {
  152. return (qs[0] & 72) == 0 && (qs[1] & 336) == 0 && (qs[2] & 224) == 0 ;
  153. }
  154.  
  155. public static boolean good_3_7(int[] qs) {
  156. return (qs[0] & 144) == 0 && (qs[1] & 160) == 0 && (qs[2] & 448) == 0 ;
  157. }
  158.  
  159. public static boolean good_3_8(int[] qs) {
  160. return (qs[0] & 288) == 0 && (qs[1] & 320) == 0 && (qs[2] & 384) == 0 ;
  161. }
  162.  
  163. public static boolean good_4_0(int[] qs) {
  164. return (qs[0] & 17) == 0 && (qs[1] & 9) == 0 && (qs[2] & 5) == 0 && (qs[3] & 3) == 0 ;
  165. }
  166.  
  167. public static boolean good_4_1(int[] qs) {
  168. return (qs[0] & 34) == 0 && (qs[1] & 18) == 0 && (qs[2] & 10) == 0 && (qs[3] & 7) == 0 ;
  169. }
  170.  
  171. public static boolean good_4_2(int[] qs) {
  172. return (qs[0] & 68) == 0 && (qs[1] & 36) == 0 && (qs[2] & 21) == 0 && (qs[3] & 14) == 0 ;
  173. }
  174.  
  175. public static boolean good_4_3(int[] qs) {
  176. return (qs[0] & 136) == 0 && (qs[1] & 73) == 0 && (qs[2] & 42) == 0 && (qs[3] & 28) == 0 ;
  177. }
  178.  
  179. public static boolean good_4_4(int[] qs) {
  180. return (qs[0] & 273) == 0 && (qs[1] & 146) == 0 && (qs[2] & 84) == 0 && (qs[3] & 56) == 0 ;
  181. }
  182.  
  183. public static boolean good_4_5(int[] qs) {
  184. return (qs[0] & 34) == 0 && (qs[1] & 292) == 0 && (qs[2] & 168) == 0 && (qs[3] & 112) == 0 ;
  185. }
  186.  
  187. public static boolean good_4_6(int[] qs) {
  188. return (qs[0] & 68) == 0 && (qs[1] & 72) == 0 && (qs[2] & 336) == 0 && (qs[3] & 224) == 0 ;
  189. }
  190.  
  191. public static boolean good_4_7(int[] qs) {
  192. return (qs[0] & 136) == 0 && (qs[1] & 144) == 0 && (qs[2] & 160) == 0 && (qs[3] & 448) == 0 ;
  193. }
  194.  
  195. public static boolean good_4_8(int[] qs) {
  196. return (qs[0] & 272) == 0 && (qs[1] & 288) == 0 && (qs[2] & 320) == 0 && (qs[3] & 384) == 0 ;
  197. }
  198.  
  199. public static boolean good_5_0(int[] qs) {
  200. return (qs[0] & 33) == 0 && (qs[1] & 17) == 0 && (qs[2] & 9) == 0 && (qs[3] & 5) == 0 && (qs[4] & 3) == 0 ;
  201. }
  202.  
  203. public static boolean good_5_1(int[] qs) {
  204. return (qs[0] & 66) == 0 && (qs[1] & 34) == 0 && (qs[2] & 18) == 0 && (qs[3] & 10) == 0 && (qs[4] & 7) == 0 ;
  205. }
  206.  
  207. public static boolean good_5_2(int[] qs) {
  208. return (qs[0] & 132) == 0 && (qs[1] & 68) == 0 && (qs[2] & 36) == 0 && (qs[3] & 21) == 0 && (qs[4] & 14) == 0 ;
  209. }
  210.  
  211. public static boolean good_5_3(int[] qs) {
  212. return (qs[0] & 264) == 0 && (qs[1] & 136) == 0 && (qs[2] & 73) == 0 && (qs[3] & 42) == 0 && (qs[4] & 28) == 0 ;
  213. }
  214.  
  215. public static boolean good_5_4(int[] qs) {
  216. return (qs[0] & 16) == 0 && (qs[1] & 273) == 0 && (qs[2] & 146) == 0 && (qs[3] & 84) == 0 && (qs[4] & 56) == 0 ;
  217. }
  218.  
  219. public static boolean good_5_5(int[] qs) {
  220. return (qs[0] & 33) == 0 && (qs[1] & 34) == 0 && (qs[2] & 292) == 0 && (qs[3] & 168) == 0 && (qs[4] & 112) == 0 ;
  221. }
  222.  
  223. public static boolean good_5_6(int[] qs) {
  224. return (qs[0] & 66) == 0 && (qs[1] & 68) == 0 && (qs[2] & 72) == 0 && (qs[3] & 336) == 0 && (qs[4] & 224) == 0 ;
  225. }
  226.  
  227. public static boolean good_5_7(int[] qs) {
  228. return (qs[0] & 132) == 0 && (qs[1] & 136) == 0 && (qs[2] & 144) == 0 && (qs[3] & 160) == 0 && (qs[4] & 448) == 0 ;
  229. }
  230.  
  231. public static boolean good_5_8(int[] qs) {
  232. return (qs[0] & 264) == 0 && (qs[1] & 272) == 0 && (qs[2] & 288) == 0 && (qs[3] & 320) == 0 && (qs[4] & 384) == 0 ;
  233. }
  234.  
  235. public static boolean good_6_0(int[] qs) {
  236. 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 ;
  237. }
  238.  
  239. public static boolean good_6_1(int[] qs) {
  240. 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 ;
  241. }
  242.  
  243. public static boolean good_6_2(int[] qs) {
  244. return (qs[0] & 260) == 0 && (qs[1] & 132) == 0 && (qs[2] & 68) == 0 && (qs[3] & 36) == 0 && (qs[4] & 21) == 0 && (qs[5] & 14) == 0 ;
  245. }
  246.  
  247. public static boolean good_6_3(int[] qs) {
  248. return (qs[0] & 8) == 0 && (qs[1] & 264) == 0 && (qs[2] & 136) == 0 && (qs[3] & 73) == 0 && (qs[4] & 42) == 0 && (qs[5] & 28) == 0 ;
  249. }
  250.  
  251. public static boolean good_6_4(int[] qs) {
  252. return (qs[0] & 16) == 0 && (qs[1] & 16) == 0 && (qs[2] & 273) == 0 && (qs[3] & 146) == 0 && (qs[4] & 84) == 0 && (qs[5] & 56) == 0 ;
  253. }
  254.  
  255. public static boolean good_6_5(int[] qs) {
  256. return (qs[0] & 32) == 0 && (qs[1] & 33) == 0 && (qs[2] & 34) == 0 && (qs[3] & 292) == 0 && (qs[4] & 168) == 0 && (qs[5] & 112) == 0 ;
  257. }
  258.  
  259. public static boolean good_6_6(int[] qs) {
  260. return (qs[0] & 65) == 0 && (qs[1] & 66) == 0 && (qs[2] & 68) == 0 && (qs[3] & 72) == 0 && (qs[4] & 336) == 0 && (qs[5] & 224) == 0 ;
  261. }
  262.  
  263. public static boolean good_6_7(int[] qs) {
  264. return (qs[0] & 130) == 0 && (qs[1] & 132) == 0 && (qs[2] & 136) == 0 && (qs[3] & 144) == 0 && (qs[4] & 160) == 0 && (qs[5] & 448) == 0 ;
  265. }
  266.  
  267. public static boolean good_6_8(int[] qs) {
  268. return (qs[0] & 260) == 0 && (qs[1] & 264) == 0 && (qs[2] & 272) == 0 && (qs[3] & 288) == 0 && (qs[4] & 320) == 0 && (qs[5] & 384) == 0 ;
  269. }
  270.  
  271. public static boolean good_7_0(int[] qs) {
  272. 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 ;
  273. }
  274.  
  275. public static boolean good_7_1(int[] qs) {
  276. return (qs[0] & 258) == 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 ;
  277. }
  278.  
  279. public static boolean good_7_2(int[] qs) {
  280. return (qs[0] & 4) == 0 && (qs[1] & 260) == 0 && (qs[2] & 132) == 0 && (qs[3] & 68) == 0 && (qs[4] & 36) == 0 && (qs[5] & 21) == 0 && (qs[6] & 14) == 0 ;
  281. }
  282.  
  283. public static boolean good_7_3(int[] qs) {
  284. return (qs[0] & 8) == 0 && (qs[1] & 8) == 0 && (qs[2] & 264) == 0 && (qs[3] & 136) == 0 && (qs[4] & 73) == 0 && (qs[5] & 42) == 0 && (qs[6] & 28) == 0 ;
  285. }
  286.  
  287. public static boolean good_7_4(int[] qs) {
  288. return (qs[0] & 16) == 0 && (qs[1] & 16) == 0 && (qs[2] & 16) == 0 && (qs[3] & 273) == 0 && (qs[4] & 146) == 0 && (qs[5] & 84) == 0 && (qs[6] & 56) == 0 ;
  289. }
  290.  
  291. public static boolean good_7_5(int[] qs) {
  292. return (qs[0] & 32) == 0 && (qs[1] & 32) == 0 && (qs[2] & 33) == 0 && (qs[3] & 34) == 0 && (qs[4] & 292) == 0 && (qs[5] & 168) == 0 && (qs[6] & 112) == 0 ;
  293. }
  294.  
  295. public static boolean good_7_6(int[] qs) {
  296. return (qs[0] & 64) == 0 && (qs[1] & 65) == 0 && (qs[2] & 66) == 0 && (qs[3] & 68) == 0 && (qs[4] & 72) == 0 && (qs[5] & 336) == 0 && (qs[6] & 224) == 0 ;
  297. }
  298.  
  299. public static boolean good_7_7(int[] qs) {
  300. 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] & 448) == 0 ;
  301. }
  302.  
  303. public static boolean good_7_8(int[] qs) {
  304. return (qs[0] & 258) == 0 && (qs[1] & 260) == 0 && (qs[2] & 264) == 0 && (qs[3] & 272) == 0 && (qs[4] & 288) == 0 && (qs[5] & 320) == 0 && (qs[6] & 384) == 0 ;
  305. }
  306.  
  307. public static boolean good_8_0(int[] qs) {
  308. return (qs[0] & 257) == 0 && (qs[1] & 129) == 0 && (qs[2] & 65) == 0 && (qs[3] & 33) == 0 && (qs[4] & 17) == 0 && (qs[5] & 9) == 0 && (qs[6] & 5) == 0 && (qs[7] & 3) == 0 ;
  309. }
  310.  
  311. public static boolean good_8_1(int[] qs) {
  312. return (qs[0] & 2) == 0 && (qs[1] & 258) == 0 && (qs[2] & 130) == 0 && (qs[3] & 66) == 0 && (qs[4] & 34) == 0 && (qs[5] & 18) == 0 && (qs[6] & 10) == 0 && (qs[7] & 7) == 0 ;
  313. }
  314.  
  315. public static boolean good_8_2(int[] qs) {
  316. return (qs[0] & 4) == 0 && (qs[1] & 4) == 0 && (qs[2] & 260) == 0 && (qs[3] & 132) == 0 && (qs[4] & 68) == 0 && (qs[5] & 36) == 0 && (qs[6] & 21) == 0 && (qs[7] & 14) == 0 ;
  317. }
  318.  
  319. public static boolean good_8_3(int[] qs) {
  320. return (qs[0] & 8) == 0 && (qs[1] & 8) == 0 && (qs[2] & 8) == 0 && (qs[3] & 264) == 0 && (qs[4] & 136) == 0 && (qs[5] & 73) == 0 && (qs[6] & 42) == 0 && (qs[7] & 28) == 0 ;
  321. }
  322.  
  323. public static boolean good_8_4(int[] qs) {
  324. return (qs[0] & 16) == 0 && (qs[1] & 16) == 0 && (qs[2] & 16) == 0 && (qs[3] & 16) == 0 && (qs[4] & 273) == 0 && (qs[5] & 146) == 0 && (qs[6] & 84) == 0 && (qs[7] & 56) == 0 ;
  325. }
  326.  
  327. public static boolean good_8_5(int[] qs) {
  328. return (qs[0] & 32) == 0 && (qs[1] & 32) == 0 && (qs[2] & 32) == 0 && (qs[3] & 33) == 0 && (qs[4] & 34) == 0 && (qs[5] & 292) == 0 && (qs[6] & 168) == 0 && (qs[7] & 112) == 0 ;
  329. }
  330.  
  331. public static boolean good_8_6(int[] qs) {
  332. return (qs[0] & 64) == 0 && (qs[1] & 64) == 0 && (qs[2] & 65) == 0 && (qs[3] & 66) == 0 && (qs[4] & 68) == 0 && (qs[5] & 72) == 0 && (qs[6] & 336) == 0 && (qs[7] & 224) == 0 ;
  333. }
  334.  
  335. public static boolean good_8_7(int[] qs) {
  336. return (qs[0] & 128) == 0 && (qs[1] & 129) == 0 && (qs[2] & 130) == 0 && (qs[3] & 132) == 0 && (qs[4] & 136) == 0 && (qs[5] & 144) == 0 && (qs[6] & 160) == 0 && (qs[7] & 448) == 0 ;
  337. }
  338.  
  339. public static boolean good_8_8(int[] qs) {
  340. return (qs[0] & 257) == 0 && (qs[1] & 258) == 0 && (qs[2] & 260) == 0 && (qs[3] & 264) == 0 && (qs[4] & 272) == 0 && (qs[5] & 288) == 0 && (qs[6] & 320) == 0 && (qs[7] & 384) == 0 ;
  341. }
  342.  
  343. private static long queens_0(int[] qs) {
  344. long result = 0;
  345. if(good_0_0(qs)) {
  346. qs[0] = 1;
  347. result += queens_1(qs);
  348. }
  349. if(good_0_1(qs)) {
  350. qs[0] = 2;
  351. result += queens_1(qs);
  352. }
  353. if(good_0_2(qs)) {
  354. qs[0] = 4;
  355. result += queens_1(qs);
  356. }
  357. if(good_0_3(qs)) {
  358. qs[0] = 8;
  359. result += queens_1(qs);
  360. }
  361. if(good_0_4(qs)) {
  362. qs[0] = 16;
  363. result += queens_1(qs);
  364. }
  365. if(good_0_5(qs)) {
  366. qs[0] = 32;
  367. result += queens_1(qs);
  368. }
  369. if(good_0_6(qs)) {
  370. qs[0] = 64;
  371. result += queens_1(qs);
  372. }
  373. if(good_0_7(qs)) {
  374. qs[0] = 128;
  375. result += queens_1(qs);
  376. }
  377. if(good_0_8(qs)) {
  378. qs[0] = 256;
  379. result += queens_1(qs);
  380. }
  381. return result;
  382. }
  383.  
  384. private static long queens_1(int[] qs) {
  385. long result = 0;
  386. if(good_1_0(qs)) {
  387. qs[1] = 1;
  388. result += queens_2(qs);
  389. }
  390. if(good_1_1(qs)) {
  391. qs[1] = 2;
  392. result += queens_2(qs);
  393. }
  394. if(good_1_2(qs)) {
  395. qs[1] = 4;
  396. result += queens_2(qs);
  397. }
  398. if(good_1_3(qs)) {
  399. qs[1] = 8;
  400. result += queens_2(qs);
  401. }
  402. if(good_1_4(qs)) {
  403. qs[1] = 16;
  404. result += queens_2(qs);
  405. }
  406. if(good_1_5(qs)) {
  407. qs[1] = 32;
  408. result += queens_2(qs);
  409. }
  410. if(good_1_6(qs)) {
  411. qs[1] = 64;
  412. result += queens_2(qs);
  413. }
  414. if(good_1_7(qs)) {
  415. qs[1] = 128;
  416. result += queens_2(qs);
  417. }
  418. if(good_1_8(qs)) {
  419. qs[1] = 256;
  420. result += queens_2(qs);
  421. }
  422. return result;
  423. }
  424.  
  425. private static long queens_2(int[] qs) {
  426. long result = 0;
  427. if(good_2_0(qs)) {
  428. qs[2] = 1;
  429. result += queens_3(qs);
  430. }
  431. if(good_2_1(qs)) {
  432. qs[2] = 2;
  433. result += queens_3(qs);
  434. }
  435. if(good_2_2(qs)) {
  436. qs[2] = 4;
  437. result += queens_3(qs);
  438. }
  439. if(good_2_3(qs)) {
  440. qs[2] = 8;
  441. result += queens_3(qs);
  442. }
  443. if(good_2_4(qs)) {
  444. qs[2] = 16;
  445. result += queens_3(qs);
  446. }
  447. if(good_2_5(qs)) {
  448. qs[2] = 32;
  449. result += queens_3(qs);
  450. }
  451. if(good_2_6(qs)) {
  452. qs[2] = 64;
  453. result += queens_3(qs);
  454. }
  455. if(good_2_7(qs)) {
  456. qs[2] = 128;
  457. result += queens_3(qs);
  458. }
  459. if(good_2_8(qs)) {
  460. qs[2] = 256;
  461. result += queens_3(qs);
  462. }
  463. return result;
  464. }
  465.  
  466. private static long queens_3(int[] qs) {
  467. long result = 0;
  468. if(good_3_0(qs)) {
  469. qs[3] = 1;
  470. result += queens_4(qs);
  471. }
  472. if(good_3_1(qs)) {
  473. qs[3] = 2;
  474. result += queens_4(qs);
  475. }
  476. if(good_3_2(qs)) {
  477. qs[3] = 4;
  478. result += queens_4(qs);
  479. }
  480. if(good_3_3(qs)) {
  481. qs[3] = 8;
  482. result += queens_4(qs);
  483. }
  484. if(good_3_4(qs)) {
  485. qs[3] = 16;
  486. result += queens_4(qs);
  487. }
  488. if(good_3_5(qs)) {
  489. qs[3] = 32;
  490. result += queens_4(qs);
  491. }
  492. if(good_3_6(qs)) {
  493. qs[3] = 64;
  494. result += queens_4(qs);
  495. }
  496. if(good_3_7(qs)) {
  497. qs[3] = 128;
  498. result += queens_4(qs);
  499. }
  500. if(good_3_8(qs)) {
  501. qs[3] = 256;
  502. result += queens_4(qs);
  503. }
  504. return result;
  505. }
  506.  
  507. private static long queens_4(int[] qs) {
  508. long result = 0;
  509. if(good_4_0(qs)) {
  510. qs[4] = 1;
  511. result += queens_5(qs);
  512. }
  513. if(good_4_1(qs)) {
  514. qs[4] = 2;
  515. result += queens_5(qs);
  516. }
  517. if(good_4_2(qs)) {
  518. qs[4] = 4;
  519. result += queens_5(qs);
  520. }
  521. if(good_4_3(qs)) {
  522. qs[4] = 8;
  523. result += queens_5(qs);
  524. }
  525. if(good_4_4(qs)) {
  526. qs[4] = 16;
  527. result += queens_5(qs);
  528. }
  529. if(good_4_5(qs)) {
  530. qs[4] = 32;
  531. result += queens_5(qs);
  532. }
  533. if(good_4_6(qs)) {
  534. qs[4] = 64;
  535. result += queens_5(qs);
  536. }
  537. if(good_4_7(qs)) {
  538. qs[4] = 128;
  539. result += queens_5(qs);
  540. }
  541. if(good_4_8(qs)) {
  542. qs[4] = 256;
  543. result += queens_5(qs);
  544. }
  545. return result;
  546. }
  547.  
  548. private static long queens_5(int[] qs) {
  549. long result = 0;
  550. if(good_5_0(qs)) {
  551. qs[5] = 1;
  552. result += queens_6(qs);
  553. }
  554. if(good_5_1(qs)) {
  555. qs[5] = 2;
  556. result += queens_6(qs);
  557. }
  558. if(good_5_2(qs)) {
  559. qs[5] = 4;
  560. result += queens_6(qs);
  561. }
  562. if(good_5_3(qs)) {
  563. qs[5] = 8;
  564. result += queens_6(qs);
  565. }
  566. if(good_5_4(qs)) {
  567. qs[5] = 16;
  568. result += queens_6(qs);
  569. }
  570. if(good_5_5(qs)) {
  571. qs[5] = 32;
  572. result += queens_6(qs);
  573. }
  574. if(good_5_6(qs)) {
  575. qs[5] = 64;
  576. result += queens_6(qs);
  577. }
  578. if(good_5_7(qs)) {
  579. qs[5] = 128;
  580. result += queens_6(qs);
  581. }
  582. if(good_5_8(qs)) {
  583. qs[5] = 256;
  584. result += queens_6(qs);
  585. }
  586. return result;
  587. }
  588.  
  589. private static long queens_6(int[] qs) {
  590. long result = 0;
  591. if(good_6_0(qs)) {
  592. qs[6] = 1;
  593. result += queens_7(qs);
  594. }
  595. if(good_6_1(qs)) {
  596. qs[6] = 2;
  597. result += queens_7(qs);
  598. }
  599. if(good_6_2(qs)) {
  600. qs[6] = 4;
  601. result += queens_7(qs);
  602. }
  603. if(good_6_3(qs)) {
  604. qs[6] = 8;
  605. result += queens_7(qs);
  606. }
  607. if(good_6_4(qs)) {
  608. qs[6] = 16;
  609. result += queens_7(qs);
  610. }
  611. if(good_6_5(qs)) {
  612. qs[6] = 32;
  613. result += queens_7(qs);
  614. }
  615. if(good_6_6(qs)) {
  616. qs[6] = 64;
  617. result += queens_7(qs);
  618. }
  619. if(good_6_7(qs)) {
  620. qs[6] = 128;
  621. result += queens_7(qs);
  622. }
  623. if(good_6_8(qs)) {
  624. qs[6] = 256;
  625. result += queens_7(qs);
  626. }
  627. return result;
  628. }
  629.  
  630. private static long queens_7(int[] qs) {
  631. long result = 0;
  632. if(good_7_0(qs)) {
  633. qs[7] = 1;
  634. result += queens_8(qs);
  635. }
  636. if(good_7_1(qs)) {
  637. qs[7] = 2;
  638. result += queens_8(qs);
  639. }
  640. if(good_7_2(qs)) {
  641. qs[7] = 4;
  642. result += queens_8(qs);
  643. }
  644. if(good_7_3(qs)) {
  645. qs[7] = 8;
  646. result += queens_8(qs);
  647. }
  648. if(good_7_4(qs)) {
  649. qs[7] = 16;
  650. result += queens_8(qs);
  651. }
  652. if(good_7_5(qs)) {
  653. qs[7] = 32;
  654. result += queens_8(qs);
  655. }
  656. if(good_7_6(qs)) {
  657. qs[7] = 64;
  658. result += queens_8(qs);
  659. }
  660. if(good_7_7(qs)) {
  661. qs[7] = 128;
  662. result += queens_8(qs);
  663. }
  664. if(good_7_8(qs)) {
  665. qs[7] = 256;
  666. result += queens_8(qs);
  667. }
  668. return result;
  669. }
  670.  
  671. private static long queens_8(int[] qs) {
  672. long result = 0;
  673. if(good_8_0(qs)) {
  674. result += 1;
  675. }
  676. if(good_8_1(qs)) {
  677. result += 1;
  678. }
  679. if(good_8_2(qs)) {
  680. result += 1;
  681. }
  682. if(good_8_3(qs)) {
  683. result += 1;
  684. }
  685. if(good_8_4(qs)) {
  686. result += 1;
  687. }
  688. if(good_8_5(qs)) {
  689. result += 1;
  690. }
  691. if(good_8_6(qs)) {
  692. result += 1;
  693. }
  694. if(good_8_7(qs)) {
  695. result += 1;
  696. }
  697. if(good_8_8(qs)) {
  698. result += 1;
  699. }
  700. return result;
  701. }
  702.  
  703. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement