13

저는 Conway의 Game of life로 놀아 왔으며 최근에 Hashlife와 Golly와 같은 놀라운 구현을 발견했습니다. (여기 Golly를 다운로드하십시오 - http://golly.sourceforge.net/)생명의 게임의 또 다른 질문 (무한 격자)?

내가 머리를 쓰지 않는 한 가지는 코더가 무한 격자를 구현하는 방법입니다. 무언가의 무한한 배열을 유지할 수는 없습니다. 만약 당신이 골리를 달리고 가장자리에서 벗어나 날아갈 수있는 몇 개의 글라이더를 얻으면, 몇 분 기다렸다가 곧바로 줌 아웃하면, 우주에서 도망가는 글라이더가 여전히 보일 것입니다. 그래서 어떻게 신의 이름으로이 무한대의 개념이 프로그래밍 방식으로 다루어 지나요? 잘 문서화 된 패턴이 있습니까?

많은 감사합니다.

답변

5

Wikipedia explains it. 기본 아이디어는 정보가 패턴 크기에 비해 느린 속도로 이동하고 채워진 세포의 최대 밀도가 모든 지역의 세포의 약 1/2이기 때문에 Conway의 Game of Life가 지역성을 나타냅니다. (More는 인구 과잉으로 인해 세포를 죽입니다.)

지역성이 있으므로 여러 섹션에서 필드를 구분하고 각 섹션을 독립적으로 시뮬레이션 할 수 있습니다. 당신이 당신의 지역을 잘 선택한다면, 당신은 종종 같은 패턴을 보게 될 것입니다. 이러한 패턴이 어떻게 전개되어 결과 테이블에 저장되는지를 시뮬레이션 할 수 있으므로 동일한 패턴의 다른 인스턴스를 두 번 이상 시뮬레이션 할 필요가 없습니다. 인접한 패턴을 더 큰 '메타 패턴'으로 결합하면 해당 패턴을 사전에 계산할 수 있습니다.

7

이러한 상황에서는 일부 유형의 스파 스 매트릭스가있는 노드를 나타낼 수 있습니다. 예를 들어 Nodes 배열 대신 각각 (LivingNode, Coordinate) 쌍의 목록을 저장하면 배열 크기를 늘리는 대신 Coordinates을 변경하는 것입니다. 따라서이 공간은 LivingNodes의 수에 비례합니다.

이 솔루션은 살아있는 노드 수가 지속적으로 증가하는 상태에서는 작동하지 않지만 글라이더에서는 잘 작동합니다.

편집 : 그래서 내 머리 꼭대기에서 벗어났습니다. 훨씬 더 생각해 낸 해결책을 보여주는 Wikipedia has an article가 나타납니다. 오 잘! :) 즐겨.

+0

내가 Golly를 (놀랄만큼 빠르며) 달리기를 할 때, 나는 글라이더가 가장자리에서 달려 나가는 것을 관찰하고, 그 다음에 그들이 축소되어 공간을 떠날 때, 그들이 어디로 갈지 알 수있는 방법을 찾는다. ? 그리드는 좌표의 목록입니까? 또는 그것은 전혀 존재합니까? –

+0

나는 Golly가 어떻게 그 일을하는지 전혀 모른다. 단지 접근법을 제안했다. Golly 소스는 체크 아웃하려는 경우 사용할 수 있습니다. – JoshJordan

+0

위의 Joren의 답을 본 Ive는 위키피디아 링크를 읽었습니다. 나는 지금 그것을 얻는다. 그러나 소년은 그것의 까다로운 재료 다. 답장을 위해 두 분께 많은 돈을드립니다. (프로그래머로서, 나는 완전히 새로운 수준의 부적절 함을 느낀다! :)) –