this repo has no description
at develop 31 kB view raw
1/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */ 2/* 3 * Main authors: 4 * Christian Schulte <schulte@gecode.org> 5 * 6 * Contributing authors: 7 * Samuel Gagnon <samuel.gagnon92@gmail.com> 8 9 * Copyright: 10 * Christian Schulte, 2001 11 * Samuel Gagnon, 2018 12 * 13 * This file is part of Gecode, the generic constraint 14 * development environment: 15 * http://www.gecode.org 16 * 17 * Permission is hereby granted, free of charge, to any person obtaining 18 * a copy of this software and associated documentation files (the 19 * "Software"), to deal in the Software without restriction, including 20 * without limitation the rights to use, copy, modify, merge, publish, 21 * distribute, sublicense, and/or sell copies of the Software, and to 22 * permit persons to whom the Software is furnished to do so, subject to 23 * the following conditions: 24 * 25 * The above copyright notice and this permission notice shall be 26 * included in all copies or substantial portions of the Software. 27 * 28 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 29 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 30 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 31 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 32 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 33 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 34 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 35 * 36 */ 37 38#include <gecode/driver.hh> 39#include <gecode/int.hh> 40#include <gecode/minimodel.hh> 41 42using namespace Gecode; 43 44namespace { 45 /// List of specifications 46 extern const int *specs[]; 47 /// Number of specifications 48 extern const unsigned int n_examples; 49} 50 51/** 52 * \brief %Example: Magic squares 53 * 54 * Compute magic squares of arbitrary size 55 * 56 * See problem 19 at http://www.csplib.org/. 57 * 58 * \ingroup Example 59 * 60 */ 61class MagicSquare : public Script { 62private: 63 /// Specification to be used 64 const int* spec; 65 /// Number of filled squares 66 const int n_filled; 67 /// Size of magic square 68 const int n; 69 /// Fields of square 70 IntVarArray x; 71 72public: 73 /// Branching to use for model 74 enum { 75 BRANCH_SIZE, ///< Branch by size 76 BRANCH_AFC_SIZE, ///< Branch by size over AFC 77 BRANCH_CBS_MAX_SD ///< Use maximum solution density 78 }; 79 /// Post constraints 80 MagicSquare(const SizeOptions& opt) 81 : Script(opt), spec(specs[opt.size()]), 82 n_filled(spec[1]), n(spec[0]), x(*this,n*n,1,n*n) { 83 // Number of fields on square 84 const int nn = n*n; 85 86 // Sum of all a row, column, or diagonal 87 const int s = nn*(nn+1) / (2*n); 88 89 // Matrix-wrapper for the square 90 Matrix<IntVarArray> m(x, n, n); 91 92 for (int i=0; i<n_filled; i++) { 93 int row, col, num; 94 { 95 int idx = 3 * i + 2; 96 row = spec[idx] - 1; 97 col = spec[idx + 1] - 1; 98 num = spec[idx + 2]; 99 } 100 rel(*this, m(col,row), IRT_EQ, num); 101 } 102 103 for (int i = n; i--; ) { 104 linear(*this, m.row(i), IRT_EQ, s, opt.ipl()); 105 linear(*this, m.col(i), IRT_EQ, s, opt.ipl()); 106 } 107 // Both diagonals must have sum s 108 { 109 IntVarArgs d1y(n); 110 IntVarArgs d2y(n); 111 for (int i = n; i--; ) { 112 d1y[i] = m(i,i); 113 d2y[i] = m(n-i-1,i); 114 } 115 linear(*this, d1y, IRT_EQ, s, opt.ipl()); 116 linear(*this, d2y, IRT_EQ, s, opt.ipl()); 117 } 118 119 // All fields must be distinct 120 distinct(*this, x, opt.ipl()); 121 122 switch (opt.branching()) { 123 case BRANCH_CBS_MAX_SD: 124#ifdef GECODE_HAS_CBS 125 cbsbranch(*this, x); 126#endif 127 case BRANCH_SIZE: 128 branch(*this, x, INT_VAR_SIZE_MIN(), INT_VAL_SPLIT_MIN()); 129 break; 130 case BRANCH_AFC_SIZE: 131 branch(*this, x, INT_VAR_AFC_SIZE_MAX(opt.decay()), INT_VAL_SPLIT_MIN()); 132 break; 133 } 134 } 135 136 /// Constructor for cloning \a s 137 MagicSquare(MagicSquare& s) 138 : Script(s), spec(s.spec), n_filled(s.n_filled), n(s.n) { 139 x.update(*this, s.x); 140 } 141 142 /// Copy during cloning 143 virtual Space* 144 copy(void) { 145 return new MagicSquare(*this); 146 } 147 /// Print solution 148 virtual void 149 print(std::ostream& os) const { 150 // Matrix-wrapper for the square 151 Matrix<IntVarArray> m(x, n, n); 152 for (int i = 0; i<n; i++) { 153 os << "\t"; 154 for (int j = 0; j<n; j++) { 155 os.width(2); 156 os << m(i,j) << " "; 157 } 158 os << std::endl; 159 } 160 } 161 162}; 163 164/** \brief Main-function 165 * \relates MagicSquare 166 */ 167int 168main(int argc, char* argv[]) { 169 SizeOptions opt("MagicSquare"); 170 opt.iterations(1); 171 opt.size(0); 172 opt.branching(MagicSquare::BRANCH_SIZE); 173 opt.branching(MagicSquare::BRANCH_SIZE, "size"); 174 opt.branching(MagicSquare::BRANCH_AFC_SIZE, "afc-size"); 175#ifdef GECODE_HAS_CBS 176 opt.branching(MagicSquare::BRANCH_CBS_MAX_SD, "maxSD"); 177#endif 178 opt.parse(argc,argv); 179 Script::run<MagicSquare,DFS,SizeOptions>(opt); 180 return 0; 181} 182 183namespace { 184 185 /** \name Magic-square specifications 186 * 187 * A specification is given by a list of integers. The first two integers (n 188 * and n_filled) specify the dimension of the magic square and the number of 189 * pre-filled square respectively. Then n_filled triplets <i, j, v> of 190 * integers follows, with i and j representing the row and the column of the 191 * value v. 192 * 193 * \relates Magic-square 194 */ 195 //@{ 196 const int magicSquare5_filled10_10[] = { 197 5,10, 198 1,2,18, 199 1,3,9, 200 1,5,2, 201 2,2,5, 202 3,1,1, 203 3,5,24, 204 4,2,21, 205 4,3,6, 206 5,2,13, 207 5,4,10, 208 }; 209 210 const int magicSquare5_filled10_11[] = { 211 5,10, 212 1,3,6, 213 1,5,2, 214 2,2,8, 215 2,5,25, 216 3,1,1, 217 3,4,17, 218 3,5,24, 219 4,1,9, 220 4,2,21, 221 5,3,16, 222 }; 223 224 const int magicSquare5_filled10_12[] = { 225 5,10, 226 1,2,5, 227 1,4,21, 228 2,1,10, 229 2,2,16, 230 2,3,8, 231 3,4,12, 232 4,2,20, 233 4,5,11, 234 5,1,18, 235 5,5,3, 236 }; 237 238 const int magicSquare5_filled10_13[] = { 239 5,10, 240 1,5,2, 241 1,2,16, 242 2,3,8, 243 3,3,21, 244 3,1,1, 245 4,1,12, 246 5,2,6, 247 5,1,20, 248 5,3,14, 249 5,5,3, 250 }; 251 252 const int magicSquare5_filled10_14[] = { 253 5,10, 254 1,3,14, 255 1,2,7, 256 2,3,12, 257 2,4,4, 258 3,3,21, 259 3,5,24, 260 4,5,11, 261 4,4,6, 262 4,3,13, 263 5,4,22, 264 }; 265 266 const int magicSquare5_filled10_15[] = { 267 5,10, 268 1,5,2, 269 1,1,21, 270 2,1,15, 271 2,2,5, 272 4,2,18, 273 4,5,11, 274 5,4,20, 275 5,5,3, 276 5,2,12, 277 5,3,8, 278 }; 279 280 const int magicSquare5_filled10_16[] = { 281 5,10, 282 1,1,22, 283 1,5,2, 284 1,4,18, 285 2,5,25, 286 2,4,7, 287 3,4,15, 288 3,1,1, 289 3,2,9, 290 4,4,4, 291 5,1,23, 292 }; 293 294 const int magicSquare5_filled10_17[] = { 295 5,10, 296 1,2,5, 297 2,4,4, 298 2,5,25, 299 3,4,16, 300 3,5,24, 301 3,3,14, 302 3,1,1, 303 4,2,22, 304 5,3,13, 305 5,4,7, 306 }; 307 308 const int magicSquare5_filled10_18[] = { 309 5,10, 310 1,3,7, 311 1,4,22, 312 2,5,25, 313 2,4,4, 314 2,1,10, 315 3,1,1, 316 4,4,6, 317 4,3,20, 318 5,3,8, 319 5,2,12, 320 }; 321 322 const int magicSquare5_filled10_19[] = { 323 5,10, 324 1,2,6, 325 1,5,2, 326 2,2,18, 327 2,1,13, 328 3,5,24, 329 3,3,17, 330 5,2,7, 331 5,1,22, 332 5,4,21, 333 5,3,12, 334 }; 335 336 const int magicSquare5_filled10_1[] = { 337 5,10, 338 1,4,16, 339 1,5,2, 340 1,3,20, 341 2,5,25, 342 2,4,4, 343 3,5,24, 344 3,1,1, 345 4,4,9, 346 5,2,12, 347 5,1,23, 348 }; 349 350 const int magicSquare5_filled10_20[] = { 351 5,10, 352 1,1,22, 353 2,5,25, 354 2,2,5, 355 3,5,24, 356 3,1,1, 357 4,4,19, 358 4,5,11, 359 5,1,23, 360 5,2,8, 361 5,3,10, 362 }; 363 364 const int magicSquare5_filled10_2[] = { 365 5,10, 366 1,2,19, 367 1,4,9, 368 2,5,25, 369 2,1,15, 370 3,2,6, 371 4,2,20, 372 4,1,5, 373 5,5,3, 374 5,3,10, 375 5,1,23, 376 }; 377 378 const int magicSquare5_filled10_3[] = { 379 5,10, 380 1,1,15, 381 1,5,2, 382 2,1,20, 383 2,3,7, 384 3,4,5, 385 4,1,6, 386 4,4,16, 387 5,1,23, 388 5,2,12, 389 5,3,8, 390 }; 391 392 const int magicSquare5_filled10_4[] = { 393 5,10, 394 1,2,15, 395 1,5,2, 396 1,1,22, 397 1,4,16, 398 2,5,25, 399 3,5,24, 400 3,1,1, 401 4,1,23, 402 4,2,18, 403 4,3,9, 404 }; 405 406 const int magicSquare5_filled10_5[] = { 407 5,10, 408 1,1,14, 409 1,4,21, 410 2,2,12, 411 2,5,25, 412 3,2,5, 413 3,3,19, 414 3,5,24, 415 4,2,18, 416 5,1,22, 417 5,2,10, 418 }; 419 420 const int magicSquare5_filled10_6[] = { 421 5,10, 422 1,1,19, 423 1,2,20, 424 2,1,7, 425 3,3,23, 426 4,5,11, 427 4,4,4, 428 5,3,13, 429 5,5,3, 430 5,4,22, 431 5,2,10, 432 }; 433 434 const int magicSquare5_filled10_7[] = { 435 5,10, 436 1,2,10, 437 2,4,4, 438 3,5,24, 439 3,4,17, 440 4,5,11, 441 4,2,23, 442 4,4,5, 443 4,1,14, 444 5,2,6, 445 5,5,3, 446 }; 447 448 const int magicSquare5_filled10_8[] = { 449 5,10, 450 1,1,22, 451 1,3,5, 452 2,5,25, 453 2,4,4, 454 3,5,24, 455 3,2,8, 456 4,1,10, 457 4,2,21, 458 4,3,16, 459 4,5,11, 460 }; 461 462 const int magicSquare5_filled10_9[] = { 463 5,10, 464 1,5,2, 465 2,2,10, 466 2,5,25, 467 3,3,23, 468 3,1,1, 469 4,2,15, 470 4,4,13, 471 4,3,6, 472 5,5,3, 473 5,3,5, 474 }; 475 476 const int magicSquare5_filled11_3_1[] = { 477 5,11, 478 1,1,15, 479 1,5,2, 480 2,1,20, 481 2,3,7, 482 3,2,13, 483 3,4,5, 484 4,1,6, 485 4,4,16, 486 5,1,23, 487 5,2,12, 488 5,3,8, 489 }; 490 491 const int magicSquare5_filled11_5_1[] = { 492 5,11, 493 1,1,14, 494 1,4,21, 495 2,2,12, 496 2,5,25, 497 3,2,5, 498 3,3,19, 499 3,4,16, 500 3,5,24, 501 4,2,18, 502 5,1,22, 503 5,2,10, 504 }; 505 506 const int magicSquare5_filled11_5_2[] = { 507 5,11, 508 1,1,14, 509 1,4,21, 510 2,2,12, 511 2,5,25, 512 3,2,5, 513 3,3,19, 514 3,5,24, 515 4,2,18, 516 5,1,22, 517 5,2,10, 518 5,5,3, 519 }; 520 521 const int magicSquare5_filled11_5_3[] = { 522 5,11, 523 1,1,14, 524 1,3,8, 525 1,4,21, 526 2,2,12, 527 2,5,25, 528 3,2,5, 529 3,3,19, 530 3,5,24, 531 4,2,18, 532 5,1,22, 533 5,2,10, 534 }; 535 536 const int magicSquare5_filled12_10_1[] = { 537 5,12, 538 1,2,18, 539 1,3,9, 540 1,5,2, 541 2,2,5, 542 3,1,1, 543 3,3,15, 544 3,5,24, 545 4,1,7, 546 4,2,21, 547 4,3,6, 548 5,2,13, 549 5,4,10, 550 }; 551 552 const int magicSquare5_filled12_1_1[] = { 553 5,12, 554 1,1,21, 555 1,3,20, 556 1,4,16, 557 1,5,2, 558 2,5,25, 559 2,4,4, 560 3,1,1, 561 3,3,14, 562 3,5,24, 563 4,4,9, 564 5,2,12, 565 5,1,23, 566 }; 567 568 const int magicSquare5_filled12_1_2[] = { 569 5,12, 570 1,3,20, 571 1,4,16, 572 1,5,2, 573 2,2,18, 574 2,4,4, 575 2,5,25, 576 3,1,1, 577 3,3,14, 578 3,5,24, 579 4,4,9, 580 5,2,12, 581 5,1,23, 582 }; 583 584 const int magicSquare5_filled12_1_3[] = { 585 5,12, 586 1,3,20, 587 1,4,16, 588 1,5,2, 589 2,2,18, 590 2,4,4, 591 2,5,25, 592 3,1,1, 593 3,5,24, 594 4,4,9, 595 5,1,23, 596 5,2,12, 597 5,3,10, 598 }; 599 600 const int magicSquare5_filled12_2_1[] = { 601 5,12, 602 1,1,21, 603 1,2,19, 604 1,4,9, 605 2,1,15, 606 2,5,25, 607 3,2,6, 608 3,4,18, 609 4,1,5, 610 4,2,20, 611 5,1,23, 612 5,3,10, 613 5,5,3, 614 }; 615 616 const int magicSquare5_filled12_2_2[] = { 617 5,12, 618 1,2,19, 619 1,4,9, 620 2,1,15, 621 2,3,8, 622 2,5,25, 623 3,2,6, 624 3,4,18, 625 4,1,5, 626 4,2,20, 627 5,1,23, 628 5,3,10, 629 5,5,3, 630 }; 631 632 const int magicSquare5_filled12_2_3[] = { 633 5,12, 634 1,1,21, 635 1,2,19, 636 1,4,9, 637 2,1,15, 638 2,5,25, 639 3,2,6, 640 4,1,5, 641 4,2,20, 642 4,4,12, 643 5,1,23, 644 5,3,10, 645 5,5,3, 646 }; 647 648 const int magicSquare5_filled12_3_1[] = { 649 5,12, 650 1,1,15, 651 1,4,21, 652 1,5,2, 653 2,1,20, 654 2,3,7, 655 3,4,5, 656 4,1,6, 657 4,4,16, 658 5,1,23, 659 5,2,12, 660 5,3,8, 661 5,5,3, 662 }; 663 664 const int magicSquare5_filled12_3_2[] = { 665 5,12, 666 1,1,15, 667 1,2,17, 668 1,3,10, 669 1,5,2, 670 2,1,20, 671 2,3,7, 672 3,4,5, 673 4,1,6, 674 4,4,16, 675 5,1,23, 676 5,2,12, 677 5,3,8, 678 }; 679 680 const int magicSquare9_filled10_10[] = { 681 9,10, 682 8,2,19, 683 6,7,25, 684 7,3,15, 685 8,4,77, 686 7,1,29, 687 4,9,63, 688 4,6,53, 689 7,1,29, 690 3,9,36, 691 5,4,74, 692 }; 693 694 const int magicSquare9_filled10_11[] = { 695 9,10, 696 5,5,78, 697 6,5,56, 698 9,8,30, 699 3,3,38, 700 2,3,9, 701 1,2,23, 702 3,5,80, 703 9,7,52, 704 7,5,1, 705 1,1,32, 706 }; 707 708 const int magicSquare9_filled10_12[] = { 709 9,10, 710 6,7,25, 711 1,4,2, 712 5,1,54, 713 3,3,38, 714 7,2,71, 715 1,5,28, 716 3,2,50, 717 2,7,59, 718 7,7,42, 719 5,4,74, 720 }; 721 722 const int magicSquare9_filled10_13[] = { 723 9,10, 724 7,2,71, 725 8,9,22, 726 2,2,17, 727 3,3,38, 728 1,8,72, 729 6,5,56, 730 5,6,41, 731 9,1,8, 732 7,8,37, 733 3,3,38, 734 }; 735 736 const int magicSquare9_filled10_14[] = { 737 9,10, 738 9,4,35, 739 1,3,48, 740 9,6,69, 741 7,6,70, 742 6,1,46, 743 5,1,54, 744 4,2,62, 745 2,8,67, 746 7,6,70, 747 7,3,15, 748 }; 749 750 const int magicSquare9_filled10_15[] = { 751 9,10, 752 9,8,30, 753 1,6,4, 754 9,9,45, 755 9,2,49, 756 5,6,41, 757 6,5,56, 758 5,9,7, 759 2,6,3, 760 3,2,50, 761 1,2,23, 762 }; 763 764 const int magicSquare9_filled10_16[] = { 765 9,10, 766 1,9,81, 767 3,8,18, 768 8,4,77, 769 6,5,56, 770 7,9,31, 771 1,9,81, 772 7,3,15, 773 6,4,5, 774 6,8,61, 775 4,6,53, 776 }; 777 778 const int magicSquare9_filled10_17[] = { 779 9,10, 780 4,4,12, 781 9,5,26, 782 7,6,70, 783 8,2,19, 784 7,2,71, 785 8,1,68, 786 8,2,19, 787 5,5,78, 788 6,3,21, 789 5,3,75, 790 }; 791 792 const int magicSquare9_filled10_18[] = { 793 9,10, 794 7,2,71, 795 4,1,47, 796 6,9,24, 797 8,8,39, 798 3,9,36, 799 2,9,60, 800 4,3,64, 801 5,8,11, 802 4,2,62, 803 3,7,43, 804 }; 805 806 const int magicSquare9_filled10_19[] = { 807 9,10, 808 7,4,73, 809 8,3,44, 810 8,1,68, 811 1,2,23, 812 1,6,4, 813 5,7,16, 814 3,6,6, 815 8,2,19, 816 4,5,14, 817 3,3,38, 818 }; 819 820 const int magicSquare9_filled10_1[] = { 821 9,10, 822 4,5,14, 823 6,7,25, 824 8,8,39, 825 6,7,25, 826 3,8,18, 827 4,4,12, 828 8,2,19, 829 4,1,47, 830 4,6,53, 831 8,5,10, 832 }; 833 834 const int magicSquare9_filled10_20[] = { 835 9,10, 836 1,4,2, 837 8,6,57, 838 1,5,28, 839 1,8,72, 840 6,1,46, 841 4,1,47, 842 8,7,33, 843 4,6,53, 844 1,5,28, 845 5,8,11, 846 }; 847 848 const int magicSquare9_filled10_2[] = { 849 9,10, 850 2,5,76, 851 9,1,8, 852 2,4,51, 853 1,2,23, 854 9,7,52, 855 1,8,72, 856 3,3,38, 857 6,6,66, 858 3,7,43, 859 7,6,70, 860 }; 861 862 const int magicSquare9_filled10_3[] = { 863 9,10, 864 5,6,41, 865 5,3,75, 866 6,1,46, 867 3,2,50, 868 3,8,18, 869 1,5,28, 870 3,2,50, 871 5,9,7, 872 4,8,34, 873 1,4,2, 874 }; 875 876 const int magicSquare9_filled10_4[] = { 877 9,10, 878 4,9,63, 879 9,4,35, 880 7,5,1, 881 2,6,3, 882 8,4,77, 883 7,6,70, 884 5,8,11, 885 2,5,76, 886 9,4,35, 887 3,6,6, 888 }; 889 890 const int magicSquare9_filled10_5[] = { 891 9,10, 892 2,5,76, 893 1,4,2, 894 9,3,55, 895 1,2,23, 896 3,3,38, 897 2,5,76, 898 3,4,40, 899 3,4,40, 900 1,2,23, 901 3,6,6, 902 }; 903 904 const int magicSquare9_filled10_6[] = { 905 9,10, 906 7,5,1, 907 4,7,20, 908 8,7,33, 909 5,5,78, 910 5,2,13, 911 3,1,58, 912 1,9,81, 913 5,1,54, 914 3,1,58, 915 7,5,1, 916 }; 917 918 const int magicSquare9_filled10_7[] = { 919 9,10, 920 7,5,1, 921 7,5,1, 922 1,5,28, 923 4,8,34, 924 4,1,47, 925 4,2,62, 926 2,6,3, 927 2,8,67, 928 1,9,81, 929 5,4,74, 930 }; 931 932 const int magicSquare9_filled10_8[] = { 933 9,10, 934 9,4,35, 935 4,9,63, 936 1,6,4, 937 5,5,78, 938 7,5,1, 939 9,4,35, 940 5,6,41, 941 6,3,21, 942 9,3,55, 943 3,5,80, 944 }; 945 946 const int magicSquare9_filled10_9[] = { 947 9,10, 948 4,8,34, 949 4,1,47, 950 3,9,36, 951 8,6,57, 952 9,2,49, 953 9,9,45, 954 1,6,4, 955 4,6,53, 956 3,6,6, 957 2,2,17, 958 }; 959 960 const int magicSquare9_filled50_10[] = { 961 9,50, 962 4,3,64, 963 3,9,36, 964 8,3,44, 965 6,9,24, 966 2,7,59, 967 7,2,71, 968 8,2,19, 969 2,8,67, 970 6,7,25, 971 6,6,66, 972 3,8,18, 973 1,9,81, 974 8,4,77, 975 5,4,74, 976 8,2,19, 977 6,9,24, 978 4,9,63, 979 9,3,55, 980 2,5,76, 981 9,2,49, 982 3,7,43, 983 3,8,18, 984 6,3,21, 985 6,2,65, 986 9,2,49, 987 7,9,31, 988 8,6,57, 989 8,6,57, 990 9,3,55, 991 7,5,1, 992 2,4,51, 993 5,4,74, 994 3,4,40, 995 4,2,62, 996 6,3,21, 997 3,6,6, 998 7,4,73, 999 5,4,74, 1000 4,8,34, 1001 3,3,38, 1002 8,1,68, 1003 3,4,40, 1004 6,8,61, 1005 7,3,15, 1006 9,5,26, 1007 7,1,29, 1008 6,9,24, 1009 2,6,3, 1010 3,5,80, 1011 7,9,31, 1012 }; 1013 1014 const int magicSquare9_filled50_11[] = { 1015 9,50, 1016 6,8,61, 1017 3,3,38, 1018 9,7,52, 1019 6,3,21, 1020 4,9,63, 1021 3,9,36, 1022 7,3,15, 1023 1,1,32, 1024 2,7,59, 1025 1,8,72, 1026 2,5,76, 1027 8,7,33, 1028 5,1,54, 1029 3,5,80, 1030 3,8,18, 1031 4,8,34, 1032 4,5,14, 1033 2,3,9, 1034 9,5,26, 1035 3,3,38, 1036 2,5,76, 1037 9,8,30, 1038 8,9,22, 1039 6,7,25, 1040 7,6,70, 1041 5,6,41, 1042 2,1,27, 1043 4,4,12, 1044 8,4,77, 1045 8,2,19, 1046 9,1,8, 1047 7,3,15, 1048 5,6,41, 1049 3,4,40, 1050 2,5,76, 1051 5,1,54, 1052 8,4,77, 1053 7,4,73, 1054 2,3,9, 1055 1,8,72, 1056 7,3,15, 1057 4,6,53, 1058 3,5,80, 1059 9,2,49, 1060 7,7,42, 1061 1,6,4, 1062 7,7,42, 1063 7,2,71, 1064 4,7,20, 1065 4,3,64, 1066 }; 1067 1068 const int magicSquare9_filled50_12[] = { 1069 9,50, 1070 1,3,48, 1071 3,5,80, 1072 4,5,14, 1073 6,1,46, 1074 8,8,39, 1075 2,8,67, 1076 8,8,39, 1077 9,2,49, 1078 2,2,17, 1079 6,1,46, 1080 9,9,45, 1081 8,9,22, 1082 3,4,40, 1083 2,3,9, 1084 4,6,53, 1085 5,3,75, 1086 6,6,66, 1087 7,1,29, 1088 8,1,68, 1089 1,7,79, 1090 7,9,31, 1091 5,3,75, 1092 6,4,5, 1093 5,7,16, 1094 3,1,58, 1095 5,3,75, 1096 7,4,73, 1097 9,8,30, 1098 5,8,11, 1099 1,7,79, 1100 4,4,12, 1101 9,8,30, 1102 7,4,73, 1103 6,5,56, 1104 4,4,12, 1105 2,8,67, 1106 1,4,2, 1107 2,6,3, 1108 6,4,5, 1109 1,8,72, 1110 2,6,3, 1111 8,9,22, 1112 7,7,42, 1113 5,9,7, 1114 5,5,78, 1115 6,7,25, 1116 6,5,56, 1117 3,3,38, 1118 8,8,39, 1119 8,1,68, 1120 }; 1121 1122 const int magicSquare9_filled50_13[] = { 1123 9,50, 1124 2,7,59, 1125 6,2,65, 1126 9,5,26, 1127 6,5,56, 1128 8,6,57, 1129 1,1,32, 1130 9,9,45, 1131 7,6,70, 1132 4,2,62, 1133 4,9,63, 1134 4,9,63, 1135 4,8,34, 1136 3,6,6, 1137 1,1,32, 1138 2,6,3, 1139 8,3,44, 1140 2,3,9, 1141 2,1,27, 1142 7,7,42, 1143 3,6,6, 1144 2,3,9, 1145 4,1,47, 1146 2,1,27, 1147 5,4,74, 1148 9,8,30, 1149 3,1,58, 1150 7,4,73, 1151 6,9,24, 1152 7,5,1, 1153 8,8,39, 1154 1,4,2, 1155 1,9,81, 1156 6,9,24, 1157 7,2,71, 1158 5,9,7, 1159 5,6,41, 1160 1,8,72, 1161 4,2,62, 1162 6,8,61, 1163 3,3,38, 1164 6,5,56, 1165 1,2,23, 1166 6,7,25, 1167 8,3,44, 1168 2,4,51, 1169 1,9,81, 1170 8,8,39, 1171 9,2,49, 1172 6,6,66, 1173 3,1,58, 1174 }; 1175 1176 const int magicSquare9_filled50_14[] = { 1177 9,50, 1178 1,4,2, 1179 6,7,25, 1180 3,2,50, 1181 6,6,66, 1182 2,8,67, 1183 5,1,54, 1184 2,6,3, 1185 7,7,42, 1186 6,2,65, 1187 2,8,67, 1188 8,3,44, 1189 2,9,60, 1190 4,5,14, 1191 9,5,26, 1192 4,1,47, 1193 5,2,13, 1194 4,9,63, 1195 6,5,56, 1196 1,9,81, 1197 1,2,23, 1198 8,4,77, 1199 1,9,81, 1200 9,7,52, 1201 5,3,75, 1202 8,6,57, 1203 1,7,79, 1204 8,9,22, 1205 4,9,63, 1206 5,1,54, 1207 3,6,6, 1208 1,7,79, 1209 5,3,75, 1210 6,2,65, 1211 5,6,41, 1212 1,3,48, 1213 6,8,61, 1214 6,6,66, 1215 6,3,21, 1216 3,1,58, 1217 6,8,61, 1218 6,4,5, 1219 5,4,74, 1220 4,7,20, 1221 1,6,4, 1222 7,3,15, 1223 2,6,3, 1224 1,6,4, 1225 6,4,5, 1226 5,1,54, 1227 8,4,77, 1228 }; 1229 1230 const int magicSquare9_filled50_15[] = { 1231 9,50, 1232 1,4,2, 1233 2,7,59, 1234 7,5,1, 1235 7,7,42, 1236 5,3,75, 1237 5,1,54, 1238 7,8,37, 1239 2,8,67, 1240 3,3,38, 1241 4,9,63, 1242 3,3,38, 1243 3,1,58, 1244 6,8,61, 1245 5,2,13, 1246 6,1,46, 1247 5,5,78, 1248 4,4,12, 1249 2,8,67, 1250 9,8,30, 1251 5,2,13, 1252 9,7,52, 1253 3,4,40, 1254 5,2,13, 1255 9,7,52, 1256 2,3,9, 1257 5,5,78, 1258 3,5,80, 1259 5,8,11, 1260 2,7,59, 1261 9,7,52, 1262 7,2,71, 1263 9,8,30, 1264 4,1,47, 1265 6,1,46, 1266 7,8,37, 1267 2,4,51, 1268 6,2,65, 1269 5,8,11, 1270 2,4,51, 1271 6,3,21, 1272 6,8,61, 1273 5,8,11, 1274 3,8,18, 1275 4,4,12, 1276 5,4,74, 1277 9,1,8, 1278 3,8,18, 1279 8,4,77, 1280 7,3,15, 1281 4,2,62, 1282 }; 1283 1284 const int magicSquare9_filled50_16[] = { 1285 9,50, 1286 1,4,2, 1287 3,6,6, 1288 3,7,43, 1289 5,4,74, 1290 1,8,72, 1291 5,6,41, 1292 4,7,20, 1293 2,6,3, 1294 3,5,80, 1295 8,8,39, 1296 6,5,56, 1297 6,7,25, 1298 3,4,40, 1299 1,7,79, 1300 4,3,64, 1301 8,5,10, 1302 4,8,34, 1303 8,6,57, 1304 5,3,75, 1305 8,5,10, 1306 8,1,68, 1307 8,2,19, 1308 5,9,7, 1309 8,8,39, 1310 3,4,40, 1311 4,6,53, 1312 8,9,22, 1313 3,8,18, 1314 1,2,23, 1315 6,5,56, 1316 4,2,62, 1317 9,7,52, 1318 1,7,79, 1319 1,5,28, 1320 8,8,39, 1321 1,6,4, 1322 6,8,61, 1323 8,2,19, 1324 6,4,5, 1325 9,6,69, 1326 5,3,75, 1327 2,3,9, 1328 2,3,9, 1329 1,9,81, 1330 4,4,12, 1331 4,5,14, 1332 6,3,21, 1333 2,4,51, 1334 8,9,22, 1335 8,6,57, 1336 }; 1337 1338 const int magicSquare9_filled50_17[] = { 1339 9,50, 1340 8,6,57, 1341 9,2,49, 1342 3,5,80, 1343 3,6,6, 1344 8,2,19, 1345 9,1,8, 1346 2,1,27, 1347 3,1,58, 1348 1,2,23, 1349 1,2,23, 1350 5,2,13, 1351 6,8,61, 1352 5,5,78, 1353 2,1,27, 1354 5,8,11, 1355 4,1,47, 1356 4,3,64, 1357 2,4,51, 1358 8,3,44, 1359 9,4,35, 1360 2,8,67, 1361 5,4,74, 1362 7,5,1, 1363 2,7,59, 1364 6,2,65, 1365 9,9,45, 1366 4,3,64, 1367 7,6,70, 1368 8,9,22, 1369 4,3,64, 1370 7,7,42, 1371 1,1,32, 1372 7,2,71, 1373 3,3,38, 1374 2,2,17, 1375 5,4,74, 1376 8,7,33, 1377 7,3,15, 1378 2,8,67, 1379 7,6,70, 1380 8,4,77, 1381 5,9,7, 1382 7,2,71, 1383 3,3,38, 1384 1,6,4, 1385 5,5,78, 1386 1,3,48, 1387 4,7,20, 1388 2,6,3, 1389 8,4,77, 1390 }; 1391 1392 const int magicSquare9_filled50_18[] = { 1393 9,50, 1394 5,3,75, 1395 7,1,29, 1396 9,4,35, 1397 3,8,18, 1398 9,1,8, 1399 4,5,14, 1400 2,6,3, 1401 2,8,67, 1402 8,4,77, 1403 1,6,4, 1404 7,3,15, 1405 2,5,76, 1406 5,5,78, 1407 3,7,43, 1408 1,8,72, 1409 8,5,10, 1410 1,5,28, 1411 6,7,25, 1412 6,6,66, 1413 5,3,75, 1414 6,7,25, 1415 8,8,39, 1416 3,9,36, 1417 4,1,47, 1418 2,3,9, 1419 7,8,37, 1420 5,6,41, 1421 4,8,34, 1422 1,4,2, 1423 3,8,18, 1424 9,1,8, 1425 3,9,36, 1426 5,6,41, 1427 6,8,61, 1428 3,8,18, 1429 1,6,4, 1430 5,8,11, 1431 2,8,67, 1432 6,4,5, 1433 6,5,56, 1434 6,1,46, 1435 1,8,72, 1436 6,2,65, 1437 6,6,66, 1438 5,6,41, 1439 4,2,62, 1440 6,5,56, 1441 1,8,72, 1442 8,4,77, 1443 4,8,34, 1444 }; 1445 1446 const int magicSquare9_filled50_19[] = { 1447 9,50, 1448 1,5,28, 1449 3,5,80, 1450 1,2,23, 1451 1,4,2, 1452 5,7,16, 1453 8,8,39, 1454 5,9,7, 1455 7,2,71, 1456 1,1,32, 1457 5,4,74, 1458 7,9,31, 1459 5,1,54, 1460 2,4,51, 1461 7,9,31, 1462 7,1,29, 1463 6,5,56, 1464 3,8,18, 1465 1,4,2, 1466 9,8,30, 1467 7,3,15, 1468 3,4,40, 1469 1,8,72, 1470 3,5,80, 1471 9,3,55, 1472 6,4,5, 1473 6,1,46, 1474 1,9,81, 1475 1,2,23, 1476 3,5,80, 1477 9,7,52, 1478 4,5,14, 1479 3,6,6, 1480 1,1,32, 1481 7,9,31, 1482 8,3,44, 1483 2,2,17, 1484 6,1,46, 1485 9,6,69, 1486 5,6,41, 1487 8,1,68, 1488 7,3,15, 1489 1,8,72, 1490 9,9,45, 1491 7,2,71, 1492 2,4,51, 1493 8,5,10, 1494 6,1,46, 1495 2,6,3, 1496 1,6,4, 1497 4,7,20, 1498 }; 1499 1500 const int magicSquare9_filled50_1[] = { 1501 9,50, 1502 7,1,29, 1503 2,9,60, 1504 2,4,51, 1505 1,8,72, 1506 8,5,10, 1507 4,6,53, 1508 3,4,40, 1509 6,2,65, 1510 8,2,19, 1511 3,6,6, 1512 6,2,65, 1513 2,8,67, 1514 2,5,76, 1515 8,9,22, 1516 6,2,65, 1517 6,1,46, 1518 2,8,67, 1519 1,4,2, 1520 9,8,30, 1521 2,5,76, 1522 3,3,38, 1523 1,3,48, 1524 4,6,53, 1525 5,1,54, 1526 7,5,1, 1527 6,1,46, 1528 4,6,53, 1529 6,5,56, 1530 1,5,28, 1531 3,6,6, 1532 4,8,34, 1533 7,6,70, 1534 4,5,14, 1535 7,3,15, 1536 1,6,4, 1537 8,2,19, 1538 7,6,70, 1539 4,8,34, 1540 3,8,18, 1541 8,7,33, 1542 1,5,28, 1543 6,5,56, 1544 8,2,19, 1545 9,8,30, 1546 4,2,62, 1547 3,8,18, 1548 8,7,33, 1549 4,2,62, 1550 9,8,30, 1551 5,9,7, 1552 }; 1553 1554 const int magicSquare9_filled50_20[] = { 1555 9,50, 1556 8,3,44, 1557 8,2,19, 1558 3,5,80, 1559 7,8,37, 1560 8,4,77, 1561 6,5,56, 1562 4,5,14, 1563 1,3,48, 1564 2,6,3, 1565 4,3,64, 1566 9,9,45, 1567 6,6,66, 1568 8,5,10, 1569 2,6,3, 1570 1,5,28, 1571 3,7,43, 1572 8,8,39, 1573 8,8,39, 1574 1,4,2, 1575 4,8,34, 1576 5,8,11, 1577 2,8,67, 1578 1,2,23, 1579 1,2,23, 1580 7,2,71, 1581 2,7,59, 1582 1,7,79, 1583 1,6,4, 1584 2,9,60, 1585 3,1,58, 1586 3,3,38, 1587 7,8,37, 1588 9,3,55, 1589 6,9,24, 1590 4,1,47, 1591 8,8,39, 1592 6,9,24, 1593 6,6,66, 1594 8,4,77, 1595 5,6,41, 1596 5,6,41, 1597 1,4,2, 1598 2,8,67, 1599 9,1,8, 1600 7,9,31, 1601 1,9,81, 1602 3,7,43, 1603 7,2,71, 1604 8,2,19, 1605 8,2,19, 1606 }; 1607 1608 const int magicSquare9_filled50_2[] = { 1609 9,50, 1610 2,1,27, 1611 8,8,39, 1612 6,3,21, 1613 7,6,70, 1614 8,5,10, 1615 2,9,60, 1616 7,7,42, 1617 4,5,14, 1618 8,1,68, 1619 2,3,9, 1620 3,2,50, 1621 8,1,68, 1622 8,9,22, 1623 9,5,26, 1624 7,2,71, 1625 2,8,67, 1626 2,1,27, 1627 5,6,41, 1628 3,2,50, 1629 9,8,30, 1630 4,1,47, 1631 7,9,31, 1632 7,1,29, 1633 4,4,12, 1634 2,3,9, 1635 4,2,62, 1636 4,9,63, 1637 9,9,45, 1638 8,8,39, 1639 2,5,76, 1640 1,4,2, 1641 1,9,81, 1642 4,5,14, 1643 3,4,40, 1644 4,3,64, 1645 2,8,67, 1646 1,9,81, 1647 7,8,37, 1648 7,8,37, 1649 9,6,69, 1650 9,1,8, 1651 5,1,54, 1652 9,2,49, 1653 1,7,79, 1654 1,9,81, 1655 9,8,30, 1656 3,7,43, 1657 5,4,74, 1658 3,8,18, 1659 7,4,73, 1660 }; 1661 1662 const int magicSquare9_filled50_3[] = { 1663 9,50, 1664 8,7,33, 1665 9,8,30, 1666 4,4,12, 1667 4,1,47, 1668 3,3,38, 1669 5,9,7, 1670 1,9,81, 1671 9,7,52, 1672 9,7,52, 1673 2,7,59, 1674 7,1,29, 1675 5,9,7, 1676 8,7,33, 1677 2,8,67, 1678 3,6,6, 1679 2,1,27, 1680 3,9,36, 1681 9,6,69, 1682 3,3,38, 1683 5,3,75, 1684 4,9,63, 1685 2,4,51, 1686 6,2,65, 1687 2,5,76, 1688 8,1,68, 1689 9,5,26, 1690 2,2,17, 1691 3,7,43, 1692 9,2,49, 1693 3,2,50, 1694 7,2,71, 1695 3,1,58, 1696 1,2,23, 1697 6,4,5, 1698 4,1,47, 1699 6,5,56, 1700 7,8,37, 1701 9,2,49, 1702 9,8,30, 1703 4,5,14, 1704 8,4,77, 1705 8,7,33, 1706 5,8,11, 1707 2,4,51, 1708 9,4,35, 1709 4,6,53, 1710 4,6,53, 1711 6,4,5, 1712 5,1,54, 1713 7,6,70, 1714 }; 1715 1716 const int magicSquare9_filled50_4[] = { 1717 9,50, 1718 8,2,19, 1719 2,6,3, 1720 9,8,30, 1721 5,6,41, 1722 4,8,34, 1723 8,9,22, 1724 9,6,69, 1725 5,5,78, 1726 4,6,53, 1727 6,3,21, 1728 8,7,33, 1729 7,2,71, 1730 1,3,48, 1731 3,5,80, 1732 1,8,72, 1733 9,9,45, 1734 9,8,30, 1735 3,6,6, 1736 6,7,25, 1737 9,7,52, 1738 3,5,80, 1739 6,3,21, 1740 2,1,27, 1741 5,3,75, 1742 5,8,11, 1743 4,1,47, 1744 6,1,46, 1745 9,6,69, 1746 1,2,23, 1747 9,2,49, 1748 7,8,37, 1749 1,4,2, 1750 4,3,64, 1751 7,7,42, 1752 7,6,70, 1753 4,9,63, 1754 2,9,60, 1755 9,1,8, 1756 8,4,77, 1757 1,1,32, 1758 3,4,40, 1759 1,6,4, 1760 2,9,60, 1761 2,3,9, 1762 8,8,39, 1763 2,4,51, 1764 4,2,62, 1765 7,7,42, 1766 2,5,76, 1767 4,8,34, 1768 }; 1769 1770 const int magicSquare9_filled50_5[] = { 1771 9,50, 1772 8,7,33, 1773 7,7,42, 1774 5,7,16, 1775 5,1,54, 1776 8,6,57, 1777 1,1,32, 1778 9,8,30, 1779 4,2,62, 1780 5,6,41, 1781 2,1,27, 1782 2,3,9, 1783 4,6,53, 1784 2,9,60, 1785 3,3,38, 1786 4,5,14, 1787 1,9,81, 1788 9,5,26, 1789 7,2,71, 1790 9,2,49, 1791 2,8,67, 1792 7,9,31, 1793 6,5,56, 1794 5,1,54, 1795 4,7,20, 1796 4,5,14, 1797 8,5,10, 1798 5,9,7, 1799 1,6,4, 1800 8,2,19, 1801 8,9,22, 1802 6,6,66, 1803 9,3,55, 1804 1,6,4, 1805 5,1,54, 1806 5,6,41, 1807 8,3,44, 1808 4,2,62, 1809 7,8,37, 1810 2,8,67, 1811 4,5,14, 1812 3,2,50, 1813 1,7,79, 1814 1,8,72, 1815 3,7,43, 1816 9,8,30, 1817 6,3,21, 1818 4,5,14, 1819 6,2,65, 1820 1,1,32, 1821 2,6,3, 1822 }; 1823 1824 const int magicSquare9_filled50_6[] = { 1825 9,50, 1826 4,7,20, 1827 6,7,25, 1828 9,1,8, 1829 4,1,47, 1830 8,7,33, 1831 4,8,34, 1832 6,4,5, 1833 5,4,74, 1834 9,5,26, 1835 1,9,81, 1836 1,7,79, 1837 9,4,35, 1838 2,5,76, 1839 5,1,54, 1840 3,5,80, 1841 4,7,20, 1842 9,7,52, 1843 2,8,67, 1844 7,3,15, 1845 7,3,15, 1846 7,1,29, 1847 1,1,32, 1848 2,3,9, 1849 5,1,54, 1850 5,5,78, 1851 7,5,1, 1852 9,5,26, 1853 6,2,65, 1854 7,8,37, 1855 9,1,8, 1856 1,1,32, 1857 5,1,54, 1858 7,4,73, 1859 8,2,19, 1860 5,3,75, 1861 4,2,62, 1862 1,2,23, 1863 3,2,50, 1864 2,5,76, 1865 1,6,4, 1866 9,5,26, 1867 8,9,22, 1868 9,2,49, 1869 8,5,10, 1870 9,5,26, 1871 5,1,54, 1872 5,7,16, 1873 8,2,19, 1874 1,4,2, 1875 3,3,38, 1876 }; 1877 1878 const int magicSquare9_filled50_7[] = { 1879 9,50, 1880 6,3,21, 1881 7,6,70, 1882 3,4,40, 1883 5,2,13, 1884 6,6,66, 1885 7,8,37, 1886 8,6,57, 1887 8,1,68, 1888 2,9,60, 1889 4,8,34, 1890 7,3,15, 1891 2,3,9, 1892 4,3,64, 1893 2,2,17, 1894 7,2,71, 1895 3,3,38, 1896 4,9,63, 1897 8,4,77, 1898 2,4,51, 1899 3,5,80, 1900 7,1,29, 1901 3,5,80, 1902 6,1,46, 1903 4,7,20, 1904 1,5,28, 1905 3,5,80, 1906 8,4,77, 1907 7,2,71, 1908 6,8,61, 1909 3,3,38, 1910 8,4,77, 1911 3,9,36, 1912 1,2,23, 1913 4,2,62, 1914 3,6,6, 1915 4,7,20, 1916 4,7,20, 1917 9,9,45, 1918 5,1,54, 1919 4,3,64, 1920 6,6,66, 1921 8,2,19, 1922 8,5,10, 1923 3,2,50, 1924 2,4,51, 1925 3,7,43, 1926 5,5,78, 1927 4,5,14, 1928 4,7,20, 1929 5,4,74, 1930 }; 1931 1932 const int magicSquare9_filled50_8[] = { 1933 9,50, 1934 2,8,67, 1935 1,3,48, 1936 5,8,11, 1937 3,8,18, 1938 8,6,57, 1939 1,2,23, 1940 1,8,72, 1941 3,8,18, 1942 2,4,51, 1943 7,1,29, 1944 5,9,7, 1945 5,9,7, 1946 5,8,11, 1947 4,6,53, 1948 4,8,34, 1949 1,3,48, 1950 5,8,11, 1951 5,7,16, 1952 6,5,56, 1953 5,3,75, 1954 9,4,35, 1955 4,9,63, 1956 9,5,26, 1957 5,8,11, 1958 8,2,19, 1959 6,3,21, 1960 9,1,8, 1961 2,4,51, 1962 7,3,15, 1963 9,1,8, 1964 9,7,52, 1965 1,2,23, 1966 6,5,56, 1967 8,2,19, 1968 8,2,19, 1969 2,7,59, 1970 5,6,41, 1971 6,4,5, 1972 8,8,39, 1973 3,6,6, 1974 7,8,37, 1975 6,6,66, 1976 7,5,1, 1977 7,2,71, 1978 5,5,78, 1979 2,2,17, 1980 2,9,60, 1981 3,7,43, 1982 2,2,17, 1983 7,9,31, 1984 }; 1985 1986 const int magicSquare9_filled50_9[] = { 1987 9,50, 1988 3,8,18, 1989 6,7,25, 1990 2,9,60, 1991 8,9,22, 1992 7,8,37, 1993 3,3,38, 1994 5,6,41, 1995 8,2,19, 1996 8,4,77, 1997 3,4,40, 1998 8,2,19, 1999 5,9,7, 2000 8,8,39, 2001 5,9,7, 2002 7,9,31, 2003 9,9,45, 2004 5,5,78, 2005 4,7,20, 2006 3,9,36, 2007 4,9,63, 2008 8,5,10, 2009 9,3,55, 2010 8,6,57, 2011 2,7,59, 2012 9,2,49, 2013 1,7,79, 2014 1,3,48, 2015 4,8,34, 2016 8,6,57, 2017 7,5,1, 2018 5,6,41, 2019 2,1,27, 2020 9,3,55, 2021 5,2,13, 2022 3,6,6, 2023 8,1,68, 2024 8,8,39, 2025 1,7,79, 2026 2,2,17, 2027 4,1,47, 2028 1,2,23, 2029 5,1,54, 2030 2,6,3, 2031 8,1,68, 2032 3,5,80, 2033 3,5,80, 2034 9,3,55, 2035 3,8,18, 2036 5,7,16, 2037 7,5,1, 2038 }; 2039 2040 const int *specs[] = { 2041 magicSquare5_filled10_1, //0 2042 magicSquare5_filled10_2, //1 2043 magicSquare5_filled10_3, //2 2044 magicSquare5_filled10_4, //3 2045 magicSquare5_filled10_5, //4 2046 magicSquare5_filled10_6, //5 2047 magicSquare5_filled10_7, //6 2048 magicSquare5_filled10_8, //7 2049 magicSquare5_filled10_9, //8 2050 magicSquare5_filled10_10, //9 2051 magicSquare5_filled10_11, //10 2052 magicSquare5_filled10_12, //11 2053 magicSquare5_filled10_13, //12 2054 magicSquare5_filled10_14, //13 2055 magicSquare5_filled10_15, //14 2056 magicSquare5_filled10_16, //15 2057 magicSquare5_filled10_17, //16 2058 magicSquare5_filled10_18, //17 2059 magicSquare5_filled10_19, //18 2060 magicSquare5_filled10_20, //19 2061 magicSquare5_filled11_3_1, //20 2062 magicSquare5_filled11_5_1, //21 2063 magicSquare5_filled11_5_2, //22 2064 magicSquare5_filled11_5_3, //23 2065 magicSquare5_filled12_10_1, //24 2066 magicSquare5_filled12_1_1, //25 2067 magicSquare5_filled12_1_2, //26 2068 magicSquare5_filled12_1_3, //27 2069 magicSquare5_filled12_2_1, //28 2070 magicSquare5_filled12_2_2, //29 2071 magicSquare5_filled12_2_3, //30 2072 magicSquare5_filled12_3_1, //31 2073 magicSquare5_filled12_3_2, //32 2074 magicSquare9_filled10_1, //33 2075 magicSquare9_filled10_2, //34 2076 magicSquare9_filled10_3, //35 2077 magicSquare9_filled10_4, //36 2078 magicSquare9_filled10_5, //37 2079 magicSquare9_filled10_6, //38 2080 magicSquare9_filled10_7, //39 2081 magicSquare9_filled10_8, //40 2082 magicSquare9_filled10_9, //41 2083 magicSquare9_filled10_10, //42 2084 magicSquare9_filled10_11, //43 2085 magicSquare9_filled10_12, //44 2086 magicSquare9_filled10_13, //45 2087 magicSquare9_filled10_14, //46 2088 magicSquare9_filled10_15, //47 2089 magicSquare9_filled10_16, //48 2090 magicSquare9_filled10_17, //49 2091 magicSquare9_filled10_18, //50 2092 magicSquare9_filled10_19, //51 2093 magicSquare9_filled10_20, //52 2094 magicSquare9_filled50_1, //53 2095 magicSquare9_filled50_2, //54 2096 magicSquare9_filled50_3, //55 2097 magicSquare9_filled50_4, //56 2098 magicSquare9_filled50_5, //57 2099 magicSquare9_filled50_6, //58 2100 magicSquare9_filled50_7, //59 2101 magicSquare9_filled50_8, //60 2102 magicSquare9_filled50_9, //61 2103 magicSquare9_filled50_10, //62 2104 magicSquare9_filled50_11, //63 2105 magicSquare9_filled50_12, //64 2106 magicSquare9_filled50_13, //65 2107 magicSquare9_filled50_14, //66 2108 magicSquare9_filled50_15, //67 2109 magicSquare9_filled50_16, //68 2110 magicSquare9_filled50_17, //69 2111 magicSquare9_filled50_18, //70 2112 magicSquare9_filled50_19, //71 2113 magicSquare9_filled50_20 //72 2114 }; 2115 2116 const unsigned n_examples = sizeof(specs)/sizeof(int*); 2117 //@} 2118 2119} 2120 2121// STATISTICS: example-any 2122