에듀테크 프로젝트 대시보드
콘웨이의 생명 게임 (Game of Life)
1970년 수학자 존 콘웨이가 만든 셀룰러 오토마타(cellular automaton)다.
격자의 각 칸(셀)은 살아있음 또는 죽음 두 상태만 가지며,
주변 8칸의 이웃 수라는 아주 단순한 규칙만으로 다음 세대가 결정된다.
플레이어의 조작은 처음 배치가 전부 — 이후에는 규칙이 알아서 진화시킨다.
이 단순한 규칙에서 이동하는 우주선, 무한히 세포를 뿜는 총, 심지어 튜링 완전한 계산까지 창발(emergence)한다.
격자를 클릭하거나 드래그해서 세포를 켜고 끌 수 있어요. 패턴을 고르면 격자 중앙에 심어집니다.
살아있는 세포의 이웃이 1개 이하면 다음 세대에 죽는다. (저인구)
살아있는 세포의 이웃이 2개 또는 3개면 그대로 살아남는다.
살아있는 세포의 이웃이 4개 이상이면 다음 세대에 죽는다. (과인구)
죽은 세포의 이웃이 정확히 3개면 다음 세대에 새로 태어난다.
흔히 B3/S23 로 줄여 쓴다 —
Birth는 이웃 3, Survive는 이웃 2 또는 3. 모든 세포는 동시에 갱신된다.
def step(grid): # grid: 2차원 0/1 리스트 h, w = len(grid), len(grid[0]) nxt = [[0] * w for _ in range(h)] for y in range(h): for x in range(w): # 주변 8칸의 살아있는 이웃 수 n = sum(grid[(y+dy) % h][(x+dx) % w] for dy in (-1,0,1) for dx in (-1,0,1) if (dy, dx) != (0, 0)) if grid[y][x]: nxt[y][x] = 1 if n in (2, 3) else 0 # S23 else: nxt[y][x] = 1 if n == 3 else 0 # B3 return nxt
% h, % w 로 격자를 토러스(도넛)처럼 이어 붙였다. 대신 격자 밖을 항상 죽음으로 볼 수도 있다.B36/S23(HighLife), B2/S(Seeds) 등 전혀 다른 세계가 된다.