#
# 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()

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: