Conway's Game of Life: Difference between revisions

m
Line 3,575:
 
=={{header|Easyprog.online}}==
[https://easyprog.online/ide/run.html?code=subr%20init%0Afor%20i%20range%20len%20f%5B%5D%0Aif%20randomf%20%3C%200.3%0Af%5Bi%5D%20%3D%201%0Aelse%0Af%5Bi%5D%20%3D%200%0A.%0A.%0Atimer%200%0A.%0Asubr%20show%0Acolor%20999%0Amove%200%200%0Arect%20100%20100%0Acolor%20000%0Afor%20r%20range%2050%0Afor%20c%20range%2050%0Aif%20f%5Br%20%2A%2050%20%2B%20c%5D%20%3D%201%0Amove%20c%20%2A%202%20r%20%2A%202%0Arect%201.8%201.8%0A.%0A.%0A.%0A.%0Asubr%20update%0Aswap%20f%5B%5D%20p%5B%5D%0Afor%20i%20range%20len%20f%5B%5D%0A%23%20elements%20above%20and%20below%0As%20%3D%200%0Aif%20i%20%3E%3D%2050%0As%20%2B%3D%20p%5Bi%20-%2050%5D%0A.%0Aif%20i%20%3C%202450%0As%20%2B%3D%20p%5Bi%20%2B%2050%5D%0A.%0Ah%20%3D%20i%20mod%2050%0Aif%20h%20%3C%3E%200%0A%23%20not%20left%20border%20-%3E%20left%20elements%0As%20%2B%3D%20p%5Bi%20-%201%5D%0Aif%20i%20%3E%3D%2050%0As%20%2B%3D%20p%5Bi%20-%2051%5D%0A.%0Aif%20i%20%3C%202450%0As%20%2B%3D%20p%5Bi%20%2B%2049%5D%0A.%0A.%0Aif%20h%20%3C%3E%2049%0A%23%20not%20right%20border%20-%3E%20right%20elements%0As%20%2B%3D%20p%5Bi%20%2B%201%5D%0Aif%20i%20%3E%3D%2050%0As%20%2B%3D%20p%5Bi%20-%2049%5D%0A.%0Aif%20i%20%3C%202450%0As%20%2B%3D%20p%5Bi%20%2B%2051%5D%0A.%0A.%0Aif%20s%20%3C%3D%201%20or%20s%20%3E%3D%204%0Af%5Bi%5D%20%3D%200%0Aelif%20s%20%3D%203%0Af%5Bi%5D%20%3D%201%0Aelse%0Af%5Bi%5D%20%3D%20p%5Bi%5D%0A.%0A.%0A.%0Aon%20timer%0Acall%20update%0Acall%20show%0Atimer%200.5%0A.%0Aon%20mouse_down%0Ac%20%3D%20round%20%28mouse_x%20/%202%20-%200.5%29%0Ar%20%3D%20round%20%28mouse_y%20/%202%20-%200.5%29%0Ai%20%3D%20r%20%2A%2050%20%2B%20c%0Af%5Bi%5D%20%3D%201%20-%20f%5Bi%5D%0Acall%20show%0Atimer%203%0A.%0Alen%20f%5B%5D%2050%20%2A%2050%0Alen%20p%5B%5D%2050%20%2A%2050%0Acall%20init Run it]
 
[https://easyprog.online/ide/run.html?code=subr%20init%0Afor%20i%20range%20len%20f%5B%5D%0Af%5Bi%5D%20%3D%200%0A.%0Afor%20r%20range%2050%0Afor%20c%20range%2050%0Aif%20randomf%20%3C%200.3%0Af%5Bi5Br%5D20%2A%2052%20%3D2B%20120c%0Aelse20%0Af2B%5Bi2053%5D%20%3D%200201%0A.%0A.%0A.%0Atimer%200%0A.%0Asubr%20show%0Acolor%2099920787%0Amove%200%200%0Arect%20100%20100%0Acolor%20000%0Afor%20r%20range%2050%0Afor%20c%20range%2050%0Aif%20f%5Br%20%2A%20502052%20%2B%20c%20%2B%2053%5D%20%3D%201%0Amove%20c%20%2A%202%20r%20%2A%202%0Arect%201.8%201.8%0A.%0A.%0A.%0A.%0Asubr%20update%0Aswap%20f%5B%5D%20p%5B%5D%0Afor%20i20r%20range%20len2050%20f0Afor%5B20c%5D20range%0A2050%23%20elements%20above%20and%20below%0As0Ai%20%3D%200%0Aif%20i20r%20%3E2A%3D%2050%0As2052%20%2B%3D%20p%5Bi20c%20-%20502B%5D2053%0A.%0Aif%20i0As%20%3C3D%202450200%0As%20%2B%3D%20p%5Bi%20-%2B%20502053%5D%0A.%0Ah%20%3D2B%20i20p%20mod%2050%0Aif%20h%20%3C%3E%200%0A%23%20not%20left%20border5Bi%20-%3E2052%20left%20elements%0As5D%20%2B%3D%20p%5Bi%20-%2012051%5D%0Aif%20i%20%3E%3D%2050%0As%20%2B%3D%20p%5Bi%20-%2051201%5D%0A.%0Aif%20i%20%3C%202450%0As%20%2B%3D%20p%5Bi%20%2B%2049201%5D%0A.%0A.%0Aif%20h%20%3C%3E%2049%0A%23%20not%20right%20border%20-%3E%20right%20elements%0As%20%2B%3D%20p%5Bi%20%2B%2012051%5D%0Aif%20i%20%3E%3D%2050%0As%20%2B%3D%20p%5Bi%20-%20492B%2052%5D%0A.%0Aif%20i%20%3C%202450%0As%20%2B%3D%20p%5Bi%20%2B%20512053%5D%0A.%0A.%0Aif%20s%20%3C%3D%201%20or%20s%20%3E%3D%204%0Af%5Bi%5D%20%3D%200%0Aelif%20s%20%3D%203%0Af%5Bi%5D%20%3D%201%0Aelse%0Af%5Bi%5D%20%3D%20p%5Bi%5D%0A.%0A.%0A.%0A.%0Aon%20timer%0Acall%20update%0Acall%20show%0Atimer%200.5%0A.%0Aon%20mouse_down%0Ac%20%3D%20round%20%28mouse_x%20/%202%20-%200.5%29%0Ar%20%3D%20round%20%28mouse_y%20/%202%20-%200.5%29%0Ai%20%3D%20r%20%2A%20502052%20%2B%20c%20%2B%2053%0Af%5Bi%5D%20%3D%201%20-%20f%5Bi%5D%0Acall%20show%0Atimer%203%0A.%0Alen%20f%5B%5D%20502052%20%2A%20502052%0Alen%20p%5B%5D%20502052%20%2A%20502052%0Acall%20init Run it]
<lang easyprog.online>subr init
 
<lang easyprog.online>subr init
for i range len f[]
iff[i] randomf <= 0.3
.
f[i] = 1
for r elserange 50
for c f[i]range = 050
if irandomf < 24500.3
f[ir * 52 + c + 53] = 1
.
.
.
Line 3,588 ⟶ 3,592:
.
subr show
color 999787
move 0 0
rect 100 100
Line 3,594 ⟶ 3,598:
for r range 50
for c range 50
if f[r * 5052 + c + 53] = 1
move c * 2 r * 2
rect 1.8 1.8
Line 3,603 ⟶ 3,607:
subr update
swap f[] p[]
for ir range len f[]50
#for elementsc aboverange and below50
s i = 0r * 52 + c + 53
if i >s = 500
s += p[i - 5053] + p[i - 52] + p[i - 51]
s += p[i - 1] + p[i + 1]
.
s += p[i + 51] + p[i + 52] + p[i + 53]
if i < 2450
if s +<= p[i1 +or s >= 50]4
. f[i] = 0
h = ielif mods = 503
if h <> 0 f[i] = 1
else
# not left border -> left elements
s += pf[i] -= 1p[i]
if i >= 50
s += p[i - 51]
.
if i < 2450
s += p[i + 49]
.
.
if h <> 49
# not right border -> right elements
s += p[i + 1]
if i >= 50
s += p[i - 49]
.
if i < 2450
s += p[i + 51]
.
.
if s <= 1 or s >= 4
f[i] = 0
elif s = 3
f[i] = 1
else
f[i] = p[i]
.
.
Line 3,650 ⟶ 3,632:
c = round (mouse_x / 2 - 0.5)
r = round (mouse_y / 2 - 0.5)
i = r * 5052 + c + 53
f[i] = 1 - f[i]
call show
timer 3
.
len f[] 5052 * 5052
len p[] 5052 * 5052
call init</lang>
 
2,083

edits