Node Network
작은 어셈블리를 CPU 그리드에 작성하여 이웃에게 값을 전달하고, 데드락 없이 입력 스트림을 목표로 변환하세요.
플레이 방법
매우 작은 컴퓨터 그리드를 프로그래밍합니다. 각 노드는 자체 짧은 명령 목록을 실행하며, 바로 옆에 있는 이웃 노드와만 통신하여 포트를 통해 값을 전달할 수 있습니다. 그리드를 가로지르는 값은 노드마다 수동으로 릴레이되어야 합니다.
- 각 노드는 어큐뮬레이터와 몇 가지 명령(값 이동, 덧셈, 뺄셈, 점프)을 가집니다.
- 노드는 위, 아래, 왼쪽, 오른쪽 이웃 또는 입력 및 출력 스트림에서 읽거나 쓸 수 있습니다.
- 포트는 차단됩니다. 오른쪽으로 쓰려는 노드는 오른쪽 노드가 왼쪽에서 읽을 때까지 단순히 대기합니다.
- 즉, 두 노드는 값뿐만 아니라 시간적으로도 합의해야 합니다.
- 아무도 진전을 이루지 못하고 누군가는 여전히 대기 중인 상태에서 한 사이클이 지나가면 그리드는 데드락 상태가 됩니다.
- 출력 스트림이 레벨이 요구하는 목표와 일치할 때 퍼즐이 해결됩니다.
조작법
- 데스크톱: 각 노드의 텍스트 상자에 코드를 입력하고 드롭다운에서 레벨을 선택한 후 실행을 누릅니다
- 휴대폰 및 태블릿: 작동하지만, 코드 작성에는 외부 키보드를 강력히 권장합니다
게임 모드
- 데일리: 오늘 날짜를 기반으로 한 하나의 공유 퍼즐
- 연습: 새 버튼으로 새로운 무작위 입력을 순환하며 연습합니다
팁 및 전략
- 산술 연산 전에 경로를 설계하세요. 대부분의 실패는 값이 필요한 곳에 도달하지 못해서이지, 합이 잘못 나오기 때문이 아닙니다.
- 서로를 기다리는 두 노드는 전형적인 데드락입니다. 한쪽이 읽기 전에 양쪽이 서로에게 쓰면 어느 쪽도 움직이지 못합니다.
- 가능한 한 한 방향으로 트래픽을 유지하세요. 일관된 방향을 가진 그리드는 값이 교차하는 그리드보다 훨씬 추론하기 쉽습니다.
- 필요할 때 노드를 순수한 릴레이로 사용하세요. 값을 전달하는 것만 하는 것은 정당하고 종종 필요한 역할입니다.
- 잘못된 답이 아닌 차단된 노드를 확인하세요. 출력이 멈출 때, 어떤 노드가 누구를 위해 대기 중인지가 더 유용한 정보입니다.
배울 수 있는 것
노드 네트워크는 프로세서 메시에서 메시지 전달과 데드락을 피하는 것에 관한 병렬 프로그래밍 퍼즐입니다.
- 스킬: 병렬 및 동시 프로그래밍, 메시지 전달, 데드락 회피
- 추천 대상: 약 9~12학년 (14세 이상)
- 학부모 및 교사를 위한 안내: 동시성 및 데드락을 직접 체험합니다.
기원
각자 짧은 명령 목록을 실행하고 바로 옆의 이웃과만 대화할 수 있는 아주 작은 컴퓨터들의 격자는 2015년 7월 Zachtronics가 내놓은 TIS-100으로, 그 퍼즐들은 가상의 손상된 1970년대 기계를 배경으로 한다.
가르치는 제약은 실재하며 병렬 컴퓨팅의 핵심이다. 공유 메모리가 없으므로, 격자를 가로질러야 하는 값은 메시지 전달을 통해 노드에서 노드로 손수 중계되어야 한다.
그리고 손수 중계하다 보면 교착 상태를 만나게 된다. 두 노드가 서로를 기다리며 둘 다 영원히 멈춘다. 이것은 화이트보드에서는 제대로 설명할 수 없는 버그다. 어려움의 전부가 각 노드는 개별적으로 올바르게 행동하고 있다는 데 있기 때문이다.
노드 네트워크 소개
노드 네트워크는 프로세서 메시에서 메시지 전달과 데드락을 피하는 것에 관한 병렬 프로그래밍 퍼즐입니다. PlayPendium에서 자체 개발한 독창적인 무료 브라우저 게임입니다.
모든 게임 찾아보기 →