noche

Jugamos con esta idea:

cuadrilla

Viene de aquí.

Algo que me gusta es que aunque los componentes verticales y horizontales por separado lucen tontos, al combinarlos se genera un patrón que parece significativo, con mensaje.

Esto se puede dibujar dentro de un cuaderno Jupyter relativamente fácil con el paquete ipycanvas que descubrí hoy mientras pensaba en esto:

 
from ipycanvas import Canvas 
import numpy as np

N = 400 
canvas = Canvas(width=N, height=N) 
canvas.scale(1) 
canvas.line_width = 1 
canvas.stroke_style = 'orangered' 
canvas.set_line_dash([10, 10])

def linea(x, tipo, direccion, canvas, N=N):   
    inicio = 1 if tipo == 0 else 11 
    canvas.begin_path() 
    a = [inicio, x] if direccion == 0 else [x, inicio] 
    b = [N, x] if direccion == 0 else [x, N] 
    canvas.move_to(*a) 
    canvas.line_to(*b) 
    canvas.stroke()

for i in range(int(N/10)):
    semilla_h = np.random.binomial(1, 0.5)
    semilla_v = np.random.binomial(1, 0.5)
    linea(1 + 10 * i, semilla_h, 0, canvas)
    linea(1 + 10 * i, semilla_v, 1, canvas)

canvas

Aquí un diagrama generado con el código de arriba:

cuadrilla

Aquí uno generado por una versión más sencilla en la que las sucesiones binarias de las filas y las columnas son iguales (semilla_h = semilla_v).

cuadrilla

La simetría diagonal de la segunda es clara pero no completamente evidente a menos que se busque. Esperaba que la imagen fuera más visualmente aburrida que la otra.

Una pregunta que probablemente requeriría trabajo serio es determinar cuál es el valor esperado del número de secciones separadas para cada una de los dos casos (asumiendo generación aleatoria de las sucesiones binarias con una moneda balanceada). Y cómo crece de acuerdo al tamaño de la cuadrícula.

Pregunta relacionada: ¿cuál será un buen algoritmo para calcular, dado un diagrama de esos, cuántos componentes tiene? (Y así por medio de una simulación estimar la respuesta de la pregunta anterior para cuadrículas pequeñas.)