라이프 게임베타

셀을 그리고 규칙을 바꿔 가며 생명 게임의 세계를 관찰

이 도구는 아직 안정화 중인 베타 버전입니다. 결과가 예상과 다르면 알려주세요.

시뮬레이션 엔진(WebAssembly)을 불러오는 중…

캔버스를 끌어 셀을 그리세요 (오른쪽 버튼 = 지우개). 패턴을 고르면 클릭한 자리에 찍히고, R 키나 회전 버튼으로 방향을 바꿉니다. 규칙 B3/S23 은 '이웃이 3개면 태어나고 2~3개면 살아남는다'는 뜻입니다. 규칙을 바꾸면 같은 모양이 전혀 다르게 자랍니다. 단축키: Space 재생/정지, N 한 세대.

가장자리 연결을 켜면(기본) 격자가 도넛 모양으로 이어져, 화면 밖으로 나간 글라이더가 반대편에서 돌아와 부딪칩니다. 기본 격자(256×172)에서 글라이더 총은 약 2,300세대 뒤 제 글라이더에 맞아 부서지고, R-펜토미노는 1103세대에 116칸이 되지만 그 뒤 돌아온 글라이더가 잔해를 건드려 줄어듭니다. 끄면 격자 밖이 죽은 칸인 벽이 되어 글라이더가 가장자리에서 블록으로 굳고, 총은 계속 쏩니다(대신 R-펜토미노는 110칸). 무한한 평면에서 구한 알려진 수치(도토리: 5206세대에 633칸)는 어느 쪽에서도 그대로 나오지 않습니다.

라이프 게임 소개

이 도구는 256×172칸(크기 선택 가능) 격자에서 「라이프 계열」 셀 오토마타를 돌린다. 각 칸은 살았거나 죽었고, 다음 세대는 주변 8칸 중 살아 있는 칸 수만으로 정해진다. 기본 규칙 B3/S23은 죽은 칸이 이웃 3개면 태어나고(Birth), 산 칸은 이웃이 2개나 3개일 때만 살아남는다(Survive)는 뜻이다. 모든 칸이 동시에 갱신되므로, 계산은 현재 세대 전체를 읽은 뒤 다음 세대를 따로 써서 한 번에 바꾼다.

처음 켜면 격자의 약 25%가 무작위로 채워진다. 가장자리 연결이 켜져 있으면 격자는 도넛 모양(토러스)이라 오른쪽 끝을 나간 글라이더가 왼쪽에서 다시 들어온다. 끄면 격자 밖은 항상 죽은 칸으로 계산된다. 하늘색은 막 태어난 칸, 보라색은 오래 산 칸이며, 잔상은 최근에 죽은 자리다.

규칙 B3/S23을 손으로 한 세대 돌려 보기

가로로 세 칸이 놓인 「블링커」를 생각해 보자. 가운데 칸은 이웃이 2개라 살아남고, 양 끝 칸은 이웃이 1개라 죽는다. 가운데 칸의 위와 아래 빈칸은 각각 이웃이 3개(가로줄 세 칸)라 태어난다. 결과는 세로 세 칸이고, 다음 세대에는 같은 이유로 다시 가로가 된다. 주기 2의 진동자다.

2×2 「블록」은 네 칸 모두 이웃이 3개라 살아남고, 바깥 빈칸은 이웃이 최대 2개라 아무것도 태어나지 않는다. 그래서 영원히 그대로 있다. 무작위 시작 화면이 수백 세대 뒤 블록·블링커·벌집 모양 같은 작은 조각들로 정리되는 것은 이런 안정 구조가 많기 때문이다.

관찰 실험 1: 글라이더와 도넛 격자

지우기 후 패턴에서 글라이더를 골라 한 번 찍고 N 키로 한 세대씩 넘겨 보자. 4세대마다 원래 모양으로 돌아오면서 대각선으로 한 칸 이동한다. 속도는 4세대당 1칸, 라이프 연구에서 c/4라고 부르는 값이다.

가장자리 연결이 켜진 256×172 격자에서는 글라이더가 가로 256칸을 1,024세대에, 세로 172칸을 688세대에 한 바퀴 돈다. 두 주기가 동시에 맞아 처음 위치로 돌아오려면 256과 172의 최소공배수 11,008칸, 즉 44,032세대가 걸린다. 연결을 끄면 글라이더는 벽에 닿아 부서지고 작은 잔해를 남긴다.

관찰 실험 2: 글라이더 총이 스스로 망가지는 이유

「글라이더 총」 패턴은 빌 고스퍼가 1970년에 찾은 고스퍼 글라이더 총이다. 30세대마다 글라이더를 하나씩 쏘며, 글라이더가 4세대에 한 칸씩 가므로 줄지어 나가는 글라이더 사이 간격은 대각선 방향 7.5칸이다. 콘웨이는 개체 수가 끝없이 늘어나는 패턴이 없다고 추측했고, 이 총이 그 추측을 반박했다.

하지만 이 도구에서 연결을 켠 채 오래 두면 총은 결국 망가진다. 격자가 유한한 도넛이라 쏘아 보낸 글라이더가 한 바퀴 돌아 총 자신이나 앞선 글라이더와 부딪치기 때문이다. 이론상의 무한 증식은 무한 평면에서만 성립한다. 연결을 끄면 글라이더가 벽에서 부서지는데, 그 잔해가 총에 닿지 않는 위치에 두면 오래 버틴다.

관찰 실험 3: 다섯 칸짜리 씨앗이 1,103세대를 사는 것

R-펜토미노는 다섯 칸뿐이지만 무한 평면에서는 1,103세대가 지나서야 안정되고, 그때 남는 칸은 116개, 날아간 글라이더는 6개다. 도토리(acorn)는 일곱 칸에서 5,206세대 동안 자라 633칸이 된다. 이 도구에서 같은 수치가 나오지 않을 수 있다. 격자가 유한해서 날아간 글라이더가 반대편에서 되돌아와 잔해와 충돌하기 때문이다. 가장 큰 격자를 고르고 패턴을 가운데 찍으면 초반 수백 세대는 문헌과 같은 전개를 볼 수 있다. 기본 격자(256×172) 가운데에 찍어 재 보면, R-펜토미노는 연결을 켠 채 1,103세대에 116칸으로 문헌과 같지만 되돌아온 글라이더가 잔해를 건드려 5,000세대에는 94칸이 되고, 연결을 끄면 글라이더 여섯 개가 벽에서 블록으로 굳어 110칸에서 멈춘다. 도토리는 5,206세대에 연결을 켜면 439칸, 끄면 493칸이다.

규칙을 바꾸면 무엇이 달라지나

엔진은 B와 S를 비트마스크로 받기 때문에 0~8 사이의 어떤 조합도 돌릴 수 있다. 준비된 규칙들은 성격이 뚜렷하다.

  • 하이라이프 B36/S23: 라이프에 「이웃 6개면 탄생」만 더했다. 자기 복제하는 작은 패턴(레플리케이터)이 있는 규칙으로 알려져 있다.
  • 씨앗 B2/S: 생존 조건이 비어 있어 모든 칸이 한 세대만 산다. 그런데도 이웃 2개 탄생 규칙 때문에 폭발적으로 퍼진다.
  • 낮과 밤 B3678/S34678: 산 칸과 죽은 칸을 뒤바꿔도 같은 규칙이 된다. 검은 바다의 흰 섬과 흰 바다의 검은 섬이 똑같이 행동한다.
  • 미로 B3/S12345: 한번 생긴 칸이 잘 죽지 않아 통로 모양으로 굳는다.
  • 산호 B3/S45678: 촘촘한 덩어리가 천천히 바깥으로 자란다.

예시

블링커 한 세대

입력
B3/S23, 가로 3칸 (x=0,1,2 / y=0)
결과
세로 3칸 (x=1 / y=-1,0,1)

양 끝은 이웃 1개라 죽고, 가운데는 이웃 2개라 생존, (1,-1)과 (1,1)은 이웃 3개라 탄생.

글라이더가 제자리로 돌아오는 세대

입력
256×172, 가장자리 연결, 글라이더 1개
결과
44,032세대

4세대당 1칸. lcm(256,172)=11,008칸 × 4 = 44,032.

글라이더 총의 발사 간격

입력
고스퍼 글라이더 총
결과
30세대마다 1개, 글라이더 간격 7.5칸

주기 30 ÷ 속도(4세대당 1칸) = 7.5칸.

사용 방법

  1. 규칙을 고르거나 B3/S23 형식으로 직접 입력한다(S23/B3, 23/3 표기도 받는다).
  2. 캔버스를 끌어 칸을 그리고, 패턴을 골라 원하는 자리를 클릭한다. R 키로 회전한다.
  3. Space로 재생·정지, N으로 한 세대씩 넘긴다.
  4. 가장자리 연결을 켜고 끄며 같은 패턴이 어떻게 달라지는지 비교한다.

자주 묻는 질문

라이프 게임은 누가 언제 만들었나요?

수학자 존 호턴 콘웨이가 고안했고, 마틴 가드너가 Scientific American 1970년 10월호 「수학 게임」 칼럼에서 처음 소개했다.

라이프 게임이 튜링 완전하다는 말은 무슨 뜻인가요?

글라이더를 신호로, 글라이더 총과 충돌을 논리 게이트로 써서 어떤 컴퓨터 계산도 원리상 흉내 낼 수 있다는 뜻이다. 벌레캠프·콘웨이·가이의 책 『Winning Ways』에서 구성이 제시되었다. 실제로 짜려면 이 도구보다 훨씬 큰 격자가 필요하다.

무작위로 시작하면 왜 결국 멈추나요?

대부분의 무작위 배치는 블록·벌집 같은 정물과 블링커 같은 진동자로 정리된다. 도넛 격자에서는 떠돌던 글라이더가 결국 무언가와 부딪치므로 완전히 멈춘 것처럼 보이는 상태가 흔하다.

가장자리 연결을 끄면 결과가 틀린 건가요?

틀린 것은 아니고 다른 경계 조건이다. 이론의 라이프는 무한 평면이라 둘 다 근사다. 벽 모드는 격자 밖을 죽은 칸으로 보고, 연결 모드는 반대편 칸을 이웃으로 본다.

참고

격자는 한 변 최대 1,024칸이다. 무한 평면에서 알려진 패턴 수명·최종 개체 수는 유한 격자에서 달라질 수 있다.

관련 가이드

출처

기준일:

개인정보와 저장 방식