GTA (Gshs Turing machine Algorithm)
이 언어는 경기과고 24학년도 영재성평가 2교시에 나온 단순화된 튜링 머신(구현 시 변형됨)을 실행합니다. 튜링 머신은 연속적으로 배열된 격자들과 헤더, 그리고 알고리즘으로 구성됩니다.
격자들에는 0~9의 숫자들과 빈칸(□)을 저장할 수 있습니다. 이때, 처음과 끝의 격자의 값은 항상 빈칸(b로 입력)이어야 합니다. 알고리즘은 알고리즘의 상태와 그 상태에서 수행할 명령으로 구성되어 있습니다. '문법 설명'에서 더 자세한 내용이 설명되어 있습니다. 헤더는 격자를 가리키며, 명령을 통해 왼쪽이나 오른쪽으로 이동할 수 있습니다. 프로그램은 항상 헤더가 가리키는 격자의 값(격자값)을 읽습니다.
'알고리즘 폴더 열기' 버튼을 클릭하면 알고리즘을 저장하는 폴더가 열립니다. 그 폴더에 알고리즘의 이름과 동일한 이름을 갖는 텍스트 파일을 생성한 뒤, 내용을 입력하고 저장하면 프로그램에서 알고리즘을 인식할 수 있습니다. 알고리즘은 문법 설명에 따라 입력하시면 됩니다. 알고리즘 생성/수정 후 실행하기 버튼을 누르시면 실행됩니다.
'알고리즘 편집하기' 버튼을 누르면 알고리즘 리스트를 볼 수 있습니다. 원하는 알고리즘을 선택하거나 생성한 뒤, 내용을 입력하고 저장하면 프로그램에서 알고리즘을 인식할 수 있습니다. 알고리즘은 문법 설명에 따라 입력하시면 됩니다. 알고리즘 생성/수정 후 실행하기 버튼을 누르시면 실행됩니다.
프로그램 다운로드 시 sum과 plus1, minus1 알고리즘이 자동 생성되며, 이는 출제된 문제의 알고리즘과 같습니다.
알고리즘이나 상태의 이름에는 알파벳과 숫자, _(언더바)만 사용해야 합니다. 한글은 사용할 수 없습니다.
각 명령은 줄로 구분합니다. 빈칸(□)은 b로 입력합니다. 각 줄이 후술할 특정한 키워드로 시작하지 않는다면 일반 명령으로 인식합니다.
코드의 첫 줄에는 startAt {시작할 때의 상태 이름}을 입력해야 합니다.
예시:
startAt foo
(이하 생략)
이 코드는 시작할 때 foo 상태에서 시작합니다.
{조건}->{변경값},{헤더이동방향},{상태이름} 의 형식으로 입력합니다. 0->1,R,a로 예시를 들어 보겠습니다. 이 명령은 현재 격자의 값이 0일 때 현재 격자의 값을 1로 변경하고, 헤더를 오른쪽으로 한 칸 이동하며, 상태를 a로 변경하는 것을 의미합니다. 조건과 변경값에는 0~9와 b만 사용할 수 있습니다. 헤더이동방향에는 L,R(l,r)만 사용할 수 있습니다.
:는 상태를 표시하는 키워드입니다. 예를 들면 :a는 a 상태를, :bar는 bar 상태를 표시합니다. 이 명령 아래에는 그 상태에서 실행할 명령을 입력해야 합니다. 3)의 예시를 참고하세요.