Conway's Game of Life: Difference between revisions
Content added Content deleted
m (→{{header|OCTAVE}}: Fixed language name.) |
No edit summary |
||
Line 1,211: | Line 1,211: | ||
=={{header|ALGOL 68}}== |
=={{header|ALGOL 68}}== |
||
See [[Conway's Game of Life/ALGOL 68]] |
See [[Conway's Game of Life/ALGOL 68]] |
||
=={{header|Amazing Hopper}}== |
|||
<p>El programa genera el algoritmo en modo texto.</p> |
|||
<p>Adaptado del programa "Conway's Game of Life" de Vishal Nagda, en Hithub</p> |
|||
<p>https://github.com/vishalnagda1/CONWAYs-Game-of-Life-C/blob/master/game_of_life.c</p> |
|||
<syntaxhighlight lang="text"> |
|||
#include <jambo.h> |
|||
#define SIZER 90 |
|||
#define SIZEC 120 |
|||
Main |
|||
Dim (SIZER, SIZEC) as zeros 'grid, neighbour_count' |
|||
Dim (SIZER, SIZEC) as fill '" ",disp grid' |
|||
c=0, Let( c := Utf8(Chr(254))) |
|||
moi=0, moj=0, poi=0, poj=0 |
|||
m={} |
|||
Set ' 0,1,1 ' Apnd row 'm' |
|||
Set ' 1,1,0 ' Apnd row 'm' |
|||
Set ' 0,1,0 ' Apnd row 'm' |
|||
[44:46, 59:61] Set 'm', Put 'grid' |
|||
Clr all marks |
|||
i=0, j=0, steps=0 |
|||
Tok sep '""' |
|||
Locate (1,1) |
|||
Loop |
|||
i=1 |
|||
Iterator ( ++i, Less equal(i,SIZER),\ |
|||
j=1, Iterator ( ++j, Less equal(j,SIZEC), \ |
|||
Set 'i,j', Gosub 'Count NBR', [i,j], Put 'neighbour_count' ) ) |
|||
i=1 |
|||
Loop if( Less equal(i,SIZER) ) |
|||
j=1 |
|||
Loop if( Less equal(j,SIZEC) ) |
|||
[i,j] |
|||
If ( Get 'grid' ) //Greater equal (Get 'grid', 1) ) |
|||
Get 'neighbour_count' |
|||
When ( Out of range including '1,4' ) { |
|||
Set '0," "', Put 'disp grid', Put 'grid' |
|||
} |
|||
Else |
|||
Get 'neighbour_count' |
|||
When ( Is equal to '3' ) { |
|||
Set '1,c', Put 'disp grid', Put 'grid' |
|||
} |
|||
End If |
|||
++j |
|||
Back |
|||
++i |
|||
Back |
|||
Clr all marks |
|||
Print table 'disp grid' |
|||
Break if ( Key pressed ) |
|||
++steps |
|||
Back |
|||
Pause |
|||
End |
|||
Subrutines |
|||
Define 'Count NBR, i, j' |
|||
n_count = 0 |
|||
When ( Must be( Minus one 'i' ---Backup to 'moi'---, Minus one 'j' ---Backup to 'moj'--- ) ) { |
|||
When ( [moi,moj]Get 'grid' ) { |
|||
++n_count |
|||
} |
|||
} |
|||
Plus one 'j', Move to 'poj' |
|||
When ( moi ) { |
|||
When ( [ moi, j ] Get 'grid' ) { |
|||
++n_count |
|||
} |
|||
When ( Less equal( poj, SIZEC )) { |
|||
When ( [ moi, poj] Get 'grid' ) { |
|||
++n_count |
|||
} |
|||
} |
|||
} |
|||
When ( moj ) { |
|||
When( [i, moj] Get 'grid' ) { |
|||
++n_count |
|||
} |
|||
} |
|||
When ( Less equal ( poj, SIZEC ) ){ |
|||
When( [i, poj] Get 'grid' ) { |
|||
++n_count |
|||
} |
|||
} |
|||
When ( Less equal (Plus one 'i' ---Backup to 'poi'---, SIZER ) ) { |
|||
When ( [ poi, j] Get 'grid' ) { |
|||
++n_count |
|||
} |
|||
When ( Less equal ( poj, SIZEC) ) { |
|||
When ( [poi, poj] Get 'grid' ) { |
|||
++n_count |
|||
} |
|||
} |
|||
When ( moj ){ |
|||
When ([poi, moj] Get 'grid' ){ |
|||
++n_count |
|||
} |
|||
} |
|||
} |
|||
Return 'n_count' |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
La llamada se realiza desde terminal, con el programa "rxvt" de Linux, para adaptar la terminal a los pixeles y dimensiones adecuados. |
|||
Llamada: |
|||
rxvt -g 270x100 -fn "xft:FantasqueSansMono-Regular:pixelsize=3" -e hopper jm/gamelife.jambo |
|||
</pre> |
|||
<pre> |
|||
[[File:Captura_de_pantalla_de_2022-10-07_04-37-57.png]] |
|||
</pre> |
|||
=={{header|APL}}== |
=={{header|APL}}== |