def g52_bloom(rng):
"""Dots wider than their own cell, one per 2x2 macro-cell, radius capped so
neighbouring blooms never touch — the grid stays legible instead of clumping."""
steps = rng.randint(5, 7)
N = rng.choice([30, 40])
c = Canvas(N, rng.choice(PALETTE_NAMES), steps, "bloom", "dots")
f = Field(rng, "mesh", warp=rng.uniform(0.25, 0.5), steps=steps)
c.ground_from(f)
for j in range(0, N - 1, 2):
for i in range(0, N - 1, 2):
u, v = c.uv(i, j)
t = f.raw(u, v)
c.dot((i + 1) * c.C, (j + 1) * c.C, (0.30 + 0.55 * t) * c.C,
(f.idx(u, v) + 3) % steps)
return c