#include <string.h> #include <stdio.h> // // // N0KNW WXNW // No,:lxXW NKKOONWWW // XKXKKk:...;x0XXXXXXXXXXXXXXXXXXXXXKXXK0O0KX0OKKK0KW // WK0Kkxkd;...'cdkOOOOOOOO0XNXOOOOOOOOOkkOKNNOxkOk0K0N // WK0k;',;c:'...'cdxkkkkkxxKW0dxkkkkkxxx0NNXOxxxxdk00N // WK0O:'..',;,'.';;:oxkkkxxKW0xkkkkkxoxKNX0xdxO00dkK0N // WK00dl,....',;,,'.';oxkxxKW0xkkkxkxod00xdkOXNKkokK0N // WK0Oool;'...',;c;...';ldxKW0xxxxOXOddddx0XNX0xddxkON // WK0O:.',,,'.''.';;,'...,c0W0dx0XXOxddldKX0kddkOOkkON // WKK0o:'..',,:c,..';;,'..;dOxxKXOxdxOkodkxxk0XNXkk00N // WKK0olc;'..':lc;'...',:cdxddxkxdx0K0xolokXNX0OxokK0N // WKKO;.';c:;',,.,;;;',cx0X0xxodx0K0xdxxld00Oxdxkdk00N // W0KKl'..';ccl:...';coOXXOkkdldOOxdk00xodxdxOKXOokK0N // W0KXOdc,...':;',,'':kKKxok0kddddOKKKOxolx0XNXOkk0K0N // W000dddc,...''.';,;ldxxkKK0xoxOK0kdk0Ood0XKOxxO0000N // W00k;....'',,,'...;lldOKOddlcoxxddk0KkodkxddxOOxxO0N // W00Odl;....:c;::;,:dkK0ddO0kooox0XX0kxdoxO0XNXkdx00N // W0KOol:,''.,;..,;:odxxxO0kxdlodO0OxdxdodKNX0Oxxxk00N // W0K0oc'..''';;'..'cooO0kdx0OxddddxkO0xlxOxxxkkxdk00N // W0K0ddl;'...,:;'',cx0OdxO0Oxodxk0KK0kdodxOKXKOxdkO0N // W0K0o;'''....;,..,cdddkOxdxxoldOOxddxooOXK0OxxkxkO0N // N0K0xo:,.....;;'';ldkOxdk0KOxdodkO00kooxxdxkkdxxxO0N // N0K0xdc,'...',;,.;lodxk0Okxoldk000OxddxO0KKOkxkxxO0N // N0K0xxdl:;'..'::,:ooxkxdxkOxlodxdxkdlokOkxdxkkkxxO0N // N0K0xxkkd:;,'',;;cooxxkkkdoclkOOOOkdooxkOkdxkkkxxO0N // N000Okkxdc,...',:lodxxxxxddllkxxxdlok0K0OxxxxkkO000N // WNXKK0OOko;,'''codxkkkxodOxoxxxkxololcloxkOO00KKXN // WNXKKkc;'';codxxxkxlclcc:;;::,'..,cxO0KKXNW // WNKOxddddk000Odc::;'',;,'',;cd0KXNW // WKOkO0OOOkxxokKxodkkdl:;,';oONW // N0kO0KXXXXKK0OOKNK00KKKKXKOxoc:coONW // WK0XW WNXKKKKKXXW WX0kx0W // WWW // // // static int tbl[64]; #define p(i, j) ((i)*8+(j)) void z (int i, int j, int k, int lvl) { int dk, di; if (lvl < 1) return; di = 1 << (lvl - 1); dk = di * di; if (lvl == 1) { tbl[p(i, j)] = k; tbl[p(i, j+1)] = k + 1; tbl[p(i+1, j)] = k + 2; tbl[p(i+1, j+1)] = k + 3; } else { z (i, j, k, lvl - 1); z (i, j+di, k+dk, lvl - 1); z (i+di, j, k+2*dk, lvl - 1); z (i+di, j+di, k+3*dk, lvl - 1); } } void Z (int lvl) { z(0, 0, 0, lvl); } int main () { int i, j; memset(tbl, 0, sizeof(int) * 8 * 8); Z (3); for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) printf("%3d ", tbl[p(i, j)]); printf("\n"); } }