#include /* * (finds magic 4x4 squares with numbers * from 1 to 16) * * a11 a12 a13 a14 * a21 a22 a23 a24 * a31 a32 a33 a34 * a41 a42 a43 a44 */ int main() { int a11, a12, a13, a14, a21, a22, a23, a24, a31, a32, a33, a34, a41, a42, a43, a44; for (a11 = 1; a11 <= 16; a11++) { for (a12 = 1; a12 <= 16; a12++) { if (a12 != a11) { //fprintf(stderr, "%i - %i\n", a11, a12); for (a13 = 1; a13 <= 16; a13++) { if (a13 != a11 && a13 != a12) { a14 = 34 - (a11 + a12 + a13); if ( a14 > 0 && a14 <= 16 && a14 != a11 && a14 != a12 && a14 != a13 ) { for (a21 = 1; a21 <= 16; a21++) { if (a21 != a11 && a21 != a12 && a21 != a13) { for (a22 = 1; a22 <= 16; a22++) { if (a22 != a11 && a22 != a12 && a22 != a13 && a22 != a21) { for (a23 = 1; a23 <= 16; a23++) { if (a23 != a11 && a23 != a12 && a23 != a13 && a23 != a21 && a23 != a22) { a24 = 34 - (a21 + a22 + a23); if (a24 > 0 && a24 <= 16 && a24 != a11 && a24 != a12 && a24 != a13 && a24 != a21 && a24 != a22 && a24 != a23 ) { for (a31 = 1; a31 <= 16; a31++) { if (a31 != a11 && a31 != a12 && a31 != a13 && a31 != a21 && a31 != a22 && a31 != a23) { a41 = 34 - (a11 + a21 + a31); if (a41 > 0 && a41 <= 16 && a41 != a11 && a41 != a12 && a41 != a13 && a41 != a21 && a41 != a22 && a41 != a23 && a41 != a31 && a41 != a32 && a41 != a33 ) { for (a32 = 1; a32 <= 16; a32++) { if (a32 != a11 && a32 != a12 && a32 != a13 && a32 != a21 && a32 != a22 && a32 != a23 && a32 != a31) { a42 = 34 - (a12 + a22 + a32); if (a42 > 0 && a42 <= 16 && a42 != a11 && a42 != a12 && a42 != a13 && a42 != a21 && a42 != a22 && a42 != a23 && a42 != a31 && a42 != a32 && a42 != a33 ) { for (a33 = 1; a33 <= 16; a33++) { if (a33 != a11 && a33 != a12 && a33 != a13 && a33 != a21 && a33 != a22 && a33 != a23 && a33 != a31 && a33 != a32) { a34 = 34 - (a31 + a32 + a33); a43 = 34 - (a13 + a23 + a33); a44 = 34 - (a41 + a42 + a43); if (a44 == 34 - (a14 + a24 + a34) && a34 > 0 && a34 <= 16 && a43 > 0 && a43 <= 16 && a44 > 0 && a44 <= 16 && a14 != a21 && a14 != a22 && a14 != a23 && a14 != a24 && a14 != a31 && a14 != a32 && a14 != a33 && a14 != a34 && a14 != a41 && a14 != a42 && a14 != a43 && a14 != a44 && a24 != a31 && a24 != a32 && a24 != a33 && a24 != a34 && a24 != a41 && a24 != a42 && a24 != a43 && a24 != a44 && a34 != a11 && a34 != a12 && a34 != a13 && a34 != a21 && a34 != a22 && a34 != a23 && a34 != a31 && a34 != a32 && a34 != a33 && a34 != a41 && a34 != a42 && a34 != a43 && a34 != a44 && a41 != a42 && a41 != a43 && a41 != a44 && a42 != a43 && a42 != a44 && a43 != a11 && a43 != a12 && a43 != a13 && a43 != a21 && a43 != a22 && a43 != a23 && a43 != a31 && a43 != a32 && a43 != a33 && a43 != a44 && a44 != a11 && a44 != a12 && a44 != a13 && a44 != a21 && a44 != a22 && a44 != a23 && a44 != a31 && a44 != a32 && a44 != a33 ) { /* it's rows+columns magic */ /*printf("%i\t%i\t%i\t%i\n", a11, a12, a13, a14); printf("%i\t%i\t%i\t%i\n", a21, a22, a23, a24); printf("%i\t%i\t%i\t%i\n", a31, a32, a33, a34); printf("%i\t%i\t%i\t%i\n", a41, a42, a43, a44); printf("\n");*/ if (a11 + a22 + a33 + a44 == 34 && a14 + a23 + a32 + a41 == 34 && a11 + a12 + a21 + a22 == 34 && a13 + a14 + a23 + a24 == 34 && a31 + a32 + a41 + a42 == 34 && a33 + a34 + a43 + a44 == 34) { /* it's rows+columns+diagonals+quadrants magic */ printf("%i\t%i\t%i\t%i\n", a11, a12, a13, a14); printf("%i\t%i\t%i\t%i\n", a21, a22, a23, a24); printf("%i\t%i\t%i\t%i\n", a31, a32, a33, a34); printf("%i\t%i\t%i\t%i\n", a41, a42, a43, a44); printf("\n"); } } }}}}}}}}}}}}}}}}}}}}} return 0; }