SEGMENT 40196
SIGNAL PATTERN DETECTOR
문제
- READ A VALUE FROM IN
- LOOK FOR THE PATTERN 0,0,0
- WRITE 1 WHEN PATTERN IS FOUND
- IF NOT TRUE, WRITE 0 INSTEAD
- IN으로 들어오는 값을 읽는다.
- IN이 0,0,0 패턴인지 식별한다.
- 패턴이 맞으면 1을 출력한다.
- 아니면 0을 출력한다.
풀이 1
- 177 CYCLES / 4 NODES / 15 INSTR
4개의 노드를 사용하는 방법이다.
@0
@1
^:
MOV 0, DOWN # 무조건 0을 출력한다.
MOV UP, ACC # IN 을 입력받아 더한다.
JNZ ^ # 더한 결과가 0 이 아니라면 처음으로 돌아간다.
MOV 0, DOWN # 더한 결과가 0 이라면 0 패턴. 0을 출력한다.
ADD UP # IN을 입력받아 더한다.
JNZ ^ # 처음으로 돌아간다.
00: # 00 인 경우
ADD UP # IN 을 입력받아 더한다
JEZ 000 # 더한 결과가 0 이면 goto 000
MOV 0, DOWN
JNZ ^
000: # 000 패턴인 경우
MOV 1, DOWN # 1을 출력한다
JMP 00 # goto 00
@2
@3
@4
MOV UP, DOWN
@5
@6
@7
@8
MOV UP, RIGHT
@9
MOV LEFT, DOWN
@10