30 개 언어, 248 바이트, 248 / 30 ^ 3 = 0.009185
#|#?15g,@ kkmNmSaIeoe99+{\#/-;n@0ea
#[9!@>.>.eeaww#-1@*"12" L
#{
###
#`{
25
print(4^2 +7)/2
"""
Jo is here.
$'main'MoO OOM
7
>Jo, 30
>X Jo
f::=~27
::=]##}#(prin 29)
print (7/6*24)###;alert 2#-[>+<-----]>-.|#(write(if(= 1/5 .2)26 3))"""
편집 : Beatnik 에서 우선 순위 테스트가 불가능할 수 있으므로 Beatnik이 제거되었습니다.
코드에는 탭이 있으며 (스택 교환으로 인해 엉망이 됨) 줄 바꿈이 있으므로 다음과 xxd
같습니다.
00000000: 237c 233f 3135 672c 4020 2020 0920 2020 #|#?15g,@ .
00000010: 206b 6b6d 4e6d 5361 4965 6f65 3939 2b7b kkmNmSaIeoe99+{
00000020: 5c23 2f2d 3b6e 4030 6561 0a23 5b39 2140 \#/-;n@0ea.#[9!@
00000030: 3e2e 3e2e 6565 6177 7723 2d31 402a 2231 >.>.eeaww#-1@*"1
00000040: 3222 094c 0a23 7b20 090a 2323 230a 2360 2".L.#{ ..###.#`
00000050: 7b0a 3235 0a70 7269 6e74 2834 5e32 202b {.25.print(4^2 +
00000060: 3729 2f32 0a0a 0a22 2222 0a4a 6f20 6973 7)/2...""".Jo is
00000070: 2068 6572 652e 0a24 276d 6169 6e27 4d6f here..$'main'Mo
00000080: 4f20 4f4f 4d0a 2037 0a3e 4a6f 2c20 3330 O OOM. 7.>Jo, 30
00000090: 0a3e 5820 4a6f 0a66 3a3a 3d7e 3237 0a3a .>X Jo.f::=~27.:
000000a0: 3a3d 5d23 237d 2328 7072 696e 2032 3929 :=]##}#(prin 29)
000000b0: 0a70 7269 6e74 2028 372f 362a 3234 2923 .print (7/6*24)#
000000c0: 2323 3b61 6c65 7274 2032 232d 5b3e 2b3c ##;alert 2#-[>+<
000000d0: 2d2d 2d2d 2d5d 3e2d 2e7c 2328 7772 6974 -----]>-.|#(writ
000000e0: 6528 6966 283d 2031 2f35 202e 3229 3236 e(if(= 1/5 .2)26
000000f0: 2033 2929 2222 220a 3))""".
또는 이 "온라인으로 사용해보십시오!" 코드를 복사하여 붙여 넣을 수 있습니다. 링크 .
이것은 상당히 나쁘지만, 일단 언어가 충분하면 바이트 수는 더 이상 중요하지 않다는 생각을하고 싶었습니다. 여전히 쉽게 추가 할 수있는 언어가 있지만 (예 : Objeck) 현재는 너무 길어서 유용하지 않습니다. 그래도 좋은 언어가 부족하여 지금 여기서 멈출 수 있습니다.
모든 프로그램을 실행하십시오 </dev/null 2>/dev/null
(예 : 비어있는 입력, 억제 된 STDERR).
설명은 매우 길기 때문에 여기에 요약이 있습니다.
No. Lang. Non-esolang? 2D esolang? BF/BF-deriv?
--------------------------------------------------------------------------
1 COW ✓
2 CoffeeScript ✓
3 Common Lisp ✓
4 Retina
5 Befunge-93 ✓
6 Python 2 ✓
7 Rail ✓
8 ETA
9 Prelude
10 Gol><> ✓
11 evil
12 Foo ✓
13 Ruby ✓
14 ><> ✓
15 Brian & Chuck ✓
16 Whitespace
17 3var
18 Axo ✓
19 Labyrinth ✓
20 Starry
21 Fission ✓
22 Brainfuck ✓
23 Julia ✓
24 Lily ✓
25 GolfScript
26 Chicken Scheme ✓
27 Thue
28 Perl 6 ✓
29 Picolisp ✓
30 TRANSCRIPT
COW는 추가 명령을 가진 Brainfuck 파생물이며 그 중 하나는 숫자 출력입니다. 유효하지 않은 것은 무시되므로 실행 된 프로그램은
MoO OOM
셀을 1로 증가시킨 다음 숫자로 인쇄합니다.
CoffeeScript는 다음을 봅니다.
# comments
###
multiline comment
###;alert 2# comment
단순히 경고 2.
(예, 다른 언어 가이 슬롯을 사용하면 더 좋을 것입니다. 그러나이 시점에서 재구성하기에는 너무 게으 릅니다 : P)
커먼 리스프 (clisp)는 다음과 같습니다.
#|
multiline comment
|#(write(if(= 1/5 .2)26 3))"""
1/5
합리적이고 같지 0.2
않으므로 3이 인쇄됩니다. 절차 """
는 구문 오류입니다.
참고 print
출력 커먼 리스프에서 줄 바꿈을 앞과 뒤에 공간을 보인다. 그러나 다행히도 write
Lisp와 Chicken Scheme에서 모두 작동합니다.
제한 사항 : 첫 번째 줄부터 시작하여 두 번째 줄은 모두 유효한 정규식이어야합니다.
모든 라인 쌍은 대체 단계를 형성하여 첫 번째 라인의 정규 표현식과 일치하는 인스턴스를 두 번째 라인으로 대체합니다. 중간에, 우리는 쌍이
"" "
초기 빈 문자열을로 바꿉니다 """
. 쌍의 일부가 아닌 마지막 빈 줄은 정규식 일치 횟수를 계산하여 일치 단계로 처리됩니다. 빈 문자열 인스턴스 4가에있다 """
, 즉, 1"2"3"4
.
Befunge는 2D 언어이며 관련 지침은
# # 15g,@
첫 번째 줄과의 5
에서 25
라인. #
다음 명령어를 건너 15g
위치에서 문자를 취득 (1, 5)
코드 ((가)에서 5
에서 25
행) ,
숯을 출력하고, @
정지.
파이썬은 본다 :
# comments
25
print(4^2 +7)/2
"""
multiline string
"""
(4^2+7)/2 = (xor(4,2)+7)/2 = (6+7)/2 = 13/2 = 6
을 얻습니다 print
.
Rail은 2D 언어이며 실행 $
은 주요 기능 에서 시작하여 남동쪽으로 향합니다. 따라서 코드의 관련 부분은
$'main'
7
o
J
와 o
및 J
TRANSCRIPT에서 사용하는 선에서 오는. 7을 출력 한 후, 열차는 인식 할 수없는 J
명령에 부딪쳐 프로그램과 충돌합니다.
제한 사항 도입 : ETA 프로그램 앞의 문자는에 없어야합니다 etaoinsh
.
ETA는 글자 etaoinsh
와 대문자 만 인식하므로 코드는
NSaIeoe
n...e
위해가되는 구분 기호 내에서 무엇을 기준으로 기본 칠 수 못살게 굴지 SaI
이다 624
, 또는 10 진수 312. o
그런 다음 modulo 256 이후에 char로 출력하여 char 8
(코드 포인트 56)을 제공합니다. e
그런 다음 빈 스택으로 나누려고 시도하면 실패합니다.
제한 사항 소개 : 한 번에 열을 읽는 것과 일치 ()
하는 열 중 하나만 있으면 ()
됩니다 ()
. 에 의해 무한 루프가 발생하지 않습니다 .
이를 위해서는 Python 인터프리터가 NUMERIC_OUTPUT = True
설정 되어 있어야 합니다.
Prelude는 각 줄이 개별적으로 실행되는 언어입니다. 많은 문자가 실행되지만 중요한 부분은
9!
()
Prelude에서 9를 출력하는 두 번째 줄에서 루프를 나타내지 만 #
s (스택 에서 튀어 나옴)의 중요성으로 인해 스택의 맨 위는 루프에 도달 할 때마다 항상 0이므로 실행됩니다. ()
그래도 Prelude의 소스 코드 제한으로 인해 불필요한 공간이 생겼습니다.
이 부분 (및> <>)은 Martin의 답변 처럼 작동 합니다. 관련 코드는
# ;n@0ea
Gol> <>은 2D 언어이며 #
IP를 반영하여 왼쪽으로 이동합니다. 그것은 감싸고 10, 14 및 0을 스택에 밀어 넣습니다. @
그런 다음 스택을 회전시켜 10을 맨 위로 가져 와서 n
출력 ;
하고 프로그램을 정지시킵니다.
이 부분은 Martin의 대답과 비슷합니다.
악은 소문자를 제외한 모든 것을 무시합니다. 더 많은 문자를 무시하고 관련 부분은
aeeeaeeaww
여기서 a
변수를 증가 A
, e
의 비트 셔플의 악 직조 함수 A
및 w
출력한다 A
. 따라서 우리는 1
두 번 출력 하여을 제공 11
합니다.
그러나 나머지 지침, 특히 w
마지막 줄 의 지침 은 어떻습니까? 때로는 코드를 엉망으로 만드는 것이 가장 쉬운 방법이라고 가정 해 봅시다. 여기서 어떻게 든 작동합니다 ...
Foo는 큰 따옴표 사이에 아무 것도 출력하므로 관련 부분은
"12"
두 번째 줄에. 그러나 나중에 큰 따옴표가 필요하므로 Martin의 답변과 유사한 방법을 사용하여 Foo 오류를 만듭니다 #-1@
. 왜 빈 스택과 0 오류로 나눌 때 군인들이 사용하는 언어로 작동하는지는 확실하지 않지만, 기쁘다.
파이썬처럼 루비는 다음을 본다 :
# comments
25
print(4^2 +7)/2
"""
multiline string
"""
그러나, 여러 줄 문자열이 실제로 세 개의 분리 된 문자열이라고 지적 가치 ( ""
, "..."
, ""
) 함께 연결된. 2 (4^2+7) = xor(4,2)+7 = 6+7 = 13
로 나누려고하면 오류가 발생하기 전에 인쇄 라인이 출력 nil
됩니다.
이 부분은 Gol> <> 부분과 동일 @
하지만 14를 맨 위로 가져 오면 출력됩니다.
Brian & Chuck은 두 개의 테이프를 가진 BF 파생물이며, 한 테이프의 명령 포인터는 다른 테이프의 메모리 포인터입니다. 이 없으면 ```
소스 코드의 처음 두 줄이 테이프를 초기화하는 데 사용됩니다.
처음 두 줄의 관련 문자는 다음과 같습니다.
?15
# >.>.
?
브라이언의 테이프에 셀을합니다 (지적되고에서 척에 대한 제어를 통과 #
제로가 아닌). 그런 다음 Chuck가 실행되어 >.>.
물음표 다음에 두 문자를 출력합니다.
사용하여 STL
각각 공백, 탭 및 줄 바꿈에 대한, 프로그램의 시작이다 :
SSSTSSSSL
TL
STL
L
L
첫 번째 줄은 16 ( +10000
베이스 2)을 누르고 앞의 줄은 TLST
숫자로 인쇄합니다. 다음 세 줄은 프로그램을 중단시킵니다.
그러나이 프로그램은 인터프리터마다 다릅니다. 대부분의 인터프리터에서 나머지 코드 구문 오류는 위에 링크 된 것과 같이보다 관대 한 인터프리터가 필요합니다.
첫 번째 줄에서 많은 명령이 실행되지만 관련 명령은
kkmmao#/
ETA의 제한으로 인해 k
변수 B a
를 증가 시키기보다는 감소시키기 위해 사용 합니다. kk
B를 -2로 감소시키고 mm
B를 2에서 16으로 감소 시키며을 사용 하여 17로 증가합니다 a
. 그런 다음가로 출력됩니다 o
.
#
그런 다음 B를 0으로 재설정하는 데 사용되며 0으로 /
나누면 프로그램이 오류가 발생합니다.
제한 사항 도입 : Axo 프로그램 이전에는 IP 방향을 변경하는 지침이 없습니다.
다시 한번, 많은 명령이 첫 번째 줄에서 실행되지만 관련 명령은
# # 15 ,@ 9 9 + { \
Axo는 Befunge와 같은 2D 언어 #
이며 스택의 맨 위가 0 인 경우에만 다음 명령을 건너 뛰는 브리지입니다. 15,
스택으로 밀어 넣으십시오. 그러나 스택은로 비워집니다 @
. 99+
그런 다음 18을 {
누르고 출력을 \
멈 춥니 다.
미로는 또 다른 2D 언어이며 실행 지침은
#|#
[9!@
#
처음으로 0 인 스택의 길이를 푸시합니다. |
이 시점에서 스택에 0이 있으므로 두 번째는 비트 단위 OR이며 아무것도 변경하지 않으며 두 번째는 #
이제 혼자 0으로 인해 1을 푸시합니다. 우리는 1에 오른쪽으로 인해 설정 9
이 1로 변환 1*10+9 = 19
, !
그것을 인쇄하고 @
중지합니다.
이 프로그램은 [
현재 인식되지 않은 명령 에 의존 하므로 벽으로 취급됩니다.
제한 사항 도입 : 모든 +
공간에는 하나 이상의 선행 공간이 있어야합니다.
인식 할 수없는 문자를 제거하면 코드의 관련 부분은
, +.. +
,
입력하지만, 파이프 /dev/null
가 없기 때문에 0을 스택으로 밀어 넣습니다. +
와 n >= 5
선행 스페이스 가압 n-5
하므로 다음 명령어 2. 푸시 ..
역순이 두 숫자를 출력한다.
다음으로 +
앞에 하나의 공백이 있고, 중복됩니다. 그러나 스택이 비어 있으므로 오류가 발생합니다.
핵분열과 관련된 유일한 부분은
*"12"L
L
왼쪽으로 움직이는 원자를 생성하고 "21"
21을 인쇄하고 *
정지합니다.
도입 된 제한 사항 :.
첫 번째 이전에 아니오[
이를 위해서는 EOF에 0을 제공하고 8 비트 셀이있는 인터프리터가 필요합니다. 관련 코드는
,+-[>.>.-+.>,>]-[>+<-----]>-..
초기 값 -
은을 오프셋하고 셀이 0이므로 +
첫 번째 [...]
는 실행되지 않습니다. 다음 -[>+<-----]>-
은 셀을 문자 코드의 2
로 설정하고 ..
두 번 출력합니다.
줄리아가 본다 :
# comments
25
print(4^2 +7)/2
인쇄 된 것은 4^2+7 = pow(4,2)+7 = 16+7 = 23
이고 프로그램 오류 nothing
는 2 로 나누려고 시도 합니다. Julia는 나머지 코드가 구문 오류를 일으킬 것이라는 사실을 염두에 두지 않습니다.
릴리가 본다 :
# comment
#[
multiline comment
]## comment
print (7/6*24)# comment
7/6*24 = 1*24 = 24
인쇄됩니다.
GolfScript는 다음을 본다 :
# comments
25
print(
GolfScript는 스택 기반이므로 스택에 25를 넣고을 사용하여 팝 인쇄합니다 print
. (
그런 다음 스택에서 암시 적 빈 문자열을 줄이려고하면 프로그램이 실패하고 오류가 발생합니다.
Chicken Scheme에는 #| ... |#
Common Lisp 와 동일한 여러 줄 주석 구문이 있습니다. 그러나
(write(if(= 1/5 .2)26 3))
1/5
플로트이다 이다 같음 0.2
때문에 26 대신에 출력된다.
Thue는 문자열 재 작성을 기반으로하는 언어입니다. 첫 번째 관련 부분은
f::=~27
::=
대체 f -> 27
를 정의한 다음 로 대체 의 끝을 나타냅니다 ::=
. 혼자 f
인은 if
다음으로 치환 27
출력된다.
Perl 6에는 새로운 주석 구문이 있습니다. 즉 #`(some bracket)
, 일치하는 대괄호까지 여러 줄 주석입니다. 따라서 Perl 6은 다음을 참조합니다.
# comments
#`{
multiline comment
}# comment
print (7/6*24)# comment
인쇄합니다 7/6*24 = 28
.
Picolisp는 다음을 본다 :
# comment
#{
multiline comment
}#(prin 29)
이 줄은 이후에 구문 오류를 일으 킵니다.
TRANSCRIPT는 텍스트 어드벤처를 모델로 한 주제별 esolang입니다. 인식 할 수없는 행은 무시되므로 (실제 코드 명령어 사이에 추가 스토리 / 맛 텍스트를 추가 할 수 있음) 관련 행은 다음과 같습니다.
Jo is here.
>Jo, 30
>X Jo
첫 번째 줄은 한 Jo
글자 이름이 실패한 것처럼 보이기 때문에 두 글자 이름을 사용하여 string 변수를 선언합니다 . 두 번째 줄은이 문자열을로 설정 하고 세 번째 줄에서 ( "검사")로 "30"
출력됩니다 X
.
2.7.1
됩니다2.7.n
. (사실, sweerpotato는 주요 버전 만한다.)