다용도 정수 프린터


93

최소한 세 가지 다른 언어로 실행 가능한 코드를 작성하십시오. 코드는 1언어 번호 1, 2언어 번호 2, 3언어 번호 3 등 의 정수 를 출력해야합니다 .

규칙 :

  • 출력은 정수 여야하지만 후행 줄 바꿈은 정상입니다.
  • 코드는 어떤 종류의 입력도 할 수 없습니다
  • 동일한 언어의 다른 주요 버전은 고유 한 것으로 간주됩니다. 따라서 Python 2 및 Python 3에서 코드를 실행할 수 있지만 Python 2.5 및 Python 2.7은 고유하지 않습니다.
  • esolang / wiki 기사, 사용 가능한 통역사 및 문서가 있고이 과제에서 PPCG를 사용하기 전에 최소 2 명의 사용자가 사용한 경우에만 새 언어를 사용할 수 있습니다. 또한 이 4 가지 규칙을 준수해야합니다 .

제출 점수는 코드의 바이트 수를 큐브로 실행할 수있는 언어 수로 나눈 값입니다. 따라서 3 개 언어로 실행 가능한 54 바이트 솔루션의 점수는 2입니다.

54 / 3^3 = 2  

낮은 점수가 좋습니다.


리더 보드


6
@muddyfish 코드 내에서 부 버전을 가져올 수 있습니다. 그러면 모든 사용자에게 무료 솔루션이 제공 2.7.1됩니다 2.7.n. (사실, sweerpotato는 주요 버전 만한다.)
마틴 청산

14
P : 나는 언어로 어쩌면 짧은 솔루션은 여기에 ... 이해가되지 않습니다 생각
FryAmTheEggman

3
@Mego 나도 아니기 때문에 다른 사람들이 그 문제를 알 수 있도록 문제에 대한 비꼬는 말을 남깁니다 .P
FryAmTheEggman

12
나는 당신의 점수가 얼마나 균형 잡힌 지 축하합니다. 코드 챌린지가 두 개의 수량을 하나의 점수로 혼합 할 때, 잔고는 거의 항상 떨어져있어 최상의 답변은 다른 하나를 전혀 고려하지 않고 하나의 점수 만 최적화합니다. 언어의 수의 세제곱 무게는 여기에 완벽했습니다 ... 언제나 다른 언어를 추가하는 것이 가능했지만 사용 가능한 바이트 수로 그렇게하는 것은 항상 좋은 (그러나 가능한) 도전이었습니다. :)
Martin Ender

20
에서 이 PPCG 도전 우리는 협조적 수개 국어를 구축했습니다. 이제이 과제에 제출 된 주요 항목보다이 과제에 대해 더 나은 점수를 얻었지만 지속적으로 개선되고있는 그룹 노력을 모방하는 것은 의미가 없으므로 여기서 의견에 언급을 남기고 있습니다.

답변:


90

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

1. 코우

COW는 추가 명령을 가진 Brainfuck 파생물이며 그 중 하나는 숫자 출력입니다. 유효하지 않은 것은 무시되므로 실행 된 프로그램은

MoO OOM

셀을 1로 증가시킨 다음 숫자로 인쇄합니다.

2. CoffeeScript (통역사 포함)

CoffeeScript는 다음을 봅니다.

# comments
###
multiline comment
###;alert 2# comment

단순히 경고 2.

(예, 다른 언어 가이 슬롯을 사용하면 더 좋을 것입니다. 그러나이 시점에서 재구성하기에는 너무 게으 릅니다 : P)

3. 공통 리스프 | 이데온

커먼 리스프 (clisp)는 다음과 같습니다.

#|
multiline comment
|#(write(if(= 1/5 .2)26 3))"""

1/5합리적이고 같지 0.2않으므로 3이 인쇄됩니다. 절차 """는 구문 오류입니다.

참고 print출력 커먼 리스프에서 줄 바꿈을 앞과 뒤에 공간을 보인다. 그러나 다행히도 writeLisp와 Chicken Scheme에서 모두 작동합니다.

4. 망막 | 온라인으로 사용해보십시오!

제한 사항 : 첫 번째 줄부터 시작하여 두 번째 줄은 모두 유효한 정규식이어야합니다.

모든 라인 쌍은 대체 단계를 형성하여 첫 번째 라인의 정규 표현식과 일치하는 인스턴스를 두 번째 라인으로 대체합니다. 중간에, 우리는 쌍이

"" "

초기 빈 문자열을로 바꿉니다 """. 쌍의 일부가 아닌 마지막 빈 줄은 정규식 일치 횟수를 계산하여 일치 단계로 처리됩니다. 빈 문자열 인스턴스 4가에있다 """, 즉, 1"2"3"4.

5. Befunge-93 | 통역사

Befunge는 2D 언어이며 관련 지침은

# # 15g,@

첫 번째 줄과의 5에서 25라인. #다음 명령어를 건너 15g위치에서 문자를 취득 (1, 5)코드 ((가)에서 5에서 25행) ,숯을 출력하고, @정지.

6. 파이썬 2 | 이데온

파이썬은 본다 :

# 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.

7. 레일 | 온라인으로 사용해보십시오!

Rail은 2D 언어이며 실행 $은 주요 기능 에서 시작하여 남동쪽으로 향합니다. 따라서 코드의 관련 부분은

$'main'
 7
  o
   J

oJTRANSCRIPT에서 사용하는 선에서 오는. 7을 출력 한 후, 열차는 인식 할 수없는 J명령에 부딪쳐 프로그램과 충돌합니다.

8. 도착 일 | 온라인으로 사용해보십시오!

제한 사항 도입 : ETA 프로그램 앞의 문자는에 없어야합니다 etaoinsh.

ETA는 글자 etaoinsh와 대문자 만 인식하므로 코드는

NSaIeoe

n...e위해가되는 구분 기호 내에서 무엇을 기준으로 기본 칠 수 못살게 굴지 SaI이다 624, 또는 10 진수 312. o그런 다음 modulo 256 이후에 char로 출력하여 char 8(코드 포인트 56)을 제공합니다. e그런 다음 빈 스택으로 나누려고 시도하면 실패합니다.

9. 전주곡 | 온라인으로 사용해보십시오!

제한 사항 소개 : 한 번에 열을 읽는 것과 일치 ()하는 열 중 하나만 있으면 ()됩니다 (). 에 의해 무한 루프가 발생하지 않습니다 .

이를 위해서는 Python 인터프리터가 NUMERIC_OUTPUT = True설정 되어 있어야 합니다.

Prelude는 각 줄이 개별적으로 실행되는 언어입니다. 많은 문자가 실행되지만 중요한 부분은

9!

()Prelude에서 9를 출력하는 두 번째 줄에서 루프를 나타내지 만 #s (스택 에서 튀어 나옴)의 중요성으로 인해 스택의 맨 위는 루프에 도달 할 때마다 항상 0이므로 실행됩니다. ()그래도 Prelude의 소스 코드 제한으로 인해 불필요한 공간이 생겼습니다.

10. 골> <> | 통역사

이 부분 (및> <>)은 Martin의 답변 처럼 작동 합니다. 관련 코드는

#                                      ;n@0ea

Gol> <>은 2D 언어이며 #IP를 반영하여 왼쪽으로 이동합니다. 그것은 감싸고 10, 14 및 0을 스택에 밀어 넣습니다. @그런 다음 스택을 회전시켜 10을 맨 위로 가져 와서 n출력 ;하고 프로그램을 정지시킵니다.

11. | 온라인으로 사용해보십시오!

이 부분은 Martin의 대답과 비슷합니다.

악은 소문자를 제외한 모든 것을 무시합니다. 더 많은 문자를 무시하고 관련 부분은

aeeeaeeaww

여기서 a변수를 증가 A, e의 비트 셔플의 악 직조 함수 Aw출력한다 A. 따라서 우리는 1두 번 출력 하여을 제공 11합니다.

그러나 나머지 지침, 특히 w마지막 줄 의 지침 은 어떻습니까? 때로는 코드를 엉망으로 만드는 것이 가장 쉬운 방법이라고 가정 해 봅시다. 여기서 어떻게 든 작동합니다 ...

12. | 온라인으로 사용해보십시오!

Foo는 큰 따옴표 사이에 아무 것도 출력하므로 관련 부분은

"12"

두 번째 줄에. 그러나 나중에 큰 따옴표가 필요하므로 Martin의 답변과 유사한 방법을 사용하여 Foo 오류를 만듭니다 #-1@. 왜 빈 스택과 0 오류로 나눌 때 군인들이 사용하는 언어로 작동하는지는 확실하지 않지만, 기쁘다.

13. 루비 | 이데온

파이썬처럼 루비는 다음을 본다 :

# comments
25
print(4^2 +7)/2


"""
multiline string
"""

그러나, 여러 줄 문자열이 실제로 세 개의 분리 된 문자열이라고 지적 가치 ( "", "...", "") 함께 연결된. 2 (4^2+7) = xor(4,2)+7 = 6+7 = 13로 나누려고하면 오류가 발생하기 전에 인쇄 라인이 출력 nil됩니다.

14. > <> | 온라인으로 사용해보십시오!

이 부분은 Gol> <> 부분과 동일 @하지만 14를 맨 위로 가져 오면 출력됩니다.

15. 브라이언 & 척 | 온라인으로 사용해보십시오!

Brian & Chuck은 두 개의 테이프를 가진 BF 파생물이며, 한 테이프의 명령 포인터는 다른 테이프의 메모리 포인터입니다. 이 없으면 ```소스 코드의 처음 두 줄이 테이프를 초기화하는 데 사용됩니다.

처음 두 줄의 관련 문자는 다음과 같습니다.

   ?15
#     >.>.

?브라이언의 테이프에 셀을합니다 (지적되고에서 척에 대한 제어를 통과 #제로가 아닌). 그런 다음 Chuck가 실행되어 >.>.물음표 다음에 두 문자를 출력합니다.

16. 공백 | 통역사

사용하여 STL각각 공백, 탭 및 줄 바꿈에 대한, 프로그램의 시작이다 :

SSSTSSSSL
TL
STL
L
L

첫 번째 줄은 16 ( +10000베이스 2)을 누르고 앞의 줄은 TLST숫자로 인쇄합니다. 다음 세 줄은 프로그램을 중단시킵니다.

그러나이 프로그램은 인터프리터마다 다릅니다. 대부분의 인터프리터에서 나머지 코드 구문 오류는 위에 링크 된 것과 같이보다 관대 한 인터프리터가 필요합니다.

17. 3var | 온라인으로 사용해보십시오!

첫 번째 줄에서 많은 명령이 실행되지만 관련 명령은

kkmmao#/

ETA의 제한으로 인해 k변수 B a를 증가 시키기보다는 감소시키기 위해 사용 합니다. kkB를 -2로 감소시키고 mmB를 2에서 16으로 감소 시키며을 사용 하여 17로 증가합니다 a. 그런 다음가로 출력됩니다 o.

#그런 다음 B를 0으로 재설정하는 데 사용되며 0으로 /나누면 프로그램이 오류가 발생합니다.

18. Axo | 온라인으로 사용해보십시오!

제한 사항 도입 : Axo 프로그램 이전에는 IP 방향을 변경하는 지침이 없습니다.

다시 한번, 많은 명령이 첫 번째 줄에서 실행되지만 관련 명령은

# # 15 ,@            9 9  + {   \

Axo는 Befunge와 같은 2D 언어 #이며 스택의 맨 위가 0 인 경우에만 다음 명령을 건너 뛰는 브리지입니다. 15,스택으로 밀어 넣으십시오. 그러나 스택은로 비워집니다 @. 99+그런 다음 18을 {누르고 출력을 \멈 춥니 다.

19. 미로 | 온라인으로 사용해보십시오!

미로는 또 다른 2D 언어이며 실행 지침은

#|#
 [9!@

#처음으로 0 인 스택의 길이를 푸시합니다. |이 시점에서 스택에 0이 있으므로 두 번째는 비트 단위 OR이며 아무것도 변경하지 않으며 두 번째는 #이제 혼자 0으로 인해 1을 푸시합니다. 우리는 1에 오른쪽으로 인해 설정 9이 1로 변환 1*10+9 = 19, !그것을 인쇄하고 @중지합니다.

이 프로그램은 [현재 인식되지 않은 명령 에 의존 하므로 벽으로 취급됩니다.

20. 별이 빛나는 | 온라인으로 사용해보십시오!

제한 사항 도입 : 모든 +공간에는 하나 이상의 선행 공간이 있어야합니다.

인식 할 수없는 문자를 제거하면 코드의 관련 부분은

,       +.. +

,입력하지만, 파이프 /dev/null가 없기 때문에 0을 스택으로 밀어 넣습니다. +n >= 5선행 스페이스 가압 n-5하므로 다음 명령어 2. 푸시 ..역순이 두 숫자를 출력한다.

다음으로 +앞에 하나의 공백이 있고, 중복됩니다. 그러나 스택이 비어 있으므로 오류가 발생합니다.

21. 핵분열 | 온라인으로 사용해보십시오!

핵분열과 관련된 유일한 부분은

*"12"L

L왼쪽으로 움직이는 원자를 생성하고 "21"21을 인쇄하고 *정지합니다.

22. Brainfuck | 온라인으로 사용해보십시오!

도입 된 제한 사항 :. 첫 번째 이전에 아니오[

이를 위해서는 EOF에 0을 제공하고 8 비트 셀이있는 인터프리터가 필요합니다. 관련 코드는

,+-[>.>.-+.>,>]-[>+<-----]>-..

초기 값 -은을 오프셋하고 셀이 0이므로 +첫 번째 [...]는 실행되지 않습니다. 다음 -[>+<-----]>-은 셀을 문자 코드의 2로 설정하고 ..두 번 출력합니다.

23. 줄리아 | 온라인으로 사용해보십시오!

줄리아가 본다 :

# comments
25
print(4^2 +7)/2

인쇄 된 것은 4^2+7 = pow(4,2)+7 = 16+7 = 23이고 프로그램 오류 nothing는 2 로 나누려고 시도 합니다. Julia는 나머지 코드가 구문 오류를 일으킬 것이라는 사실을 염두에 두지 않습니다.

24. 릴리 | 통역사

릴리가 본다 :

# comment
#[
multiline comment
]## comment
print (7/6*24)# comment

7/6*24 = 1*24 = 24 인쇄됩니다.

25. GolfScript | 온라인으로 사용해보십시오!

GolfScript는 다음을 본다 :

# comments
25
print(

GolfScript는 스택 기반이므로 스택에 25를 넣고을 사용하여 팝 인쇄합니다 print. (그런 다음 스택에서 암시 적 빈 문자열을 줄이려고하면 프로그램이 실패하고 오류가 발생합니다.

26. 치킨 제도 | 이데온

Chicken Scheme에는 #| ... |#Common Lisp 와 동일한 여러 줄 주석 구문이 있습니다. 그러나

(write(if(= 1/5 .2)26 3))

1/5플로트이다 이다 같음 0.2때문에 26 대신에 출력된다.

27 Thue | 온라인으로 사용해보십시오!

Thue는 문자열 재 작성을 기반으로하는 언어입니다. 첫 번째 관련 부분은

f::=~27
::=

대체 f -> 27를 정의한 다음 로 대체 의 끝을 나타냅니다 ::=. 혼자 f인은 if다음으로 치환 27출력된다.

28. 펄 6 | 이데온

Perl 6에는 새로운 주석 구문이 있습니다. 즉 #`(some bracket), 일치하는 대괄호까지 여러 줄 주석입니다. 따라서 Perl 6은 다음을 참조합니다.

# comments
#`{
multiline comment
}# comment
print (7/6*24)# comment

인쇄합니다 7/6*24 = 28.

29. 피콜 리프 | 이데온

Picolisp는 다음을 본다 :

# comment
#{
multiline comment
}#(prin 29)

이 줄은 이후에 구문 오류를 일으 킵니다.

30. 전사 | 온라인으로 사용해보십시오!

TRANSCRIPT는 텍스트 어드벤처를 모델로 한 주제별 esolang입니다. 인식 할 수없는 행은 무시되므로 (실제 코드 명령어 사이에 추가 스토리 / 맛 텍스트를 추가 할 수 있음) 관련 행은 다음과 같습니다.

Jo is here.
>Jo, 30
>X Jo

첫 번째 줄은 한 Jo글자 이름이 실패한 것처럼 보이기 때문에 두 글자 이름을 사용하여 string 변수를 선언합니다 . 두 번째 줄은이 문자열을로 설정 하고 세 번째 줄에서 ( "검사")로 "30"출력됩니다 X.


12
Daaaaaaaaaang ...
AdmBorkBork

9
나는 이것이 모든 질문에서 0이 아닌 최저 점수 일 수 있다고 생각합니다.
Morgan Thrapp

이건 굉장해. 나는 겁이 난다.
Nic Hartley

2
* 긍정적으로, 보너스와 함께 짧은 답변에 대한 몇 가지 부정적인 점수가 있습니다.
CalculatorFeline

미래에 대한 팁 : pre마크 다운 스타일 코드 블록을 사용하는 대신 태그로 코드를 둘러싸면 탭이 엉망이되지 않습니다 .
Jakob

148

15 개 언어, 68 66 65 바이트 / 15 ^ 3 = 0.019 ...

Retina , Starry , Prelude , ETA , Axo , Labyrinth , Hexagony , Foo , Brian & Chuck , Gol> <> , evil , Whitespace , Fission , > <> GolfScript .

대규모 재 작성 후 4 개 언어를 더 사용할 수있었습니다. 이 코드에는 공백에 대한 몇 가지 탭이 포함되어 있습니다. 스택 교환은 공백으로 변환하기 때문에 \t다음과 같이 표현했습니다 .

#I5aeeNTH{\?      \t\t + +3;n@"8"ea9
15}7'`--~!@<"31"LSOe.\t
 \teaww`

언어를 추가 한 것으로 생각합니다 (하나만 추가하면 이미 가지고있는 바이트가 절약 될 수 있습니다). 그래도 골프를 칠 수 있는지 궁금합니다 ... 15 개 언어의 65 바이트는 11 개 언어의 32 바이트에서 상당히 뛰어 났으며 이제 Foo가 작동하도록 적어도 하나의 쓸모없는 문자가 있습니다.

망막 인쇄 1

온라인으로 사용해보십시오.

다행히 첫 번째 줄은 유효한 정규식입니다. 그러나 그 정규 표현식은 분명히 빈 입력과 일치하지 않으므로 첫 번째 단계 (처음 두 줄로 구성)는 아무것도하지 않습니다.

세 번째 줄은 자체적으로 실행되므로 기본적으로 일치 횟수를 계산하는 일치 단계로 처리됩니다. 그러나 `는 앞에있는 부분이 구성 문자열 (여기에 제공된 옵션 중 어느 것도 알 수 없음)이고 그 이후의 부분이 정규 표현식임을 Retina에 알려주는 구분 기호입니다. 따라서 정규 표현식이 비어 있고 Retina는 정확히 하나의 일치 항목을 찾습니다.

별이 빛나는 지문 2

온라인으로 사용해보십시오.

별표는 공백과를 제외한 모든 것을 무시합니다 +*,'`.. 각 명령은 마지막 문자 이후 공백과 함께 해당 문자 중 하나입니다. 따라서 외부 코드를 모두 제거해 봅시다 :

       + +'`. `

7 개의 공백 다음에 +a 를 밀어 넣습니다 2. 하나의 공백 다음에 +중복됩니다. '조건부 점프입니다. 스택의 맨 위에 표시되며, 이는 진실 (긍정적)이므로 해당 레이블로 이동합니다 (여기서 레이블이 표시되고 `"해당"은 "같은 수의 선행 공백이 있음"을 의미 함) `. 첫 번째 입니다. .앞에 공백이 없으면 스택 상단을 숫자로 인쇄합니다.

전주 인쇄 3

온라인으로 사용해보십시오.

이것은 숫자 출력을 사용하는 Python 인터프리터를 가정합니다. 모든 op-ops를 제거합시다 :

# 5        ?         + +3    8   9
15 7  -- !   31

첫 번째 음성은 많은 작업을 수행하지만 !결과를 인쇄 할 필요가 없으므로 아무 것도 중요하지 않습니다 . 두 번째 음성은 a 1, a 5, a를 누릅니다 7. 우리가 얻을 수있는 마지막 두의 차이를 가지고 -2, 다음에서 해당 빼기 1얻을 수를 3. !인쇄합니다. 세 번째 목소리에는 아무런 조작이 없습니다.

ETA 인쇄 4

온라인으로 사용해보십시오.

ETA는 문자를 제외한 모든 것을 무시합니다 ETAOINSH(어쨌든). 따라서 ETA가 보는 코드는 다음과 같습니다.

IaeeNTHneaSOeea

I입력을 읽으려고하지만 읽을 수 없으므로를 누릅니다 -1. a현재 행 번호에 1을 더 2합니다. edivmod입니다 . 이것은 0and로 대체됩니다 1(또는 -1실제로는 모르겠지만 중요하지 않습니다). 다음 e은 둘 다로 바꿉니다 0.

이제 흥미로운 부분입니다. NTHne기본 7 숫자 리터럴입니다. N그리고 e단지 구분 기호, 그리고 세 자리 숫자입니다 THN. 즉 54(단 T자리이고 1, H이다 0하고 n있다 5). 한 번 더 a밀어냅니다 2. S결과를 감산 52하고 O문자로 출력한다 ( 4). 이제 edivmod를 다시 시도하지만 스택에 두 개의 0이 포함되어 있으므로 프로그램이 오류와 함께 종료됩니다 (그러나 STDOUT을 오염 시키지는 않습니다).

액소 프린트 5

온라인으로 사용해보십시오.

이 언어는 재 작성에 대해 거의 한 손으로 책임졌다. }Axo에서 입력을 차단하기 때문에 첫 번째 줄을 가질 수 없었 습니다 (내가 말하는 것에 대한 개정 내역 참조). Axo의 경우이 코드 부분 만 관련이 있습니다.

#I5aeeNTH{\

운 좋게도 Axo는 0스택 맨 아래에 묵시적 을 가지고 있습니다. 스택 #의 맨 위를 튀어 나와서 (다음 명령을 건너 뛸지 여부를 확인하기 위해). 편지는 모두 노프입니다. 그런 다음 5a 5{누르고 인쇄 \하고 프로그램을 종료합니다. 정말 간단합니다.

미로 지문 6

온라인으로 사용해보십시오.

오른쪽 절반에 도달하지 않았기 때문에 코드를 약간 잘라 내고 t대신 대신 사용 \t하여 열이 올바르게 정렬되도록했습니다.

#I5aeeNTH{\
15}7'`--~!@
 teaww`

이제 문자, 공백 및 탭이 Labyrinth의 벽이므로 액세스 가능한 코드는 실제로 다음과 같습니다.

# 5      {\
15}7'`--~!@
      `

명령 포인터는 자동으로 해당 경로를 따릅니다. #메인 스택의 깊이 ( 0)를 밀어서 15로 바꿉니다 15. }보조 스택으로 옮기고 더 이상 사용하지 않습니다. 이렇게하면 스택의 상단이 0이되어 IP가 왼쪽으로 바뀌지 않습니다 5. 7에 제로 전환 7, 'a는 어떤 조합입니다. 는 `단항 부정, 그래서 우리가 얻을 -7. 이제 그것을 만드는 암시 적에서 -빼기 . 이번에는 IP가으로 우회 하여 단항 부정이므로 다시 가져 옵니다. IP가 교착 상태에 빠졌습니다. 는 이전과 같은 일을한다, 그래서 우리는 수-707`7-7한 번 더. 스택의 상단이 양수이므로 IP가 올바르게 바뀝니다. 다시 -주는 또 다른 것이 있습니다 -7. 그런 다음 ~비트 NOT이 주어 6지고 !인쇄합니다. 이제 스택이 다시 비워 져서 IP가 왼쪽으로 회전하지 {않고 대신 @프로그램을 종료하는 직진으로 계속 진행 되기 때문에 이는 올바른 순간 입니다.

헥사 고니 프린트 7

온라인으로 사용해보십시오.

펼쳐진 코드는 다음과 같습니다.

     # I 5 a e
    e N T H { \
   ? + + 3 ; n @
  " 8 " e a 9 1 5
 } 7 ' - - ~ ! @ <
  " 3 1 " L S O e
   . e a w w . .
    . . . . . .
     . . . . .

일반적으로, 그것은 끔찍한 Hexagony 프로그램이지만 실제로 사용중인 캐릭터는 너무 많지 않습니다. 사실 그들은 거의 미로에 의해 사용 된 것과 동일합니다 그리고 내가 구별 방법 생각 5하고 6아주 좋은입니다. :)

맨 위 행은 기본적으로 무시할 수 있습니다. #일반적으로 다른 IP로 전환하지만 현재 메모리 에지는 0입니다. 문자는 고정 메모리 값을 설정하지만 사용하지는 않습니다. 첫 번째 행이 끝나면 제어 흐름이 가운데 행에서 계속됩니다 (로부터 시작하여 }오른쪽으로 이동). }다른 메모리 에지까지 이동한다. 7그 가장자리를로 설정합니다 7. '우리가 어디에서 왔는지 사용하지 않은 메모리 에지 ( ) 에서 -방금 설정 한 메모리 에지를 빼면 을 얻습니다 . 다음 은 다시 동일한 작업을 수행하므로 작동하지 않습니다. 지금까지는 Labyrinth와 매우 유사합니다 (메모리 레이아웃 제외). 그러나 지금70-7-~Hexagony에서는 비트 단위가 아니라 단항 부정입니다. 따라서 이것은 7대신에 제공 합니다 6. !@Labyrinth에서와 같이 값을 인쇄하고 프로그램을 종료합니다.

푸 프린트 8

온라인으로 사용해보십시오.

프로그래밍 언어 퀴즈 인쇄 이후 대부분의 코드가 임의의 문자 혼란이라도 Foo에서는 사소한 문제입니다. "8"인쇄물을 제외한 모든 문자는 출력에 영향을 미치지 않습니다 8. 음, "31"나중이 있지만 Foo는 첫 번째 줄의 끝에서 오류와 함께 종료됩니다. 왜 그런 일이 일어나는지 잘 모르겠지만 3맨 윗줄에 다른 숫자가 필요하지 않습니다.

브라이언 & 척 프린트 9

온라인으로 사용해보십시오.

세 번째 줄을 제거하고 (구문 분석되지 않은)이를 다시 수행하고 관련이없는 모든 문자 (예 : no-ops 또는 읽지 않는 셀)를 공백으로 바꿉니다.

         { ?         + +         9
  }   --   <        .

각 라인은 Brainfuck과 유사하며 테이프는 다른 프로그램의 소스 코드입니다. 제어 흐름은 첫 번째 줄 (Brian이라고 함)에서 시작됩니다.

{왼쪽 끝까지 이동 테이프 헤드 (이미 임) ?손 척 (두 번째 행)을 통해 흐름 제어. 거기 }에서 테이프 셀이 제로 셀을 찾을 때까지 오른쪽으로 이동합니다. 이는 프로그램이 끝날 때까지 발생하지 않으므로 테이프 헤드는 9. -그 세포를 감소 시키지만 그것은 관련이 없습니다. <테이프에 헤드를 이동 9하고 .그것을 출력한다. 척에 프로그램이 부족하고 종료됩니다.

골> <> 인쇄 10

여기서 테스트했습니다.

#는 미러이므로 IP는 즉시 첫 번째 줄의 끝으로 건너 뜁니다 (왼쪽으로 이동). 는 9무시할 수 있습니다. a가압 10, e가압 14, "8"의 문자 코드를 밀어 8, @상위 세 개의 스택 엘리먼트를 회전 (최대 인상 10하는 등) n를 출력 10하고 ;프로그램을 종료한다.

(바이트를 절약) @대신 사용을 제안한 Sp3000에 감사합니다 !.

사악한 지문 11

한 자리 숫자를 생성하기 위해 무차별 강제 명령 목록을 보내 주신 Sp3000에게 감사합니다.

온라인으로 사용해보십시오.

악은 소문자를 제외한 모든 것을 무시하므로 코드는 다음과 같습니다.

aeeneaeeaww

또한 n우리가 신경 쓰지 않는 상태 에 영향을 미치므로 무시하십시오. 이제 a레지스터를 증가시키고 (에서 시작 0), e특정 방식으로 비트를 변경하는 악의 마법의 "직조"연산입니다. 의 문자 코드 인 aeeeaeea값을 산출합니다 . 두 번 인쇄합니다.491ww

공백 인쇄 12

온라인으로 사용해보십시오.

자, 우리는 공백이 공백, 탭 및 줄 바꿈만을 읽는다는 것을 알고 있습니다. 공백으로 보이는 코드를 다음과 같이 작성하십시오 STL:

SSSSSSTTSSLTLST

그것은 두 가지 명령입니다.

SSSSSSTTSSL
TLST

첫 번째는 숫자를 푸시합니다 12. 특히 SS숫자 리터럴을 시작합니다. 다음 S은 부호 비트 (양수)입니다. 그런 다음까지의 모든 L것은 숫자의 이진 표현입니다. Starry에 필요한 많은 선행 0이 있지만 숫자에는 영향을 미치지 않습니다. 그런 다음 TTSSs는 12이진입니다. 재미있는 사실 : 16 번째 언어를 추가하면 Starry S가의 이진 표현에서 4 를 사용할 수 있기 때문에 여기에서 바이트를 절약 할 수 있습니다 16. 그래도 나는 의심 할 것이다 ...

TLST단지 숫자로 스택의 상단을 인쇄합니다. ( TL명령을 I / O 명령으로 표시하고 ST숫자를 인쇄합니다.)

핵분열 지문 13

온라인으로 사용해보십시오.

핵분열은이 코드 부분 만 볼 수 있습니다.

           <"31"L

L왼쪽 원자로 제어 흐름을 시작합니다. "인쇄 모드를 토글하여 인쇄 31만합니다 13. 그런 다음 원자는의 웨지에 캡처되어 <프로그램을 종료합니다.

> <> 인쇄 14

여기서 테스트했습니다.

> <>와 Gol> <>을 구별하는 것은 생각만큼 쉽지 않습니다. 왜냐하면 Gol> <>은 거의 항상 둘 다에 존재하는 명령과 Gol에만 존재하는 명령에 대해> <>와 같은 역할을하기 때문입니다. < > >> 충돌을 일으 킵니다. 그러나, @이 하향 가압되도록> <있는 다른 방식 라운드> 회전 7까지 인상하는 대신 10, 다음이 14아닌 인쇄 된 얻는다 10.

GolfScript 인쇄 15

온라인으로 사용해보십시오.

이것은 가장 간단합니다. #첫 번째 줄을 주석 처리하십시오. 그런 다음 15스스로를 밀어 붙이고 }"슈퍼 코멘트"는 프로그램의 나머지 전체를 무시합니다. 따라서 15프로그램이 끝날 때 인쇄됩니다.


34
정말 인상적입니다!
sweerpotato

1
@YassinHajaj 감사합니다.
마틴 엔더

2
나이스 15 개 언어를위한 훌륭한 직업!
ev3commander

1
@SnoringFrog 글쎄, 당신은 간다.
Martin Ender

1
@Eumel 감사하지만 현상금은 설명에 나와있는 "일반"언어를위한 것이기 때문에 현상금은 Sp3000의 매우 훌륭한 솔루션과 같은 답변으로 가야합니다. 어쨌든 이것으로부터 충분한 담당자가 있다고 생각합니다. ;)
Martin Ender

42

Python 1.x, 2.x 및 3.x, 32 바이트 / 3 ^ 3 = 1.1851 ...

import sys
print(sys.version[0])

1Python 1.x, 2Python 2.x 및 3Python 3.x 에있는 버전의 첫 번째 숫자를 인쇄합니다 .

우리가 파이썬 9.x를 얻을 때까지 내 점수는 영광입니다 0.04389!

: ~)!


10
채팅에서 : 그렇습니다. 이것은 싸고 유효합니다. =) 이것은 메이저 버전 만 충분히 독창적 인 것으로 여겨지는 이유의 일부입니다. 나는 얼마나 많은 파이썬 버전이 있는지 모르지만 아마도 이런 식으로 점수를 낮게 얻을 수 있습니다 ... 실제로 일어나고있는 것을 이해하는 몇 가지 솔루션 중 하나이므로 +1; )
Stewie Griffin

6
파이썬 10.x에서 (존재하는 경우) 1문자열 "10.whatever"의 첫 문자이기 때문에 인쇄되지 않습니까?
ev3commander

1
@ ev3commander 그러나이 제출물은 python10에서 올바른 출력을 생성하도록 지정되지 않았습니다.
Tyzoid December

결정된! 미래 보장 버전으로 작업하지만 Python 1.x는 다른 사용자만큼 사용자 친화적이지 않습니다 : ~)!
sweerpotato

1
내가해야 할 일은 세 가지 주요 버전이있는 언어를 만드는 것입니다. 이 세 가지 주요 버전에서 빈 파일을 실행하면 주요 버전 번호가 반환됩니다. 결과는 0 / 3 ^ 3 = 0 완벽입니다.
Braden Steffaniak

32

3 개 언어, 2 바이트 / 27 = 0.074

1P

글쎄, 그것은 적어도 제출의 절반을 이겼다 : P

1. GolfScript

GolfScript는를 무시하고 P단지 1을 출력 합니다 .

2.

P2의 거듭 제곱 1P = 2^1 = 2입니다. 온라인으로 사용해보십시오 .

3. 진지하게

Pn 번째 소수를 제공하고 인덱스는 0입니다. 두 번째 프라임이므로 3을 얻습니다. 온라인으로 사용해보십시오 .


노트

내 초기 목표는 1 바이트에서 유효한 답변을 찾는 것이 었습니다. 내 첫 번째 시도는 Bubblegumgs2\x12 에서 작동 했지만 도전에는 최소 3 개의 언어가 필요합니다. 1을 출력하는 언어가 있으면 작동합니다.\x13

1 바이트 답변을 포기하면서 2 바이트로 옮겼습니다. Japt 에서 3u1을, GolfScript 에서 3을, 심각하게 4를 출력하는 친밀한 호출 이지만, 간격을 메우기 위해 2를 출력 한 언어를 찾기가 어려웠습니다.

이 모든 것이 너무 오래 걸렸습니다 : /


20

6 개 언어-44 바이트 / 6 ^ 3 = 0.204 ...

10 바이트를 절약 한 SnoringFrog에 감사드립니다!

다음에서 작동합니다.

  • 펀지
  • 피스
  • Brainfuck
  • 헥사 고니
  • 공백
  • 애니 라드 v0.2

2# "1",@"-[----->+<]>.*@@@!4<SSTST
T
ST
 >6=

참고 : 온라인으로 시도하기 전에 S를 공백으로 바꾸고 T를 탭으로 바꾸거나 다음 16 진수 덤프를 ASCII로 변환하십시오.

32 23 20 22 31 22 2c 40 22 2d 5b 2d 2d 2d 2d 2d 3e 2b 3c 5d 3e 2e 2a 40 40 40 21 34 3c 20 20 09 20 09 0d 0a 09 0d 0a 20 09 0d 0a 20 3e 36 3d

더 많은 프로그래밍 언어를 사용하려고합니다. :)

펀지 (인쇄 1) :

온라인으로 사용해보십시오

2# "1",@"-[----->+<]>.*@@@!4<
2                             # This puts 2 onto the stack
 #                            # Skips the next op (the space)
   "1"                        # Sets the ASCII value of 1 onto the stack
      ,                       # Pop the last item (1)
       @                      # Terminate program

Pyth (인쇄 2) :

온라인으로 사용해보십시오

2# "1",@"-[----->+<]>.*@@@!4<
2                             # Prints 2
 #                            # Infinite while loop until an error occurs
   "1"                        # String
      ,@                      # This gives the error and terminates the program

Brainfuck (인쇄 3) :

온라인으로 사용해보십시오

2# "1",@"-[----->+<]>.*@@@!4<
2# "1",@"                     # Since these are not brainfuck ops, these will be ignored
         -[----->+<]>         # Puts "3" on the stack
                     .        # Prints the last item (3)     

헥사 고니 (인쇄 4) :

온라인으로 사용해보십시오

2# "1",@"-[----->+<]>.*@@@!4<   

더 읽기 쉬운 버전 :

   2 # " 1       # The steps:
  " , @ " -      # 1 (2) - Hexagony starts at the top-left of the hexagon
 [ - - - - -     #       - This immediately puts 2 onto the stack
> + < ] > . *    # 2 (#) - Since the stack is 2, this makes the 2nd pointer the 
 @ @ @ ! 4 <     #       - new current pointer
  > 6 = . .      # 3 (*) - The position of the 2nd pointer is in the left-most
   . . . .       #       - position. This sets the stack to the product
                         - of the two neighbours which is zero
                 # 4 (<) - Changes the pointer direction to west
                 # 5 (4) - Sets the stack to 4
                 # 6 (!) - Outputs the decimal 4
                 # 7 (@) - Terminates the program

공백 (인쇄 5) :

온라인으로 사용해보십시오

다른 문자는 무시하지만 공백과 탭은 무시하므로 다음과 같이 남겨집니다.

SSTST                 # This pushes 5 onto the stack
T                     # 
ST                    # This prints the decimal

AniRad 버전 0.2 (인쇄 6) :

어떻게 든 버전 0.2에서는 작동하지만 버전 0.4에서는 오류가 발생합니다. 이유가 없습니다. 여기서 0.2 버전을 찾을 수 있습니다 . 이를 실행하려면 인터프리터의 코드를 복사하여 붙여 넣어 repl.it 및 실행할 수 있습니다. 그 후에는 프로그램을 STDIN에 붙여 넣기 만하면됩니다.

2# "1",@"-[----->+<]>.*@@@!4<      # (#)  Starts at the hashtag (starting point)
                                   #      Direction is down
                                   # (>)  When the pointer gets to the '>', it changes
 >6=                               #      its direction
                                   # (6) Puts 6 onto the stack 
                                   # (=) Pushes the result and terminates

1
더 많은 언어가 확실히 갈 길이라고 생각합니다 ... 3 차 분모는 정말 관대하므로 5 개 또는 6 개 언어가 있으면 내 점수를이기는 것이 너무 어렵지 않아야합니다.
마틴 엔더

@ MartinBüttner, 예, 나는 새로운 언어를 추가하는 방법을 볼 수 있지만
아드 난

2
@Martin 예, 관대합니다. 큐빅 분모의 요점은 더 많은 언어를 강력하게 장려하는 것이 었습니다. 50 바이트의 6 개 언어는 30 바이트의 5 개 언어와 같은 가치가 있다고 생각합니다. :-) 사용하는 언어가 많을수록 확실히 어려워집니다.
Stewie Griffin

공백 코드가 약간 줄어들 수 있습니다 (다른 언어에는 영향을 미치지 않을 것이라고 생각합니다. L은 줄 바꿈에 사용) . SSSSSSSSSSTTSTSTLTLSS지금 대신 할 수 있습니다 SSSTSTLTLST. 스택 한 다음 정수로 인쇄합니다.
SnoringFrog

@SnoringFrog 감사합니다! 내가 편집했습니다
Adnan

14

6 7 개 언어, 32 37 바이트, 점수 0.148 ... 37/7 3 ≈ 0.107872 ...

#7+!"@\"6.@;n5
print(4--int(-3/2)#"
)

Brainfuck-ng

+현재 셀을 증가 시키고 !정수로 인쇄하고 @종료합니다. #그리고 "NOP를이다.

파이썬 2

첫 번째 줄은 주석입니다. 정수 나누기를 사용 4 - -int(-3 / 2) = 4 - -int(-2) = 4 - -(-2) = 4 - 2 = 2하여 결과를 계산 하고 인쇄합니다.

파이썬 3

이전과 동일하지만 float 나누기입니다. 4 - -int(-3 / 2) = 4 - -int(-1.5) = 4 - -(-1) = 4 - 1 = 3.

루아

--주석을 시작 #하고 첫 번째 줄에 주석이 있으므로 기본적으로 print(4).

> <>

#IP를 반영하고, 55를 n누르고, 숫자를 인쇄하고 ;종료합니다.

펀지

#오버 스킵 +, !논리적으로, 스택의 상단 부정 "@\"문자열 푸시 @\, 66 밀어 .번호를 출력하고 @종료된다.

피스

#무한 루프를 시작하여 오류를 제거합니다. 7prints 7, then follows +!"string")는 기본적으로 두 개의 피연산자가 없어서 오류가 발생 +하여 프로그램을 종료합니다.


13

JavaC ++ C, 363/27 = 13.4 ....

Java는 1을, C ++은 2를, C는 3을 인쇄합니다. (Java 때문에) 여기에서 어떤 기록도 깨뜨리지 않지만, 제가 찾은 언어로 폴리 글 로트를 만드는 영리하고 모욕적 인 방법을 정말 좋아합니다.

//\u000a/*
#include<stdio.h>
#ifdef __cplusplus
#define o "2"
#else
#define o "3"
#endif
int p(int a){printf(o);}
struct{int(*print)(int);}out;
//*/
/*\u002a/
import static java.lang.System.out;
public class P{//*/
/*\u002a/public static void//*/
main(/*\u002a/String[] args//*/
){//\u000a/*
out.print=p;
//\u002a/
out.print(1);}
/*\u002a/}//*/

이것은 엉망입니다. 작동 방식에 대한 분석은 다음과 같습니다. 유니 코드 리터럴 ( \u000a, 라인 피드라고도하고 \u002a,이라고도 함 *)은 Java 컴파일러에 의해 실제 문자로 확장됩니다. Java 컴파일러에서 볼 수있는 내용은 다음과 같습니다.

//
/*
#include<stdio.h>
#ifdef __cplusplus
#define o "2"
#else
#define o "3"
#endif
int p(int a){printf(o);}
struct{int(*print)(int);}out;
//*/
/**/
import static java.lang.System.out;
public class P{//*/
/**/public static void//*/
main(/**/String[] args//*/
){//
/*
out.print=p;
//*/
out.print(1);}
/**/}//*/

처음에 나오는 내용은 모두 여러 줄 주석으로 묶여 있기 때문에 무시됩니다 ( /* ... */). 나중에 한 줄 주석과 여러 줄 주석을 혼합하면 각 언어에서 어떤 부분을 주석으로 처리할지 정확하게 제어 할 수 있습니다. 기본 방법에서는 여러 줄 주석을 시작한 다음을 갖습니다 //*/. 일반적으로 이것은 한 줄 주석이지만, 우리는 여러 줄 주석으로되어 //있기 때문에 아무것도하지 않으므로 */닫을 수 있습니다.

주석이 제거 된 동등한 Java 코드입니다.

import static java.lang.System.out;
public class P{
public static void
main(String[] args
){
out.print(1);}
}

다음은 C / C ++ 컴파일러가 보는 것입니다 (유니 코드 리터럴은 컴파일러에 의해 확장되지 않았으므로 아무것도하지 않기 때문에 제거했습니다).

///*
#include<stdio.h>
#ifdef __cplusplus
#define o "2"
#else
#define o "3"
#endif
int p(int a){printf(o);}
struct{int(*print)(int);}out;
//*/
/*/
import static java.lang.System.out;
public class P{//*/
/*/public static void//*/
main(/*/String[] args//*/
){//\/*
out.print=p;
///
out.print(1);}
/*/}//*/

여기서 한 줄 주석은 처음에 여러 줄 주석 구분 기호를 무시하므로 모든 #defines 및 #includeget이 사전 처리됩니다. 다음으로 여러 줄 주석을 사용하여 Java 용 boiletplate 코드를 주석 처리합니다. 이것은 주석이 제거 된 동등한 코드입니다.

#include<stdio.h>
#ifdef __cplusplus
#define o "2"
#else
#define o "3"
#endif
int p(int a){printf(o);}
struct{int(*print)(int);}out;
main(
){
out.print=p;
out.print(1);}

표준 C / C ++ 폴리 글롯 트릭 ( #ifdef __cplusplus)은 토큰 o을 코드를 컴파일하는 C ++ 또는 C 컴파일러 "2"인지 "3"에 따라 또는 로 토큰을 정의하는 데 사용됩니다 . 다음으로 새로 정의 된 토큰을 사용하여 p단일 (무시) int인수를 사용하고를 호출 하는 함수 를 정의합니다 . 평상시와 같이 반환 모드는 엄격 모드가 아니기 때문에 제외됩니다. 다음으로, 서명이 일치하는 함수 포인터 인 단일 멤버로를 정의하고 이라는 단일 인스턴스를 구성합니다 . 주요 방법 (우리 는 평소 와 같이 벗어남)에서 주소 가 (따라서 calls )에 할당되고 호출됩니다.printfostructpoutintpout.printout.printp

C ++가 언어에 포함되지 않은 경우 모든 전 처리기 코드를 삭제하고로 정의 할 수 p있습니다 int p(int a){puts("2");}. 불행히도 C ++ #include은 I / O를해야합니다. C가 포함되어 있지 않으면 정의 p#ifdef전 처리기 매크로를 삭제하고 struct함수 포인터 대신 멤버 함수를 직접 정의 할 수 있습니다. 불행히도 C는 멤버 함수를 지원하지 않습니다.


12

4 개 언어, 28 바이트 / 64 = 0.4375

print((0 and 3^1or 1/2>0)+1)

1. 파이썬 2

0허위이고 /정수 나누기이므로

(0 and 3^1 or 1/2 > 0) + 1 = (1/2 > 0) + 1 = (0 > 0) + 1 = False + 1 = 1

2. Perl (Python 3)

0거짓이고 /플로트 분할이므로

(0 and 3^1 or 1/2 > 0) + 1 = (1/2 > 0) + 1 = (0.5 > 0) + 1 = 1 + 1 = 2

3. 루비

0진실하고 ^비트 xor이므로

(0 and 3^1 or 1/2 > 0) + 1 = xor(3,1) + 1 = 2 + 1 = 3

4. 루아

0진실하고 ^지수입니다.

(0 and 3^1 or 1/2 > 0) + 1 = pow(3,1) + 1 = 3 + 1 = 4

Lua와 Ruby는 부울을 정수처럼 추가 할 수 없으므로 그룹화됩니다. 불행히도 0and루아에서는 작동하지 않으므로 바이트를 저장할 수 없습니다.


1 (Lua), 2 (Ruby), 3 (Python / Perl)을 인쇄하는 이전 17 바이트 버전 :

print(2^(0 or 1))

이 버전의 @xnor 덕분에 -3 바이트 덕분에 훨씬 깔끔해졌습니다. :)


시겠습니까 2^(0 or 1)일?
xnor

@ xnor 아 네, 감사합니다 :)
Sp3000

8

BFSRS> <> funge93thon123, 73/343 ≈ 0.212827 ...

Brainfuck, 진심으로 ,> <>, Befunge-93, Python 1, Python 2, Python 3

# 4['.]@kX21z-[>+<-----]>--.<;n3
import sys;print(3+int(sys.version[0]))

인쇄 할 수없는 hexdump (가역 xxd -ps -r)를 포함합니다.

2320345b272e5d406b5832317a7f2d5b3e2b3c2d2d2d2d2d5d3e2d2d2e3c
3b6e330a696d706f7274207379733b7072696e7428332b696e7428737973
2e76657273696f6e5b305d2929

시간이 지남에 따라 더 많은 언어 (그리고 아마도 바이트)를 추가 할 것입니다. 머리글의 언어는 인쇄 순서대로 나열됩니다. 8 비트 랩핑 셀과 Brainfuck의 초기 위치 (랩핑 또는 무한)에서 벗어나는 것에 대해 불평하지 않는 테이프를 가정합니다.

Brainfuck :

[.]   initial value of first cell is 0, so loop is skipped
-[>+<-----]>--  push 49 (ASCII ordinal of 1)
.     print "1"
<     move to blank cell
[0]   skip loop because cell is 0
      everything else is ignored

진지하게 :

# 4['.]@  does some stuff we don't care about
kX        pop entire stack, push as list, discard (essentially the same as é, but is ASCII so we can use Python)
2         push 2
1z        pop 1 item from stack and print (used instead of . so Brainfuck doesn't print here; same as ü in this scenario, but is ASCII so we can use Python)
0x7f      terminate program
          everything else is ignored

><>:

#    mirror, reverse direction
3n;  push 3, print "3", end (reversed because IP is scanning RTL at this point)
     everything else is ignored

Befunge-93 :

#     jump over the space
4['.] push 4, print 4 (brackets and ' do nothing)
@     end program
      everything else is ignored

파이썬 1 (진딧물 덕분) :

# 4['.]@kX21z-[>+<-----]>--.<;n3         comment; ignored
import sys;print(4+int(sys.version[0]))  prints 4+1=5

파이썬 2 :

# 4['.]@kX21z-[>+<-----]>--.<;n3         comment; ignored
import sys;print(4+int(sys.version[0]))  prints 4+2=6

파이썬 3 :

# 4['.]@kX21z-[>+<-----]>--.<;n3         comment; ignored
import sys;print(4+int(sys.version[0]))  prints 4+3=7

파이썬 1도 작동합니다. codegolf.stackexchange.com/a/65652/32686을 참조하십시오 . 어떤 문자를 추가 (하지만 변경하지 않습니다 34)
블루

8

14 개 언어, 73 바이트, 점수 = (73 / 14 ^ 3) = 0.02660349854

#Y2(3`5n~thneo e        ;n@0d c
#   -[>+<"9"L-----]>+.
14  
print(int(15/2))+3

더 많은 언어를 추가 할 수 있지만 여기에있는 것을 추가 할 것입니다.

1. 브레인 볼 ; 온라인으로 사용해보십시오!

관련 코드 :

    [>+<         ]>+.

               + 

이것은 실제로 단지 +.+1입니다.

2. Jolf ; 여기 사용해보십시오!

(relavent 코드는 그래서 문자는 소스 코드를 해석 중지 :

#Y2

이것은 (JavaScript에서)와 같습니다.

var Y = []; toHex(Y); alert(2);

어떤 출력 2.

3. 요소; 온라인으로 사용해보십시오!

관련 코드 :

    3`

캡처 3하여 인쇄합니다.

4. Brainfuck ; 온라인으로 사용해보십시오!

관련 코드는 다음과 같습니다

-[>+<    -----]>+.

  -    -      + 

4의 문자 코드를 생성하고 출력하는 표준 방법이며 그 뒤에 다른 것들이 있습니다.

5. Reng; 여기 사용해보십시오!

~ 프로그램을 종료하므로 관련 코드는 다음과 같습니다.

#Y2(3`5n~

#Y이 경우 TOS로 재정의 합니다 0. 2푸시 2; (스택에서 N을 터뜨리면서 스택을 N 번 회전시킵니다. 3`푸시 -3; 마지막으로를 5n인쇄합니다 5.

ETA; 온라인으로 사용해보십시오!

ETA는 문자 E, T, A, O, I, N, S, H 만 읽으므로 실행되는 코드는 다음과 같습니다.

       n thneo e         n     


  int int          

초 관련 코드 :

       n thneo

또는, 동등 : nthne o. n...e기본 7 리터럴이며 thn54의 기본 7 숫자입니다 o.이 문자를 출력합니다. 제출이 잘못되었지만 이유를 모르겠습니다.

7. 파이썬 3

보이는 것 :

# comment
# comment
14
print(int(15/2))+3

15/2/플로트 분할 과 마찬가지로 7.5를 산출합니다 . int(...)숫자를 int로 만든 다음 인쇄됩니다. +3발생 하면 프로그램 오류 가 발생합니다.

8. 줄리아

줄리아가 본다 :

# comment
# comment
14
print(int(15/2))+3

Julia는 15/2를 자르지 않고 반올림하여 8을 산출합니다. 이것을 인쇄 한 다음 +3이 발생하면 오류가 발생합니다.

핵분열; 온라인으로 사용해보십시오!

관련 코드 :

        <"9"L         

Martin의 Fission 부분 에서이 아이디어를 얻었습니다 (훔친 것처럼). L왼쪽을 향한 것을 시작하고를 캡처 9하고로 끝납니다 <.

10. 공백; 여기 사용해보십시오!

공백을 S탭으로 변환하는 관련 코드 T:

SSSTSTS
T
ST

10을 스택으로 푸시하고 숫자 ( T\nST) 로 출력합니다 .

11. 파이썬 2

파이썬 2는 이것을 본다 :

# comment
# comment
14
print(int(15/2))+3

(int(15/2))+3 11로 평가되고 인쇄됩니다.

12. 골>; 여기 사용해보십시오!

관련 코드 :

#                      ;n@0d c

이에 사용되는 트릭을 사용 마틴의 대답@ > <>과의 Gol> <>에 서로 다른 방향으로 회전합니다. #미러, c푸시 12, d푸시 13, 0푸시 0 및 스택 상단으로 @가져온 c다음을 사용하여 인쇄 및 인쇄합니다 ;n.

13.> <>; 온라인으로 사용해보십시오!

관련 코드 :

#                      ;n@0d c

다시 사용하면 @> <>와 Gol> <>에서 다른 방향으로 회전합니다. #미러, c푸시 12, d푸시 13, 0푸시 0 및 스택 상단으로 @가져온 d다음을 사용하여 인쇄 및 인쇄합니다 ;n.

14. 골프 스크립트; 온라인으로 사용해보십시오!

보이는 것 :

# comment
# comment
    14
print(-int(-15/2))+3

14, prints 및 오류를 푸시 합니다. Sp3000의 답변에서 영감을받은 도난 .


7

하위 스킨 , Brainfuck 및 Fob 27 바이트 / 3 ^ 3 = 1

0#>&$3#<>$-[----->+<]>-.
31

서브 스킨

0
31

명령 포인터 (여기서는 중요하지 않음)를 설정 0하고 출력 레지스터를로 설정했습니다 31. 출력 레지스터의 내용이 >= 0이면 포함 된 값을로 출력합니다 char. 다른 모든 코드는 무시됩니다.

Brainfuck

-[----->+<]>-.

꽂고 3, 레지스터에 한번 값을 감소 -및 최종적으로 출력한다 ..

본선 인도

#>&$3#<>$

Brainfuck도 Fob 의 <>지침을 읽으므로 조금 더 까다 롭습니다 . 우리는 실행 모드로 들어가서 #Brainfuck의 포인터를 하나씩 증가시켜 나중에 더 쉽게 만들 수 있습니다. 아직 실행할 것이 없으므로 실행되지 않습니다.

을 사용하여 누산기 모드로 $들어가서을 던지고 3실행 모드로 다시 들어가고 누산기 내용을 스택으로 푸시 <하고 마지막으로을 사용하여 내용을 출력합니다 >.

Brainfuck이 프로그램을 망가 뜨리는 것을 방지하기 위해을 사용하여 다시 누적 모드로 들어갑니다 $.


7

7 개 언어, 55 / 7 ^ 3 ≈ 0.16035

PowerShell v1, v2, v3, v4 및 v5, Foo 및 Pyth에서 실행

#7.q"6""
$p=$PSVersionTable;($p.PSVersion.Major,1)[!$p]

숫자 1-5는 sweerpotato의 답변 과 유사한 논리를 사용합니다 . $PSVersionTable특수 변수는 PowerShell을 v2를 도입하고, 전체 빌드 목록, 개정 등 여기에 변수의 예 출력의이 포함되었다 :

PS C:\Tools\Scripts> $PSVersionTable

Name                           Value                                                                                                                           
----                           -----                               
PSVersion                      4.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.34209
BuildVersion                   6.3.9600.17400
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion      2.2

이 코드에서는 먼저 $p코드 길이가 더 짧도록 코드 를 저장합니다 . 그런 다음 변수를 인덱스로 두 항목 배열로 활용하여 존재 여부를 확인합니다.

  • 변수가 존재하지 않으면 PowerShell은 변수를 동적으로 만들어 할당합니다 $NULL.이 !$TRUE, 또는 1배열의 두 번째 요소에 해당하는을 출력 1합니다.
  • (V2 +에서의 경우와 같이) 변수가 존재하는 경우, 그 !변수의 결과 $FALSE0, 버전 번호를 출력하는 첫 번째 요소에 대한 인덱스.

Foo for 6을 사용하면 #PowerShell에서 주석을 활용 하므로 PS 환경에서 주석을 실행할 때 무시됩니다. 그러나 Foo는 기꺼이 번호를 내뱉은 6다음 나머지 프로그램을 진행하지만 아무것도하지 않습니다.

7에 Pyth를 사용하면을 반환 7하고 즉시으로 종료 .q하므로 무한 while-true 루프는 #중요하지 않습니다. 묵시적으로 인쇄 된 것이 남아 있기 때문입니다. 이 추가에 대한 @ FryAmTheEggman 에게 감사합니다 .

편집 - Golfed 바이트 덕분에 소수의 Mauris 편집 -에 Pyth 설명 덕분에 명확히 SP3000을


어때요 $p=$PSVersionTable;($p.PSVersion.Major,1)[!$p]? 그것은 내 Powershell에서 작동하지만 모든 이전 버전에서는 작동하지 않을 수 있습니다.
Lynn

7

7 개 언어, 287 / 7 ^ 3 = 0.836

아마도 가장 낮은 점수를 얻었을 것입니다. 어쨌든 저는이 3 가지 C 폴리 글 로트 버전을 좋아합니다.

최소한 "3 개의 고유 한"언어 현상금을받을 수 있도록 지루한 Python 솔루션을 추가했습니다.

다른 주석 해석에 대해 C trigraph를 남용하여 Java를 추가했습니다.

다음에서 작동합니다.

  • 파이썬 1

  • 파이썬 2

  • 파이썬 3

  • C89

  • C99

  • C ++

  • 자바

골프 버전 :

/*
*??/
/
#include <stdio.h>
#ifndef __cplusplus
#define true 8/*
import sys
print(sys.version[0])
'''
#*??/
/
#endif
int main(){int a=(true>1)?-6:3;printf("%d",(true//*
+a
//**??/
/+2));}
#define a \
'''
/**\u002f
public class p{public static void main(){System.out.println("7");}}
/**/

언 골프 드 :

/*
*??/
/

#include <stdio.h>

#ifndef __cplusplus
#define true 8/*

import sys
print(sys.version[0])
'''
#*??/
/
#endif 

int main()
{
    int a = (true > 1) ? -6 : 3;
    printf ("%d", (true//*
    +a
    //**??/
/
    +2));
}
#define a \
'''

/**\u002f
public class p
{
    public static void main()
    {
        System.out.println("7");
    }
}
/**/

좋아, 이것은 아마 다소 위태로워지고 있고 나는 나의 영어 기술이 그것을 평범하게 설명하기에 충분히 좋기를 바랍니다.

먼저 언어 구조를 각각 캡슐화하는 데 사용한 여러 가지 설명을 설명하겠습니다.

첫 번째 블록을 보자.

/*
*??/
/

Java의 경우 이것은 여러 줄 주석의 시작일뿐입니다. 그러나 ... C99 / 89 / ++에서는 다음과 같이 평가됩니다.

/*
*/

C에서 문자 에 ??/대한 삼중 그래프 이기 때문에 캐릭터는 일관성이 있으며 명령 기능에서 줄 바꿈을 사용합니다. 이로 인해 줄 바꿈 대신에 " 결과 "가 표시됩니다. 즉, 첫 번째 블록을 나타내는이 바이트 배열이 주어지면 [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]는 3 점 평가 후에 수행됩니다. [ ] [ ] [ ] [ ] [ ] [ ] [ ] 일관된 기능의\\\n/*\n*??/\n//*\n*\\n/\ 트리거 트리거되고 "소비"되는 경우 \nC 언어의 나머지 바이트 및 최종 바이트는 다음과 같습니다. [ /] [ *] [ \n] [ *] [ /]

그러나이 모든 자바에 대해서는 아무것도 모르고이 트릭이 되돌릴 때까지 뒤에 오는 모든 것을 주석으로 처리합니다.

(계속)


7

4 개 언어 (Befunge-93, Microscript II, Microscript 및 Foo), 7 / 64 = 0.109

"4"1.@2

Befunge : 4를 누르고 1을 누르고 1을 인쇄 한 다음 종료합니다.

Microscript II : 문자열 "4"를 생성하고, 버리고, 1의 제곱근을 취하여 버리고, 마지막으로 x를 2로 설정합니다. 그런 다음 암시 적으로 인쇄됩니다.

마이크로 스크립트 : 52를 스택으로 밀고 (이는 프로그램의 나머지 부분에는 실제로 사용되지 않음) 레지스터를 1 씩 증가시키고 (초기 0) 레지스터를 2 씩 증가시킵니다. 그런 다음 암시 적으로 인쇄됩니다.

Foo : 문자열 "4"를 인쇄 한 다음 2를 누릅니다.


6

파이썬 1 | 2 | 3, 27 바이트 / 27 = 1

print(len("\xabc")+(1/2>0))

@sweerpotato의 버전 번호 사용으로 파이썬을 덜 구별 할 수 있는지 궁금해했습니다. 내가 찾은 최고는 여기있다.

설명

Python 3을 이전 버전과 구별하기 위해 표준 정수 나누기 대 부동 소수점 나누기 트릭을 사용합니다. (1/2>0) == (0>0)Python 2.3 이전 또는 Python 2.3 이상 False에서 0을 (1/2>0) == (0.5>0)반환하고True 하고 Python 3에 대해 합니다.

파이썬 1을 나머지와 구별하기 위해, 우리는 문자열 길이를 봅니다 "\xabc". 이것은 파이썬 1에서 길이 1이고 파이썬 2에서 길이 2입니다. 왜? 때문에

문자열 리터럴의 \ x 이스케이프는 이제 정확히 2 개의 16 진수를 사용합니다. 이전에는 'x'다음의 모든 16 진수를 소비하고 결과의 가장 낮은 8 비트를 사용하므로 \ x123456은 \ x56과 같습니다.

( Python 2.0의 새로운 기능 )


6

파이썬 3, 루비, 펄, C, C ++, 오브젝티브 -C 202 바이트 / 6 ^ 3 = 0.935 ...

이것은 실제로 꽤 재미 있었고 부울을 가지고 노는 많은 일입니다.

코드를 복사하여 인터프리터에 붙여 넣어 다음 사이트 에서 모든 버전의 코드를 사용할 수 있습니다 .

#include <stdio.h> /*
print ((("0"+"0"==0)and 3) or (0and 2or 1));
__DATA__ = 1
"""""
*/
int main(){putchar(
#ifdef __OBJC__
'6'
#else
#ifdef __cplusplus
'5'
#else
'4'
#endif
#endif
);return 0;}/*
"""
#*/

파이썬 3, 인쇄 1

요령은 다음과 같습니다.

print ((("0"+"0"==0)and 3) or (0and 2or 1));

이것은 인쇄됩니다 1

루비, 지문 2

Ruby의 해석 코드는 다음과 같습니다.

print ((("0"+"0"==0)and 3) or (0and 2or 1));

그래서 이것은 인쇄 2

펄, 프린트 3

Perl에 대한 해석 코드는 다음과 같습니다.

print ((("0"+"0"==0)and 3) or (0and 2or 1));
__DATA__ = 1

우선, __DATA__토큰은 컴파일이 완료되었음을 Perl 컴파일러에 알려줍니다. 이후의 모든 것은 무시됩니다.

print ((("0"+"0"==0)and 3) or (0and 2or 1));

그리고 인쇄 3

C, 인쇄 4

해석 된 코드는 다른 코드와 상당히 다릅니다.

#include <stdio.h>
int main(){putchar(
#ifdef __OBJC__
'6'
#else
#ifdef __cplusplus
'5'
#else
'4'
#endif
#endif
);return 0;}

이것은 단순히 char을 인쇄합니다 4.

C ++, 인쇄 5

C 코드와 동일

이것은 문자를 인쇄합니다 5.

Objective-C, 인쇄 6

C 코드와 동일

이 문자를 인쇄합니다 6.


5

5 개 언어, 18 바이트 / 5 ^ 3 = 0.144

에서 실행 Brainbool , 매쓰 , , > <>비 펀지-93 .

4!<n;+Print@2"3".5

브레인 볼

Brainbool 브레인 퍽은 같지만은 비트에서 동작하고, 입력과 출력이 단독로 구성 0하고 1.

4!<n;+Print@2"3".5
  <                   move the pointer to the left
     +                logic not
                .     print the current cell

매스 매 티카

Mathematica에서 모든 것은 표현이며 가치가 있습니다. Print@2인쇄 2하고 기호를 반환Null . 그 후 코드는 기호 계산을 수행하지만 아무 것도 인쇄하지 않습니다.

"3" 인쇄 3. 다른 부분이 무엇인지 모르겠습니다.

> <>

4!<n;+Print@2"3".5
4                     push 4
 !                    skip the next command
   n                  pop and print it as a number
    ;                 end the program

펀지

4!<n;+Print@2"3".5
4                     push 4
 !                    logical not
  <                   makes the program counter travel to the right
 !                    logical not
4                     push 4
                 5    push 5
                .     pop and print it as a number
             "3"      push the string "3"
            2         push 2
           @          end the program

12 개 언어, 35 바이트 / 12 ^ 3 = 0.0202546 ...

저렴하지만 강력한 sweerpotato의 트릭을 사용합니다 .

에서 실행 Brainbool , 매스 매 티카 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 및 10.0 , > <> .

cn;+"11".Print@Floor@$VersionNumber


5

6 개 언어, 38 / 6 ^ 3 = 0.17592̅5̅9̅

공백 , Brainfuck, Ruby, Labyrinth , Foo, 심각하게

전설:

£: 탭

: 우주

§: 0x7f

puts•2;#4!@•-[>+<-----]>6.§"5"•£    
£
•£

여기에는 인쇄 할 수없는 문자가 포함되어 있으므로 다음은 16 진수 덤프입니다.

7075747320323b23342140202d5b3e2b3c2d2d2d2d2d5d3e362e7f22352220090a090a20090a

설명:

공백

온라인으로 사용해보십시오.(참고 : 내 프로그램은 프로그램을 종료하기 위해 세 줄 바꿈을 생략하고 Whitelips에서 이것을 작성 / 테스트 했으며 적절한 출력을 생성하지만 온라인으로 시도하지는 않으므로 링크 된 프로그램에 두 문자가 추가됩니다. 내가 알 수 있듯이, 일부 통역사는 그렇게 할 수 있습니다. 다른 사람들은 명시 적으로 종료하지 않고 무한 루프에 빠집니다)

(무시 된 문자 생략)

spacespacespacetabenter: 1을 스택에 밀어 넣습니다.

tabenterspacetab: 스택의 상단을 출력

루비

설명 할 필요가 없습니다. 2를 인쇄하고 해당 행의 나머지 (ergo, brainfuck 프로그램)를 주석으로 처리하고 파일의 나머지를 비어있는 것으로 처리합니다.

Brainfuck

온라인으로 사용해보십시오.

언더 플로를 지원하는 인터프리터가 필요합니다. 첫 번째 셀을 255로 언더 플로 한 다음 루프 카운터에 사용하여 51을 생성합니다. 이는 3의 ASCII 코드입니다.

미궁

온라인으로 사용해보십시오.

(가까워지지 않기 때문에 가독성을 위해 마지막 두 줄을 생략)

puts•2;#4!@ -[>+<-----]>6.§"5"•£
puts•                            skipped
     2                           push 2 onto stack
      ;                          pop 2 from stack
       #                         push current stack depth (0) to stack
        4                        push 4 to stack
         !                       print top of stack as integer
          @                      program terminates

온라인으로 사용해보십시오.

출력에 영향을 미치는 유일한 것은 "5"이며 5를 인쇄합니다.

진지하게

온라인으로 사용해보십시오.

puts•2;#4!@ -[>+<-----]>6.§"5"•£
puts•2;#4!@ -[>+<-----]>           assorted stack manipulation that doesn't affect this program
                        6          push 6 to the stack
                         .         output top of the stack
                          §        (0x7f) terminate program

5

5 개 언어, Chaîne , Minkolang , Foo , Brainf ** k-ngVitsy , 21 / 5 ^ 3 = 0.168

2|<«+!@"3".N+m

5N»

Brainf ** k-ng

2|<«+!@"3".N+m

5N»
  <            go left (should still be ok)
    +!         output 1
      @        halt execution

샤인

2|<«+!@"3".N+m

5N»
2              «add 2 to the current string»
 |<            «take off and put on the string (no op)»
   «           «comment»

  »
               «implicit output»

2|<«+!@"3".N+m

5N»
       "3"     print three

민 콜랑

2|<«+!@"3".N+m

5N»
2              C push 2 to the stack [2] C
 |             C mirror C
2              C push 2 to the stack [2,2] C
             m C ignored C
            +  C add top two [4] C
           N   C output C
          .    C terminate program C

비시

2|<«+!@"3".N+m

5N»
2              push 2
 |             mirror
2              push 2
             m pop 2, goto line 2
5              push 5
 N             output 5
  »            ignored

아마> <> 또는 무언가를 추가 할 수 있습니다.


1
알다시피, 나는 거울을 잘 사용하지 못했습니다. xD
Addison Crump

5

Craneflak , Brain-Flak Classic , Rain-Flak , BrainHack , Brain-Flueue , miniflak , miniHack : .1020

(([]()()()<()()()>)()()){}#{}({}())

온라인으로 사용해보십시오!

설명

여기서 가장 먼저 할 일은 BrainHack, CraneFlak 및 Rain-Flak 통역사간에 의견을 읽는 방식에 차이가 있다는 것입니다. Craneflak는 의견이 없으며 Rain-Flak #은 나머지 라인을 #{...}언급하고 BrainHack 은 내부를 언급합니다.

각 언어의 내용은 다음과 같습니다.

Rain-Flak: (([]()()()<()()()>)()()){}         -> 3
BrainHack: (([]()()()<()()()>)()()){}({}())   -> 4
Craneflak: (([]()()()<()()()>)()()){}{}({}()) -> 1

다음은 뇌파와 미니 파의 차이점입니다. Rain-Flak과 BrainHack은 모두 추가 작업이 간단하게 제거되는 미니 플랙을 지원합니다. 이것은 그들이 잃을 것을 의미 []하고<...>

Rain-Flak: (()()()()()())         -> 6
BrainHack: (()()()()()())({}())   -> 7

다음은 Brain-Flak과 Brain-Flak Classic의 차이점입니다. 클래식 []에서-1 대신 우리의 결과는 2하게 정규 비 - 플랙의 1보다 작은 것을 의미 스택 높이로.

마지막으로 우리는 brain-Flak과 brain-flueue의 차이점이 있습니다. 뇌 연도에서는 스택 대신 대기열이 사용됩니다. 일반적으로 brain-flak는 3을 5로 밀고 5를 팝합니다. 그러나 뇌 플루에서 팝은 5가 아닌 3을 제거합니다.


4

은하수 1.0.2 , CJamSTXTRM , 20 바이트 / 3 ^ 3 = 0.741

추가 할 수있는 다른 언어가 하나 이상 있다고 생각합니다.

'2"3""1"1<<1>;;"2"3;

설명


은하수 ,1

은하수에서 문자열은 큰 따옴표 쌍으로 만 표시됩니다. 작은 따옴표는 명령 행에서 입력을 읽습니다. 없는 경우 빈 문자열을 푸시합니다. 보다 크거나 작은 부호는 전체 스택을 각각 오른쪽과 왼쪽으로 회전시킵니다. 마지막으로 세미콜론은 상위 2 개의 스택 요소를 교체합니다.

다음은 스택 시각화입니다 (표시된 스택은 발생한 작업의 결과입니다).

["", 0]                                             #  default stack

["", 0, ""]                                 #   '   #  read input from command line
["", 0, "", 2]                              #   2   #  push 2 to the stack
["", 0, "", 2, "3"]                         #  "3"  #  push "3" to the stack
["", 0, "", 2, "3", "1"]                    #  "1"  #  push "1" to the stack
["", 0, "", 2, "3", "1", 1]                 #   1   #  push 1 to the stack
[0, "", 2, "3", "1", 1, ""]                 #   <   #  rotate the stack leftwards
["", 2, "3", "1", 1, "", 0]                 #   <   #  rotate the stack leftwards
["", 2, "3", "1", 1, "", 0, 1]              #   1   #  push 1 to the stack
[1, "", 2, "3", "1", 1, "", 0]              #   >   #  rotate the stack rightward
[1, "", 2, "3", "1", 1, 0, ""]              #   ;   #  swap the top two stack elements
[1, "", 2, "3", "1", 1, "", 0]              #   ;   #  swap the top two stack elements
[1, "", 2, "3", "1", 1, "", 0, "", 2]       #  "2"  #  push 2 to the stack
[1, "", 2, "3", "1", 1, "", 0, "", 2, "3"]  #   3   #  push "3" to the stack
[1, "", 2, "3", "1", 1, "", 0, "", "3", 2]  #   ;   #  swap the top two stack elements

CJam ,2

CJam에서 문자열도 큰 따옴표 쌍으로 표시됩니다. 작은 따옴표는 다음 문자의 문자 코드를 푸시합니다. 문자 코드가 출력되면 해당 문자로 출력됩니다. 크거나 작음 기호는 예상대로 작동하여 상위 두 스택 요소의 순서를 평가합니다. 마지막으로 세미콜론은 맨 위 스택 요소를 버립니다. 프로그램이 종료되면 스택의 내용이 출력됩니다.

다음은 스택 시각화입니다 (표시된 스택은 발생한 작업의 결과입니다).

[]                         #  default stack

['2]               #  '2   #  push the character code of "2" to the stack
['2, "3"]          #  "3"  #  push "3" to the stack
['2, "3", "1"]     #  "1"  #  push "1" to the stack
['2, "3", "1", 1]  #   1   #  push 1 to the stack
['2, "3", "1"]     #   <   #  leave the greater of the top two stack elements on the stack
['2, 0]            #   <   #  leave the greater of the top two stack elements on the stack
['2, 0, 1]         #   1   #  push 1 to the stack
['2, 1]            #   >   #  leave the lesser of the top two stack elements on the stack
['2]               #   ;   #  pop the top stack value
[]                 #   ;   #  pop the top stack value
['2]               #  "2"  #  push the character code of "2" to the stack
['2, "3"]          #   3   #  push "3" to the stack
['2]               #   ;   #  pop the top stack item

STXTRM ,3

MSM에서 연산자가 아닌 모든 것은 문자로 스택에 푸시됩니다. 세미콜론은 맨 위 스택 요소를 복제합니다. 더 이상 연산자가 없거나 스택에 단일 요소가있을 때까지 프로그램이 계속됩니다.

스택의 마지막 문자는입니다 3. 이는 최종 연산자에 의해 복제됩니다. 3프로그램 끝에서 최상위 요소이므로 출력됩니다.


4

5 개 언어, 18 바이트 / 5 ^ 3 = 0.144

Ouroboros , Pip , QBasic, Foo 및 Pyth

5'"4"()"
1?3'@n()2

1. 우로 보로스

프로그램의 각 줄은 꼬리를 먹는 뱀을 나타냅니다.

뱀 1

푸시 5, '노 조합, 푸시입니다 52(의 ASCII 코드 "4"). (뱀이 숫자를 터 뜨리고 꼬리의 많은 문자를 먹게합니다. 이로 인해 명령 포인터 (및 전체 뱀)가 삼키기 때문에 실행이 중지됩니다.

뱀 2

푸시 1난수를 푸시 ( ?) 푸시 3, 'A는 무 조작 없다. @1스택의 맨 위로 회전하고 스택의 맨 위에 n남겨두고 숫자로 출력합니다 3. 그런 다음 (뱀의 끝 에서이 많은 문자를 먹고 지시 포인터를 삼키고 멈 춥니 다.

당신은 스택 발췌문 인터프리터에서 온라인으로이 프로그램을 실행할 수 있습니다 여기에 .

2. 핍

대부분의 프로그램은 평가되고 폐기되는 표현식으로 구성됩니다.

  • 5
  • '" (문자 리터럴)
  • 4
  • "()"
  • 1?3'@ (삼항식)
  • n (변수, = 개행)
  • () (무)

마지막으로 마지막 표현 인을 2인쇄합니다.

3. QBasic

모든 것은 '주석입니다. 따라서 첫 번째 줄 5은 줄 번호 로 줄어 듭니다 . 두 번째 줄 1에는 줄 번호 ?3가 있으며 바로 가기입니다 PRINT 3.

(행 번호가 잘못된 경우 분명히 문제가되지는 않지만 문제가 해결되지는 않습니다.)

4. 푸

거의 모든 것이 작동하지 않습니다. "4"인쇄합니다 4. 괄호 (x2)는 현재 배열 셀이 0이 될 때까지 실행되는 루프이며, 즉시 적용되며 루프가 종료됩니다. @뒤에 숫자가 없으면 현재 배열 셀의 값 (0으로 초기화 됨)을 가져 와서 스택으로 푸시합니다.

나는 두 번째 불일치 "가 어떻게 처리 될지 확실하지 않습니다 . 온라인 버전 도전의 규칙이 허용 출력에 줄 바꿈을 추가 할 것으로 보인다.

5. 피스

5출력됩니다. 그런 다음 프로그램 '"4"에서라는 파일을 읽으려고합니다 4. 그러한 파일이 없으면 오류로 프로그램을 종료해야한다고 생각합니다. ( 온라인 버전name 'open' is not defined파일을 온라인으로 열 수 없기 때문에 가정합니다.)

"라인 1의 끝에 있는 스트레이 는 라인 2가 실행 전에 구문 오류를 일으키지 않도록합니다.



@Dennis 감사합니다! Esolangs 페이지에는 해당 통역사에 대한 링크가 없습니다.
DLosc

현재 사용 가능한 언어 의 색인 은 다음과 같습니다 . 내가 하나를 추가하고 싶다면 채팅에 핑하십시오.
Dennis

4

4 개 언어, 24 바이트, 24 / 4 ^ 3 = 0.375

print(1//0.5--1+1/2*2
);

1. PHP

print(1);1과 같은 PHP 실행

2. 루아

루아 실행 print(1//0.5); 2

3. 파이썬 2

파이썬 2는 print(1//0.5--1+1/2*2);3과 같은 정수를 실행합니다 (정수 나누기)

4. 파이썬 3

파이썬 3 print(1//0.5--1+1/2*2);은 4와 같은 것을 실행합니다 (float division)


좋은 대답, 나는 전통적인 언어로 대답을 좋아합니다 :-) ppcg에서 즐거운 골프를 즐기기를 바랍니다 :-) 만약 당신이 그들이 흥미 있다고 생각한다면 나의 이전 도전 중 하나를 시도하십시오 :-) 약간 까다 롭고 일부는 더 있습니다 기본 :-)
Stewie Griffin

챌린지에 설명 된 공개 100 개 현상금에 관심이있을 수 있습니다. 기존 언어 만 사용하는 Outgolf Sp3000 (28 바이트, 4 개 언어) (링크에 정의)과 유감스럽게도 파이썬 2와 3은 현상금 도전에서 고유 한 것으로 간주되지 않습니다.
Stewie Griffin

3

Brainfuck-ng, Foo,> <>, 9 바이트 / 3 ^ 3 = 0.333 ...

#+!"2";n3

Brainfuck-ng

그것이 인식하는 유일한 문자는 다음 +!같습니다.

+ Increment cell by one
! Print as integer

인쇄물 1

모든 것을 따옴표로 인쇄합니다.

"2"

인쇄물 2

> <>

#포인트를 왼쪽으로 미러링하고 3 을 스택으로 3푸시 하고 정수로 출력 하고 프로그램을 중지합니다.n;

#      ;n3

2

3 개 언어, 82 83 / 3 ^ 3 = 3.074 ...

??? 에서 작동 , 공백Beatnik . 또는 그 언어로 작동 해야 하지만 며칠 동안 테스트 할 수는 없습니다. 어쨌든, 여기 코드가 있습니다 :

K... Jax... Jy... Jy...   ...
My...    My...
... ...     ......................XO!

1. ???

.................................................!

??? 기본적으로 거칠지 만 일반적인 문자 대신 일반적인 구두점을 명령으로 사용합니다. .현재 메모리 셀을 증가 시키며 49 번 수행됩니다. !현재 메모리 셀을 받아서 여기에 문자로 인쇄합니다 1.

2. 공백

[Space][Space][Space][Tab][Line Feed]
[Tab][Line Feed]
[Space][Tab]

공백은 공백이 아닌 모든 문자를 무시하는 언어입니다. 여기에서는 쉽게 읽을 수있는 형식으로 변환했습니다. 첫 번째 줄은 2스택으로 밀고 두 번째 두 줄은 스택 맨 위를 숫자로 인쇄합니다 (여기) 2.
결합 된 코드에서 기술적 한계로 인해 탭을 4 개의 공백으로 대체했습니다.

3. 비트 닉

K Jax
Jy Jy
My My
XO

Beatnik은 각 단어를 Scrabble 점수로 변환 한 다음 해당 점수를 명령으로 해석하는 언어입니다. 첫 번째 줄은 17스택에 밀어 넣습니다. 두 번째 행은 두 스택의 꼭대기를 복제 및 세 번째 줄 효과적으로 배로 함께 두 스택의 요소 가기를 추가 1751. 마지막 줄은 스택 맨 위에 문자를 인쇄합니다 (여기) 3.
원래 Beatnik 사양에 오류가 없다고 가정하면 Face Value에서 Beatnik을 사용하고 있습니다. 또한 북미 영어 스크래블 스코어링 시스템을 사용하고 있습니다.

지금까지 명확하지 않은 경우, 이러한 각 언어는 특정 유형의 문자 (각각 문장 부호, 공백 및 문자) 만 허용하므로이 폴리 글롯을 작성하는 것은 개별 프로그램을 작성하는 것만 큼 쉽습니다. 유일한 "트릭"은 공백 코드를 사용하여 단어를 Beatnik에서 분리하는 것입니다. 그 외에도 개별 프로그램은 겹치지 않습니다.


2
3 ^ 3 = 27 ==> 82/27 = 3.037037037037037 ...
AdmBorkBork

1
공백 코드는 2가 아닌 0을 인쇄합니다 . 여기여기에서 테스트 되었습니다 .
Dennis

@Dennis 감사합니다. 부호 비트를 생략했습니다.
Mike Bufardeci

2

5 개 언어, 175 / 5 ^ 3 = 1.4

현상금이 첫 번째 답변으로 만족스럽지 않은 방식으로 요구 사항을 변경했기 때문에 다른 답변을 게시하기로 결정했습니다 (그러나 여전히 일반적인 도전 방식으로 나를 만족시킵니다!)

현상금 도전에 적합한 나의 해결책은 다음과 같습니다.

컴파일

  • C99
  • objC90
  • C ++ 0x
  • 루비
#if __cplusplus
#define x\
=begin\
=pod
#endif
int a=
#ifndef x
1//**/
+1
#else
3
#endif
;int main(){printf("%d",a);}
#ifdef f
=end
puts 5;
=begin
=cut
print"4";
=end
#endif

2

3 개 언어, 15 바이트, 0.555 점 ...

나중에 더 많은 언어를 추가 할 예정입니다.

2//1+1#😅😨

1. 이모 노미 콘

Emotinomicon은 문자열이 아닌 텍스트를 거의 무시합니다. 😅1을 😨눌러 TOS 를 스택으로 만들고 숫자로 출력합니다.

2. 자바 스크립트

Javascript의 주석은로 시작 //하므로 2부분 만 실행됩니다.

3. 파이썬 2/3 REPL

파이썬에서 주석은로 시작 #하므로 2//1+1부분 만 실행됩니다. //파이썬 3에서 정수 나누기이며, 파이썬 2에서와 같습니다 /. 2를 1로 나눈 값은 2이고 1은 3입니다.


2

4 개 언어, 97 바이트, 0.37890625

s="1";s=~-3;2//2;'''/.to_s.ord;"=;print 4;
__DATA__
=1;
";#'''#";print=s=>console.log(3)
print(s)

루비

이 설정 s"1"사용하여 비교한다 =~에 대해 -3무효 맥락에서, 분할을 시도 2하여 /2;'''/.to_s.ord다음이 포함 된 새 문자열을 시작 =;print 4; __DATA__ =1;한 후, 댓글 안타 prints계속이다 1.

파이썬

설정 s"1", 다음에 다시 설정 위의 따라 ~-3하는 것입니다 2. 우리의 정수 나눗셈을 실행 2//2한 후 포함하는 문서화 문자열있다, /.to_s.ord;"=;print 4; __DATA__ =1; ";#주석, 마지막으로 다음으로 print보내고 s여전히, 2.

자바 스크립트

설정 s"1"다음에 다시 설정 ~-3한 후 거기에 위의 당 2주석 다음 라인에. 그런 다음 변수 __DATA__를로 설정 했습니다 1. 짧은 문자열이 있고 ;#'''#그 뒤에 print출력을 3으로 하드 코딩하는 함수의 정의가 다음 라인에서 호출됩니다.

할 수있는 대체 상당 실행 s/"1";s/~-3;2\/\/2;'''\/.to_s.ord;"/, printS 4와 문자열의 나머지가 뒤에 마스크 __DATA__식별자.


2

QBasic, QBIC 및> <>, 18 바이트 / 3 ^ 3 개 언어 = 0.66666 점

1:?v+1'-5`
''`>3n;

고장:

1. QBasic ( IDE 가져 오기 )

1:          Line number 1
  ?         Print
   v+1      undefined var v = 0 + 1 = 1
'-5`        The rest of theis code is a QBasic comment
''`>3n;     As is this

2. QBIC ( 통역사 받기 )

1     inserts a 1 in the code - mostly harmless
:     Reads from the cmd line. Nothing there, creates an empty variable a
?     Print
v+1   v is initialised to 6, +1 = 7
'     Code Literal: everything till the ` is passed to QBasic without processing
 -5`  7-5 = 2

''`>3n; Code literal with the first literal being a ': comment in QBasic

3.> <> ( 온라인 시도 )

1:  Push a 1 on the stack, duplicate stack
?   Pop top off the stack and skip next instruction if that's a 0
v   Move downwards - rest of the line is ignored

>   move to the right
3   Push 3 onto the stack
n   Print the top of the stack as a number
;   End the program

1
나는 당신이 당신의 점수에 언어의 수를 큐브하고 싶다고 생각합니다 (즉, 18 / (3 ^ 3))
math junkie

1

자바 스크립트, HTML 및 PHP, 72 바이트 / 3 ^ 3 = 2.67

1<!top?2:2//><!--<?='--'.'><script>document.body.innerHTML=3</script>'?>

HTML에서 이것은 선행 1을 인쇄하고 <!window?2:2//>태그를 무시 하며 나머지는 HTML 주석입니다.

JavaScript에서는 1<!window?2:22를 평가 하고 출력합니다 (콘솔에서 실행해야 함). 나머지는 주석입니다.

PHP에서 1<!top?2:2//><!----><script>document.body.innerHTML=3</script>HTML 은 다음과 같이 서버에서 출력 1됩니다 3.


1
PPCG.SE에 오신 것을 환영합니다! 위대한 첫 번째 게시물! 두 가지 : 우리는 일반적으로 REPL 기반 답변 (자바 스크립트 프로그램)을 좋아하지 않습니다. 또한 온라인 인터프리터에 넣을 때 PHP 코드가 실행되지 않는 것 같습니다 . PHP는 정확히 어떻게 작동합니까?
GamrCorps

감사! 글쎄, 그것은 기술적으로 PHP + HTML입니다 (즉, 이것이 code.php의 소스 코드 인 경우 브라우저에서 site / code.php 를 방문 하면 3이 표시됩니다.
cuniculus

mowbl.com/se.php에서 시도하십시오 .
cuniculus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.