Spiral matrix: Difference between revisions
Content added Content deleted
m (→Python :: Functional Solutions: Tidied) |
(Added solution for Action!) |
||
Line 186: | Line 186: | ||
13 22 21 20 7 |
13 22 21 20 7 |
||
12 11 10 9 8</pre> |
12 11 10 9 8</pre> |
||
=={{header|Action!}}== |
|||
<lang Action!>DEFINE MAX_SIZE="10" |
|||
DEFINE MAX_MATRIX_SIZE="100" |
|||
INT FUNC Index(BYTE size,x,y) |
|||
RETURN (x+y*size) |
|||
PROC PrintMatrix(BYTE ARRAY a BYTE size) |
|||
BYTE i,j,v |
|||
FOR j=0 TO size-1 |
|||
DO |
|||
FOR i=0 TO size-1 |
|||
DO |
|||
v=a(Index(size,i,j)) |
|||
IF v<10 THEN |
|||
Print(" ") |
|||
ELSE |
|||
Print(" ") |
|||
FI |
|||
PrintB(v) |
|||
OD |
|||
PutE() |
|||
OD |
|||
RETURN |
|||
PROC FillMatrix(BYTE ARRAY a BYTE size) |
|||
INT lev,maxLev,dist,maxDist,v |
|||
maxLev=size/2 |
|||
IF (size&1)=0 THEN |
|||
maxLev==-1 |
|||
FI |
|||
maxDist=size-1 |
|||
v=1 |
|||
FOR lev=0 TO maxLev |
|||
DO |
|||
FOR dist=0 TO maxDist |
|||
DO |
|||
a(Index(size,lev+dist,lev))=v v==+1 |
|||
OD |
|||
FOR dist=0 TO maxDist-1 |
|||
DO |
|||
a(Index(size,size-1-lev,lev+dist+1))=v v==+1 |
|||
OD |
|||
FOR dist=0 TO maxDist-1 |
|||
DO |
|||
a(Index(size,size-2-lev-dist,size-1-lev))=v v==+1 |
|||
OD |
|||
FOR dist=0 TO maxDist-2 |
|||
DO |
|||
a(Index(size,lev,size-2-lev-dist))=v v==+1 |
|||
OD |
|||
maxDist==-2 |
|||
OD |
|||
RETURN |
|||
PROC Test(BYTE size) |
|||
BYTE ARRAY mat(MAX_MATRIX_SIZE) |
|||
PrintF("Matrix size: %B%E",size) |
|||
FillMatrix(mat,size) |
|||
PrintMatrix(mat,size) |
|||
PutE() |
|||
RETURN |
|||
PROC Main() |
|||
Test(5) |
|||
Test(6) |
|||
RETURN</lang> |
|||
{{out}} |
|||
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Spiral_matrix.png Screenshot from Atari 8-bit computer] |
|||
<pre> |
|||
Matrix size: 5 |
|||
1 2 3 4 5 |
|||
16 17 18 19 6 |
|||
15 24 25 20 7 |
|||
14 23 22 21 8 |
|||
13 12 11 10 9 |
|||
Matrix size: 6 |
|||
1 2 3 4 5 6 |
|||
20 21 22 23 24 7 |
|||
19 32 33 34 25 8 |
|||
18 31 36 35 26 9 |
|||
17 30 29 28 27 10 |
|||
16 15 14 13 12 11 |
|||
</pre> |
|||
=={{header|Ada}}== |
=={{header|Ada}}== |