하나 이상의 입력, 0개 이상의 2입력 AND/OR 게이트, 그리고 하나의 출력으로 이루어진 논리 회로의 출력값을 구하는 문제입니다. 각 회로는 ASCII 문자로 그려집니다.
전선은 세 가지 문자로 표현합니다. 가로 선은 붙임표 -(ASCII 45), 세로 선은 세로 막대 |(ASCII 124), 분기점은 더하기 +(ASCII 43)입니다. 입력은 대문자 A부터 Z까지로, 유일한 출력은 물음표 ?로 나타냅니다.
AND 게이트와 OR 게이트는 아래와 같은 모양으로 그려지며, 항상 이 방향으로만 나타납니다.
:\
: )
:/
AND 게이트
:\
: >
:/
OR 게이트
게이트의 두 입력은 왼쪽에서 들어오고, 출력은 오른쪽으로 나갑니다.
-:\
: )-
-:/
입력과 출력이 표시된 게이트
게이트의 입력이나 출력은 반전될 수 있습니다. 반전은 해당 입력 또는 출력 위치에 놓인 소문자 o(ASCII 111)로 표시합니다.
-o:\
: )o-
--:/
위쪽 입력과 출력이 모두 반전된 예
아래 그림은 입력 두 개와 출력 하나로 이루어진 작지만 완전한 논리 회로입니다.
A-o:\
: )o-?
B--:/
두 개의 논리 입력과 출력
모든 회로는 다음 규칙을 따릅니다.
입력의 회로도는 첫 번째 열에 별표 * 하나만 있는 줄로 끝납니다. 그 뒤에는 입력 상태를 나타내는 줄들이 이어지는데, 각 줄은 0 또는 1 스물여섯 개로 이루어진 문자열입니다. 첫 번째 문자는 입력 A의 상태, 두 번째 문자는 입력 B의 상태, 이런 식입니다. 회로에서 쓰이지 않는 글자의 입력값은 무시합니다. 입력 상태 목록은 다시 첫 번째 열에 별표 * 하나만 있는 줄로 끝납니다.
입력 상태 목록을 끝내는 별표 뒤에는 또 다른 회로도가 오고, 그 뒤에 그 회로의 입력 상태 목록이 오며, 다시 회로도와 입력 상태 목록이 이어지는 식으로 파일이 끝날 때까지 반복됩니다. 파일에는 항상 회로 하나와 그 회로에 대한 입력 한 묶음 이상이 들어 있습니다.
각 회로에 대해, 회로 뒤에 나열된 입력값 묶음마다 그 회로의 출력값(0 또는 1)을 한 줄에 하나씩 출력합니다. 한 회로의 출력 묶음과 다음 회로의 출력 묶음은 빈 줄 하나로 구분합니다.