// row 1 for (a=1; a<=MAX; a++) { for (b=1; b<=MAX; b++) { for (c=1; c<=MAX; c++) { for (d=1; d<=MAX; d++) { if (a+b+c+d != 34) continue; // row 2 for (e=1; e<=MAX; e++) { for (f=1; f<=MAX; f++) { for (g=1; g<=MAX; g++) { for (h=1; h<=MAX; h++) { if (e+f+g+h != 34) continue; // row 3 for (i=1; i<=MAX; i++) { for (j=1; j<=MAX; j++) { for (k=1; k<=MAX; k++) { for (l=1; l<=MAX; l++) { if (i+j+k+l != 34) continue; // row 4 for (m=1; m<=MAX; m++) { for (n=1; n<=MAX; n++) { for (o=1; o<=MAX; o++) { for (p=1; p<=MAX; p++) { if (m+n+o+p != 34) continue; // check sum(col 1,2,3,4) // check sum diagonal, reverse diagonal }}}} }}}} }}}} }}}}
Intel i5-10400 2.90GHz CPU, Windows 10, Java 11 환경에서 32초만 880개 찾았습니다
2024-11-03 11:12:38 1 2 15 16, 12 14 3 5, 13 7 10 4, 8 11 6 9 2024-11-03 11:12:39 1 2 15 16, 13 14 3 4, 12 7 10 5, 8 11 6 9 2024-11-03 11:12:39 1 2 16 15, 13 14 4 3, 12 7 9 6, 8 11 5 10 2024-11-03 11:12:39 1 3 14 16, 10 13 4 7, 15 6 11 2, 8 12 5 9 ...... 2024-11-03 11:13:11 16 13 2 3, 4 1 14 15, 5 8 11 10, 9 12 7 6 2024-11-03 11:13:11 16 13 2 3, 4 1 14 15, 9 12 7 6, 5 8 11 10 2024-11-03 11:13:11 16 13 3 2, 4 1 15 14, 5 8 10 11, 9 12 6 7 2024-11-03 11:13:11 16 13 3 2, 4 1 15 14, 9 12 6 7, 5 8 10 11 2024-11-03 11:13:11 Square44.solve(145): 0:00:32 cnt: 880
public void solveUq() { for (byte[] ar : pm.getOnePm()) { for (byte[] br : getLike(0)) { for (byte[] cr : getLike(01)) { for (byte[] dr : getLike(10,11)) { for (byte[] er : getLike(20,21)) { for (byte[] fr : getLike(30,31)) { // check sum(col 1,2,3,4) // check sum diagonal, reverse diagonal }}}} } public void solveDig(boolean is11) { // is11 : 1이 (0,0) 개 (1,1) 인가 ? ... }
개선된 알고리즘을 적용하면 0.202초만 880개 찾았습니다
2024-11-03 13:59:30 Permu.makePerm(208): 0:00:00 nPerm: 2064 2024-11-03 13:59:30 Magic40.solve0(27): 2024-11-03 13:59:30 Magic40.solve0(36): solveUq() 0.112 ans:464 2024-11-03 13:59:30 Magic40.solve0(40): solveDig00() 0.168 ans:208 2024-11-03 13:59:30 Magic40.solve0(44): solveDig11() 0.202 ans:208
그럼 찾아진 마방진을 구경해 보자, 아래 문자열 위를 마우스로 움직여 봐요
유일(1,2) | 대각(1,1) | 대각(2,2) |
---|---|---|
Check 8BA9651ED2 | Bad E3587AC1942F | SUM 50EB8D36279C |
F03C478BA9651ED2 | 0DB6E3587AC1942F | FA4150EB8D36279C |
F03C5A96874B2DE1 | 0D7AE394B6C1582F | F68190E74D3A2B5C |
F03C69A5874B1ED2 | 0CB7F3486AD1952E | EB4150FA9C36278D |
F03C965A4B872DE1 | 0C7BF384A6D1592E | E78150FA9C362B4D |
F03CA5694B871ED2 | 0F96C35A78E1B42D | EB4190F65C3A278D |
F03CA785496B1ED2 | 0F5AC396B4E1782D | E78190F65C3A2B4D |
E03D49A7B6581FC2 | 0E97D34A68F1B52C | DA6170CB8F34259E |
E03D5B86974A2CF1 | 0E5BD386A4F1792C | D6A170CB8F34295E |
E03D79A4865B1FC2 | 0DA7F4386BC1925E | DA61B0C74F38259E |
E03D856B7A941FC2 | 0AD7F4386BC1952E | D6A1B0C74F38295E |
E03D974A5B862CF1 | 0F87D43A69E1B25C | CB6170DA9E34258F |
E03DB5684A971FC2 | 0BD6E5387CA1924F | C7A1B0D65E38294F |
D03E4A97B5682FC1 | 0B7CE592D6A1384F | ED2150FA8B47369C |
D03E6B85A7491CF2 | 0AD7F5286CB1934E | E69150FA8B473D2C |
D03E7A94856B2FC1 | 0A7DF582C6B1394E | ED2180F75B4A369C |
D03E865B79A42FC1 | 0F4B95A6E2D1783C | E69180F75B4A3D2C |
D03EA7496B851CF2 | 0F4BE5A192D6783C | CA7160BD9F42358E |
D03EB65849A72FC1 | 0F96A53C78E1D24B | C7A160BD9F42385E |
C03F596AB7842ED1 | 0F3CA596D2E1784B | CA71D0B62F49358E |
C03F7B84956A2ED1 | 0E97B52C68F1D34A | C7A1D0B62F49385E |
C03F7B84A6591DE2 | 0E3DB586C2F1794A | FC2130ED8B56479A |
C03FB74859A62ED1 | 0D7AB6C1E394582F | F68190E72B5C4D3A |
C03FB964578A2ED1 | 0B7CD6A1E592384F | ED2130FC9A56478B |
C03FB7486A951DE2 | 09E7F6185CB2A34D | E78130FC9A564D2B |
F05A3C96872D4BE1 | 097EF681C5B23A4D | ED2190F63A5C478B |
F05A69C3872D1EB4 | 09E7F6183AD4C52B | E78190F63A5C4D2B |
F05A963C2D874BE1 | 097EF681A3D45C2B | D96240BFAE51378C |
F05AC3692D871EB4 | 0CB7F61829E5D34A | D78240BFAE51396C |
E05B29C7D6381FA4 | 0BC7F61829E5D43A | CF1270E98B5634AD |
E05B3D86972C4AF1 | 0DA7B61C58F2E349 | CF1290E76B5834AD |
E05B79C2863D1FA4 | 0BC7D61A38F4E529 | BC6170AD8F52439E |
E05B836D7C921FA4 | 0D6BA7C1F294583E | B6C170AD8F52493E |
E05B972C3D864AF1 | 0B6DC7A1F492385E | BC61D0A72F58439E |
E05BD3682C971FA4 | 0B5EC792F4A1386D | B6C1D0A72F58493E |
B05E2C97D3684FA1 | 09F6E7185CA3B24D | AD6170BC9E52438F |
B05E6D83C7291AF4 | 0A5FD782E4B1396C | A7C1D0B63E58492F |
B05E7C92836D4FA1 | 096FD782E4B13A5C | FC1230DE8B6547A9 |
B05E863D79C24FA1 | 0A5FE781D4B2396C | FA1450BE8D6327C9 |
B05EC7296D831AF4 | 096FE781D4B23A5C | EC3120DF9B64578A |
B05ED63829C74FA1 | 0D3EA794F2C1586B | E78120DF9B645C3A |
4차 마방진 계산 java 소스 받기, Java Src 20개로 만들어진 Project 입니다
Download