#include <stdio.h>
int f( int n, int a[ ] [ n] , int * b) { static d, j, k, s, f, i, m; for ( m= n- 1 ; i< n* n; i++, s++ ) s== m? d++, d%= 4 , s= 0 , f++, f% 3 == 0 ? m--, f= 1 : m: m, b[ i] =! d? a[ j] [ k++ ] : d== 1 ? a[ j++ ] [ k] : d== 2 ? a[ j] [ k-- ] : a[ j-- ] [ k] ; }
/* The spiral function from RosettaCode. */
int spiral( int w, int h, int x, int y) {
return y ? w + spiral( h - 1 , w, y - 1 , w - x - 1 ) : x;
}
int main( void ) {
#define N 5
/* Generation of the input array. */
#if N == 0
int a[ 1 ] [ 1 ] ;
#else
int a[ N] [ N] ;
for ( size_t i = 0 ; i < N; i++ ) {
for ( size_t j = 0 ; j < N; j++ ) {
a[ i] [ j] = spiral( N, N, j, i) + 1 ;
}
}
#endif
/* Declaration of the output array. */
#if N != 0
int b[ N* N] ;
#else
int b[ 1 ] ;
#endif
/* Process. */
f( N, a, b) ;
/* Print the result. */
#if N != 0
for ( size_t i = 0 ; i < N* N; i++ )
#endif
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgZihpbnQgbixpbnQgYVtdW25dLGludCpiKXtzdGF0aWMgZCxqLGsscyxmLGksbTtmb3IobT1uLTE7aTxuKm47aSsrLHMrKylzPT1tP2QrKyxkJT00LHM9MCxmKyssZiUzPT0wP20tLSxmPTE6bTptLGJbaV09IWQ/YVtqXVtrKytdOmQ9PTE/YVtqKytdW2tdOmQ9PTI/YVtqXVtrLS1dOmFbai0tXVtrXTt9CgovKiBUaGUgc3BpcmFsIGZ1bmN0aW9uIGZyb20gUm9zZXR0YUNvZGUuICovCmludCBzcGlyYWwoaW50IHcsIGludCBoLCBpbnQgeCwgaW50IHkpIHsKCXJldHVybiB5ID8gdyArIHNwaXJhbChoIC0gMSwgdywgeSAtIDEsIHcgLSB4IC0gMSkgOiB4Owp9CiAKaW50IG1haW4odm9pZCkgewoJI2RlZmluZSBOIDUKIAoJLyogR2VuZXJhdGlvbiBvZiB0aGUgaW5wdXQgYXJyYXkuICovCQoJI2lmIE4gPT0gMAoJCWludCBhWzFdWzFdOwoJI2Vsc2UKCQlpbnQgYVtOXVtOXTsKIAoJCWZvciAoc2l6ZV90IGkgPSAwOyBpIDwgTjsgaSsrKSB7CgkJCWZvciAoc2l6ZV90IGogPSAwOyBqIDwgTjsgaisrKSB7CgkJCQlhW2ldW2pdID0gc3BpcmFsKE4sIE4sIGosIGkpICsgMTsKCQkJCXByaW50ZigiJTRkIiwgYVtpXVtqXSk7CgkJCX0KIAoJCQlwdXRjaGFyKCdcbicpOwoJCX0KCSNlbmRpZgogCgkvKiBEZWNsYXJhdGlvbiBvZiB0aGUgb3V0cHV0IGFycmF5LiAqLwoJI2lmIE4gIT0gMAoJCWludCBiW04qTl07CgkjZWxzZQoJCWludCBiWzFdOwoJI2VuZGlmCiAKCS8qIFByb2Nlc3MuICovCglmKE4sIGEsIGIpOwogCgkvKiBQcmludCB0aGUgcmVzdWx0LiAqLwoJI2lmIE4gIT0gMAoJCXB1dGNoYXIoJ1xuJyk7CgkJZm9yIChzaXplX3QgaSA9IDA7IGkgPCBOKk47IGkrKykKCQkJcHJpbnRmKCIlZCAiLCBiW2ldKTsKCSNlbmRpZgp9Cg==