#
# PYTHON • MyCompiler
#
# Chris Langton Formiga
# https://[Log in to view URL]
# Chris Langton Formiga
#
# Regras
#
# Estando em um quadrado branco,
# vire 90 ° para a direita,
# mude a cor do quadrado e
# avance uma unidade.
#
# Estando em um quadrado preto,
# vire 90 ° para a esquerda,
# mude a cor do quadrado,
# avance uma unidade.
#
# 2026 Novembro Sáb, 14
#
# by
# j
#
import matplotlib.pyplot as plt
import numpy as np
from numpy import pi
from numpy import sqrt
from numpy import sin
from numpy import cos
from numpy import atan
import colorsys
MAXRESOLUTION = 128
def newpos(bit,pos,xn,yn):
#
# Orientações da Formiga
#
# 'L' ... Leste
# 'O' ... Oeste
# 'N' ... Norte
# 'S' ... Sul
#
# N
# O • L
# S
#
if (bit == 0):
match pos:
case "L":
case "O":
case "N":
case "S":
else:
return (+1,-1)
def chrislangton():
#
# Configuração Geral
#
plt.style.use('dark_background')
plt.figure(figsize=(7, 7))
#
# Inicializações
#
P = np.zeros((MAXRESOLUTION, MAXRESOLUTION))
H = np.zeros((MAXRESOLUTION, MAXRESOLUTION))
L = np.zeros((MAXRESOLUTION, MAXRESOLUTION))
S = np.zeros((MAXRESOLUTION, MAXRESOLUTION))
xn = 64
yn = 64
max = 40
#
# Orientações da Formiga
#
# 'L' ... Leste
# 'O' ... Oeste
# 'N' ... Norte
# 'S' ... Sul
#
F = 'L'
#
# Geração da Matriz Dos Caminhos
#
for t in range(0, max):
#
# Verifica Estado da Posição
#
bit = P[xn][yn]
#
# Toma A Atitude Pela Regra
#
F, dx, dy = newpos(bit,F)
xn += dx
yn += dy
#
# Construção da Matriz HLS
#
for xn in range(0, MAXRESOLUTION-1):
for yn in range(0, MAXRESOLUTION-1):
#
# Cor
#
H[ xn, yn ] = 0.5
#
# Brilho
#
L[ xn, yn ] = P[xn][yn]
#
# Saturação Máxima
#
S[ xn, yn ] = 1.0
#
# Conversão ultra~rápida vetorizada
# de HLS para RGB
#
hls_to_rgb_v = np.vectorize(colorsys.hls_to_rgb)
R, G, B = hls_to_rgb_v(H, L, S)
#
# Agrupa os canais e rotaciona
# para coincidir com os eixos
# cartesianos convencionais
#
RGB = np.dstack((R, G, B))
RGB = np.swapaxes(RGB, 0, 1)
#
# Gera o gráfico
#
tit = "Cris Langton Map"
plt.imshow(RGB, extent=[-1.0, 1.0, -1.0, 1.0], origin='lower')
plt.title(tit)
plt.xlabel("x")
plt.ylabel("y")
plt.axis('on')
plt.show()
chrislangton()
To embed this project on your website, copy the following code and paste it into your website's HTML: