이 Game of Life 질문에서 영감을 얻었습니다 .
Wireworld는 "와이어"를 통해 흐르는 "전자"를 시뮬레이션합니다. 간단한 배열은 일반적인 논리 게이트 동작을 생성합니다.
Wireworld 셀룰러 오토 마톤에서 디지털 시계를 제작해야합니다. 시계는 일반적인 방식으로 00:00부터 23:59까지 또는 AM / PM 표시기를 사용하여 11:59까지 증가한 다음 재설정해야합니다.
출품작은 크게 두 부분으로 나뉩니다. 파트 A에는 숫자를 증가시키고 루핑하는 데 관련된 모든 비 디스플레이 논리가 포함되어야합니다. 파트 B는 디스플레이와이를 구동하는 논리입니다. 이 두 부분 사이의 유일한 연결은 BCD 에서 시간의 네 자리 숫자를 나타내는 16 개의 전선이어야합니다 (신호가 연속적이지 않은 경우 AM / PM 표시기의 경우 옵션 와이어 1 개, 신호 클럭 라인의 경우 옵션 와이어 1 개). (편집 : 항상 제로 전선을 생략 할 수 있습니다)
클럭 동작의 타이밍은 일정해야합니다. 시뮬레이션은 상태 간 1440 개의 전환 각각에 대해 동일한 수의 틱을 가져야합니다. 16 와이어의 모든 전자는 동시에 A 부분에서 방출되어야하고 병렬로 트립을 시작해야합니다.
이것은 코드 골프 경쟁입니다. 점수는 파트 A를 둘러싸는 축 정렬 경계 상자의 영역입니다.
유사하게, 이것이 텍스트 언어 인 경우, 점수는 4 개의 4 비트 출력을 생성하는 클록 관리 기능의 크기이며, 여기에는 해당 출력을 디코딩하고 인쇄하는 기능이 아니라 4 개의 카운터에 대한 루프와 논리가 포함됩니다.
파트 B는 원하는만큼 크거나 작을 수 있습니다. wireworld 회로의 출력을 간단히 "디버깅"할 수있는 방법이 없기 때문에 제출 한 사람이 제출 한 결과를 볼 수 있도록하기 위해서만 필요합니다. 온라인으로 여러 BCD-> 7 세그먼트 회로를 사용할 수 있습니다. 원하는 신호를 자유롭게 사용하거나 클록 신호 라인이 필요한 경우 직접 만들고 AM / PM 표시기를 숫자와 비슷한 스케일로 표시하십시오.
편집 : 이제 파트 B는 선택 사항입니다. 파트 A의 BCD 출력 만 있다면 자유롭게 제출하십시오. 시계가 작동하는지 확인하는 것이 더 지루하지만, 일시 정지 된 시뮬레이션에서 한 줄의 비트 만 읽을 수 있습니다.