인기있는 웹 코믹 홈 스턱 (Homecomuck) 은 ~ATH
우주를 파괴하기 위해 불리는 프로그래밍 언어를 사용 합니다. 이 코드 골프 도전은 우리의 존재를 전멸시키기위한 프로그램을 작성하는 것이 아니지만 , 좀 더 길들인 (더 흥미롭지는 않지만) 엔티티를 파멸시킬 것입니다 : variables .
~ATH
( "죽음까지"로 발음 됨 ~ath
) "tilde ath"가 어떻게 작동 하는지 알 수 있습니다. 라는 변수를 만들고 THIS
로 명령을 실행 EXECUTE
하고로 프로그램을 마무리하면됩니다 THIS.DIE()
. Homestuck에서 사용되는 언어에 대한 위키 페이지는 여기 에서 찾을 수 있습니다 . 이 도전의 목표는 ~ATH
통역사 를 만드는 것 입니다.
도전을 위해, 나는 ~ATH
실제로 존재하지 않지만 ( 어떤 ) 유용하게 만드는 세부 사항을 만들 것입니다.
- 이 언어는로 선언 된 정수에서만 작동
import <variable name>;
합니다. 변수는 자동으로 0 값으로 설정됩니다. 한 번에 하나의 변수 만 가져올 수 있습니다. - 변수
x
를 작성하여 복사 할 수 있습니다. 그러면 변수bifurcate x[y,z];
가 삭제x
되고 동일한 변수y
및로 대체됩니다z
. 삭제 된 것과 동일한 이름의 변수를 작성할 수 없습니다. 기본적으로 변수의 이름이 바뀌면 다른 이름을 가진 변수의 사본이 작성됩니다. 이 바보 같은 기능처럼 보이지만, 어리 석음입니다 매우 깊이 배어 든 Homestuck에서. - 코드를 실행하는 프로그램을 작성하는 구문
x
은~ATH(x){EXECUTE(<code>)}
입니다. 두 변수에 대해 동시에 코드를 실행하려는 경우 코드는 다음과 같이 중첩됩니다~ATH(x){~ATH(y){EXECUTE(<code>)}}
. 의 모든 명령은 및<code>
에서 모두 실행됩니다 .x
y
- 이제 명령으로 넘어 갑시다.
+
관련 변수를 1 씩 증가시키고 1-
씩 감소시킵니다. 그리고 ... 그게 전부입니다. - 최종 기능은
~ATH
작동하는 모든 것을 죽인다는 것입니다. 변수는<name>=<value>
명령에서 형식 (줄 바꿈) 으로 인쇄됩니다[<name>].DIE();
. 그 후 프로그램DIE <name>
은 변수 값의 절대 값과 같은 횟수로 단어 와 줄 바꿈을 인쇄합니다 . 변수가 동시에 종료되면 (변수가[<name1>,<name2>].DIE();
존재하는 한 원하는만큼 변수를 강제 종료 할 수 있음)DIE()
명령이 변수에서 순차적으로 실행됩니다.
예제 프로그램
프로그램 1 :
import sollux; //calls variable "sollux"
import eridan; //calls variable "eridan"
~ATH(sollux){EXECUTE(--)} //sets the value of "sollux" to -2
~ATH(eridan){EXECUTE(+++++)} //sets the value of "eridan" to 5
[sollux].DIE(); //kills "sollux", prints "DIE sollux" twice
~ATH(eridan){EXECUTE(+)} //sets the value of "eridan" to 6
[eridan].DIE(); //kills "eridan", prints "DIE eridan" 6 times
산출:
sollux=-2
DIE sollux
DIE sollux
eridan=6
DIE eridan
DIE eridan
DIE eridan
DIE eridan
DIE eridan
DIE eridan
프로그램 2 :
import THIS; //calls variable "THIS"
~ATH(THIS){EXECUTE(++++)} //sets the value of "THIS" to 4
bifurcate THIS[THIS1,THIS2]; //deletes "THIS", creates variables "THIS1" and "THIS2" both equal to 4
~ATH(THIS1){EXECUTE(++)} //sets the value of "THIS1" to 6
[THIS1,THIS2].DIE(); //kills "THIS1" and "THIS2", prints "DIE THIS1" 6 times then "DIE THIS2" 4 times
import THAT; //calls variable "THAT"
bifurcate THAT[THESE,THOSE]; //deletes "THAT", creates variables "THESE" and "THOSE"
~ATH(THESE){~ATH(THOSE){EXECUTE(+++)}EXECUTE(++)} //sets the value of "THESE" and "THOSE" to 3, then sets the value of "THESE" to 5
[THESE,THOSE].DIE(); //kills "THESE" and "THOSE", prints "DIE THESE" 5 times then "DIE THOSE" 3 times
산출:
THIS1=6
DIE THIS1
DIE THIS1
DIE THIS1
DIE THIS1
DIE THIS1
DIE THIS1
THIS2=4
DIE THIS2
DIE THIS2
DIE THIS2
DIE THIS2
THESE=5
DIE THESE
DIE THESE
DIE THESE
DIE THESE
DIE THESE
THOSE=3
DIE THOSE
DIE THOSE
DIE THOSE
이것은 코드 골프이므로 표준 규칙이 적용됩니다. 바이트 단위의 최단 코드가 이깁니다.
~ATH
을위한 라인 엔딩으로 세미콜론 사용 import
, bifurcate
및 DIE
명령. REPL과 파일 모두 괜찮습니다. 입력과 출력 모두 대소 문자 감도가 필요합니다 ( ~ATH
가능한 한 실제 와 일치 시키려고 합니다).