>>12094046Since I saw this the other day I tried it for myself. Here's an example in python. This will run in your terminal and output a heatmap in ASCII + color
# Board size (N x N matrix)
N = 201
# amount of steps to simulate
STEPS = 2000
# have the sides wrap around )
modulo_mode = True
# initialize field
field = np.array([[0. for _ in range(N)] for _ in range(N)])
# step field definition
def sum_surround(field, x, y, modulo_mode, Nx, Ny):
SUM = 0
N = 0
for i in [-1, 0, 1]:
for j in [-1, 0, 1]:
if modulo_mode:
SUM+=field[(x+i)%Nx][(y+j)%Ny]
N+=1
else:
if (x+i < 0 or x+i >= Nx) or (y+j < 0 or y+j >= Ny):
pass
else:
SUM+=field[(x+i)][(y+j)]
N+=1
return SUM/N
def step_field(field, modulo_mode=False):
Nx, Ny = field.shape
new_field = np.copy(field)
i=1
for x in range(Nx):
for y in range(Ny):
new_val = sum_surround(field, x, y, modulo_mode, Nx, Ny)
new_field[x][y] = new_val
return new_field
# display
ASCII_LUM = " .,-~:;!=*#$@"
def display_ascii(field):
MAX_LUM = np.max(np.abs(field))
STR = ""
Nx, Ny = field.shape
SUM = np.sum(field)
STR+="_"*Nx
STR+="\n"
for x in range(Nx):
for y in range(Ny):
norm = int(abs(field[x][y])/MAX_LUM*(len(ASCII_LUM)-1))
STR+=color.red if np.sign(field[x][y]) == -1 else color.blue
STR+=ASCII_LUM[norm]
STR+=" "
STR+="\n"
STR+="_"*Nx
STR+="\n"
STR+=str(SUM)
print(STR)
# setup
#MAX = 1
Nx, Ny = field.shape
for i in range(Nx):
for j in range(Ny):
field
[j] = random.randint(-100, 100)
print("mod", modulo_mode)
# simulate
display_ascii(field)
for _ in range(STEPS):
oF = np.copy(field)
field = step_field(field, modulo_mode=modulo_mode)
display_ascii(field-oF)