Stackylogic 난에 그 인출 구성된 로직 기반의 프로그래밍 언어 0
의과 1
입력의를 단일 출력 0
또는 1
시 완료.
Stackylogic 프로그램은 세 개의 문자 만 포함 할 수있는 행으로 구성되며 한 행 의 끝에 01?
정확히 한 문자 만 포함 <
됩니다. 라인은 비워 둘 수 없습니다 수 있으며, 함께 라인은 <
적어도 하나 있어야합니다 0
, 1
또는 ?
그 전에합니다.
다음 은 두 비트 의 NAND 를 계산하는 샘플 프로그램입니다 .
1
?<
11
?
0
Stackylogic 프로그램의 모든 행은 스택 으로 간주 되며 맨 아래는 왼쪽, 맨 위는 오른쪽입니다. 암시 적으로 프로그램의 첫 번째 줄 앞과 마지막 줄 뒤에 빈 스택 (빈 줄)이 있습니다.
은 <
, 우리가 전화 할게있는 커서를 Stackylogic 프로그램이 실행될 때, 마크 스택에 시작합니다. Stackylogic 프로그램의 실행은 다음과 같이 진행됩니다.
커서가 현재 가리키는 스택에서 맨 위 문자를 팝하십시오.
- 문자가
?
인 경우 사용자에게 a0
또는 a1
를 묻고 문자 인 것처럼 행동하십시오. - 문자가
0
인 경우 커서를 한 스택 위로 움직입니다 (현재 줄 위의 줄로). - 문자가
1
인 경우 커서를 한 스택 아래로 (현재 줄 아래의 줄로) 이동하십시오.
- 문자가
커서가 이동하는 스택이 비어 있으면 스택에서 마지막으로 튀어 나온 마지막 값 (항상 a
0
또는1
)을 출력하고 프로그램을 종료하십시오.그렇지 않으면, 커서가 이동하는 스택이 비어 있지 않으면 1 단계로 돌아가서 프로세스를 반복하십시오.
Stackylogic 프로그램은 결국 스택을 고갈시켜야하기 때문에 항상 종료됩니다.
낸드 예
NAND 프로그램에서 커서는 다음에서 시작됩니다 ?
.
1
?<
11
?
0
우리는 1
일단 사용자 입력 ?
이 팝업되면 커서가 아래로 이동하여 프로그램이 다음과 같이 표시된다는 것을 가정합니다 .
1
11<
?
0
이제 1
커서 스택의 맨 위에 평원 이 있습니다. 정식으로 팝업되고 커서가 다시 이동합니다.
1
1
?<
0
이제 사용자 입력 가정 0
에 ?
커서가 이동을 의미합니다 :
1
1<
0
다시 a 1
는 커서 스택에 있으므로 커서가 튀어 나와 아래로 이동합니다.
1
<
0
마지막으로 커서 스택이 비어 있으므로 마지막으로 터진 값인 1
,이 출력되고 프로그램이 종료됩니다.
이는은 NAND 게이트에 대한 정확 1 NAND 0
하다 1
. 이것은 물론 확인해야 할 경우 다른 세 개의 2 비트 입력에 적용됩니다.
또는 예
이 Stackylogic 프로그램은 OR 게이트를 시뮬레이션합니다 .
?
?<
초기 입력은 1
커서를 마지막 행 아래의 암시 적 빈 스택으로 푸시하여 프로그램을 종료하고 1
방금 입력 한 것을 출력한다는 것을 쉽게 알 수 있습니다.
00
반면에 입력의 경우, 커서는 상단의 암시 적 빈 스택으로 이동하여 프로그램을 종료하고 마지막 0
입력을 출력합니다 .
도전
인쇄하거나 결과를 반환하는 문자열로 Stackylogic 프로그램에 받아 그것을 실행되는 프로그램 또는 기능을 작성 0
또는 1
.
시 ?
의, 당신은에 대한 사용자를 묻는 메시지를 표시 할 수 있습니다 0
또는 1
입력, 또는 미리 설정된 문자열에서 값을 읽을 수 0
의 그리고 1
당신은 또한 입력으로 취하는 것이의. (이것은 프로그램 / 함수에 다른 문자열 입력이 될 수 있거나 프로그램 문자열의 첫 번째 또는 마지막 줄이 입력 스트림이라고 가정 할 수 있습니다).
프로그램과 입력이 항상 잘 구성되어 있다고 가정 할 수 있습니다. 선택적으로 입력 프로그램에 하나의 후행 줄 바꿈이 있다고 가정 할 수 있습니다 (그러나 끝에는 항상 암시 적 빈 스택이 있음을 기억하십시오).
바이트 단위의 가장 짧은 코드가 이깁니다.
더 많은 샘플 프로그램
ZERO
0<
ONE
1<
BUFFER
?<
NOT
1
?<
0
AND
?<
?
NAND
1
?<
11
?
0
OR
?
?<
NOR
1
?
00
?<
0
XOR(v1)
?
0
1?<
?
0
XOR(v2)
?
?<
11
?
0
XNOR(v1)
1
?
0?<
1
?
XNOR(v2)
1
?
00
?<
?
MEDIAN(v1)
1
???<
0
MEDIAN(v2)
?
1?<
??
1\???<\0
.
111\???????<\000
입니다.
?\1?<\??
있습니다. 또는 대칭형 5 라인 구현이 있습니다.?\?0\?<\?1\?