소개
Forte 는 숫자 값을 수정한다는 개념에 기반한 매우 독특한 난해한 언어입니다. Forte 숫자는 상수가 아니라 변수에서 LET
명령어를 사용하여 새 값을 지정할 수 있습니다.
예를 들어, LET 2=4-1
지금 부터 실행 한 후에 2
는 값 을 가정합니다. 3
즉, 값 2
이 표현식에 나타날 때마다 값 이 대신 "대체"됩니다 3
. 이제식이로 (1+1)*2
평가됩니다 9
.
Forte의이 명령어는 정보 저장 및 흐름 제어에 사용됩니다 (행 번호가 매겨지고 번호 값을 변경하여 실행 순서를 결정할 수 있음). 이 도전에서 우리는이 두 번째 측면을 다루지 않을 것이다.
도전
Forte LET
표현식 의 단순화 된 서브 세트에 대한 인터프리터를 작성해야합니다 .
이 문법에 따라 일련의 줄을 입력으로 받게됩니다.
<line>::= <number>=<expression>
<expression>::= <number>|<expression>+<number>
참고 :이 문법은 줄 번호, LET 및 괄호 (항상 필수)가 없기 때문에 유효한 Forte가 아닙니다.
즉, 계산 계산 및 숫자에 값 할당 만 처리하면됩니다. 입력에 괄호가 없으며 각 표현식은 왼쪽에서 오른쪽으로 평가해야합니다. 부분 결과는 재정의의 영향을받습니다.
숫자는 항상 음수가 아닌 정수이며 언어의 기본 정수 유형의 한도 (또는 2 ^ 32 중 높은 값)입니다.
각 줄에 대해 표현식의 결과를 출력하고이 결과를 첫 번째 숫자의 (재 할당 된) 값에 할당해야합니다. 이는 다음 줄의 해석 방법에 영향을줍니다.
이것은 가장 짧은 코드 (바이트)가이기는 code-golf입니다 !
다른 규칙
- 입력 형식은 유연합니다. 예를 들어 줄 바꿈, 문자열 목록, 숫자 목록이있는 단일 문자열을 사용할 수 있습니다. 입력.
- 함수, 전체 프로그램 또는 REPL 환경에서 실행할 솔루션을 제출하여 각 라인마다 한 번씩 호출 할 수 있습니다.
- 표준 허점 은 금지되어 있습니다. 특히 코드에서 외부 Forte 인터프리터를 호출 할 수 없습니다.
예
이들은 모두 같은 입력의 일부입니다. 각 라인 뒤에 해당 라인에 대한 예상 출력이 표시되며, 때로는 관련 재 할당 (필요한 출력의 일부가 아님)을 나타내는 주석과 함께 표시됩니다.
5=4
4
6=5
4 # 5 -> 4
7=1+2+5
7
7=5+2+1
4 # Order of operations matters! 5+2 -> 4+2 -> 6 -> 4
18=5+6+7
12
5=3
3 # Remember: 5 -> 4
10=6+4
3 # 6 -> 4 -> 3, 3+3 = 6 -> 3
0
는 유효합니다 ( "숫자는 항상 음수가 아닌 정수입니다")
0
유효한 숫자는?