폴리 글롯에 언어 추가


239

이는 각 답변이 이전 답변을 바탕으로하는 답변 도전입니다. 게시물이 작성된 순서를 확인하기 위해 스레드를 "가장 오래된 것"으로 정렬하는 것이 좋습니다.

참고 : 이것은 오래 지속되는 과제가되었으며 새로운 답변을 게시하는 것은 상당히 어렵습니다. 따라서 잠재적 답변의 특정 부분에 대한 조언을 원하거나 추가 할 수있는 언어에 대한 아이디어가있는 경우를 대비하여이 과제에 사용할 수 있는 대화방 이 있습니다. 물어 보거나 할 말이 있으면 언제든지 들러주세요!

작업

N 에서 실행해야합니다 제출하는 프로그램 일 n 개의 서로 다른 언어를; 구체적으로, 이전 프로그램에 추가 된 모든 언어와 함께 하나 이상의 언어가 제출됩니다. 프로그램은이 질문에 대한 답변에 사용 된 첫 번째 언어로 실행될 때 1을, 두 번째 언어로 실행할 때 2를 출력해야합니다. 예를 들어, 첫 번째 답변은 Python 3에서 실행될 때 1을, 두 번째 답변은 Python 3에서 실행될 때 1을, JavaScript에서 실행할 때 2를 출력 할 수 있습니다. 이 경우 세 번째 답변은 Python 3에서 실행될 때 1을, JavaScript에서 실행할 때 2를, 다른 언어로 실행할 때는 3을 출력해야합니다.

추가 규칙

  • 오류나 충돌없이 프로그램을 실행해야합니다. 경고 (및 기타 stderr 출력)는 허용되지만 프로그램은 정상적으로 종료해야합니다 (예 : 프로그램 끝에서 실행하거나 exit정상 프로그램 종료를 수행 하는 명령을 통해 ).

  • 출력은 정수 여야하지만 후행 줄 바꿈은 정상입니다. 다른 불가피한 표준 출력도 허용됩니다. 예 : Befunge-93의 인터프리터 이름 및 버전 , Zephyr에서 인쇄 된 문자열 뒤에 공백 . 일부 언어는 뒤에 공백이 있거나없는 두 가지 인쇄 방법을 제공합니다. 이 경우 후행 공백이없는 방법을 사용해야합니다.

  • 각 답변은 이전 답변보다 20 % 또는 20 바이트 (둘 중 큰 것)를 초과 할 수 없습니다. (이것은 Lenguage와 같은 언어가 스레드를 스팸으로 만드는 것을 방지하고 최소한의 골프를 권장하기위한 것입니다.)

  • 동일한 언어의 다른 버전을 사용하는 것이 허용됩니다 (물론 다른 숫자를 인쇄해야하므로 버전 검사를 폴리 글롯에 맞아야합니다). 그러나 언어 버전 번호를 반환하는 언어 기능을 사용할 수 없습니다. 프로그램이 두 개의 서로 다른 숫자 중 하나를 결정적으로 인쇄해야하기 때문에 정확히 동일한 언어를 반복하는 것은 불가능합니다.
  • 일부 폴리 글 로트 경쟁에서 금지되었지만 과도한 코멘트 남용과 같은 트릭은 여기에서 좋습니다.
  • 이전 답변을 직접 작성하기위한 안내서로 사용할 필요는 없습니다 (사양에 부합하는 한 원하는 경우 전체 프로그램을 다시 작성할 수 있음). 그러나 대부분 이전 답변을 바탕으로 답변을하는 것이 허용되며 아마도 솔루션을 만드는 가장 쉬운 방법 일 것입니다.
  • 두 개의 답변을 한 번에 제출할 수 없습니다. 다른 사람이 사이에 게시 할 수 있습니다. 이 규칙은 승리 조건이 충족 될 때까지 적용됩니다.
  • 이 도전 과제는 다른 경쟁 업체가 귀하가 사용하는 것과 동일한 언어로 게시해야하므로 무료로 구현 된 언어 만 사용할 수 있습니다 (이것은 대회 인 것처럼 ).
  • 언어에 둘 이상의 인터프리터가있는 경우 해당 언어로 성공적으로 실행되는 모든 프로그램이 해당 인터프리터에서 수행되는 한 특정 언어에 대한 인터프리터를 선택할 수 있습니다. 즉, 프로그램이 둘 이상의 통역사에서 작동하는 경우 향후 게시물은 특정 언어에 대한 통역사 선택을 "고정"하는 게시물 대신 해당 통역사 중 하나를 선택할 수 있습니다.
  • 이 과제는 이제 언어 선택에 관한 새로운 PPCG 규칙 을 사용합니다. 질문보다 새로운 언어라도 언어 또는 통역사를 사용할 수 있습니다. 그러나 a) 언어가 폴리 글로 팅을 목적으로 설계되었거나 b)이 질문에서 영감을 얻은 언어 인 경우 질문보다 새로운 언어 / 통역사를 사용할 수 없습니다. (그래서 관련이없는 esolang과 마찬가지로 새로 설계된 실용적인 프로그래밍 언어는 거의 확실하지만 이 질문에서 영감을 얻은 A Pear Tree 와 같은 것은 금지됩니다.) 이것은 설계된 언어의 유효성을 변경하지는 않습니다. 이 질문보다 오래된 polyglotting.
  • 승리 조건 (아래 참조)은 체인을 깨는 것 (즉, 다른 언어로 폴리 글로 팅하기 어려운 언어를 사용하여 다른 사람이 당신에게 대답 할 수 없게하는 것)이 승리에서 실격 될 수 있도록 설계되었습니다. 목표는 우리가 할 수있는 한 계속 길을 가고, 이기고 싶다면 그것을 존중해야한다는 것입니다.

답변 형식

모든 답변이 서로 의존하므로 일관된 답변 형식을 갖는 것이 도움이 될 것입니다. 다음과 같이 답변을 형식화하는 것이 좋습니다 (체인의 두 번째 링크에 대한 예입니다).

2. JavaScript, 40 바이트

(program goes here)

이 프로그램 은 Python 3에서 1 을, JavaScript에서 2 를 인쇄합니다 .

(프로그램, 폴리 글로 팅 기술 등을 설명하려면 여기에 배치하십시오)

승리 조건

14 일 동안 새로운 답변이 없으면 당첨자는 두 번째로 새로운 답변, 즉 체인을 깨지 않은 것으로 입증 된 가장 큰 폴리 글롯을 게시 한 사람이됩니다 . 그래도 체인을 확장하는 것은 여전히 ​​환영합니다!

승자는 찬스 입니다. 답변 194 (TemplAt)를 참조하십시오 .

언어 목록


3
삭제 된 게시물을 볼 수있는 사용자의 경우 : 샌드 박스 게시물이 여기 있었습니다.

5
물론 이전 프로그램을 복사 할 필요는 없지만 가이드로 사용할 수 있습니다. 프로그램을 처음부터 다시 실행하면 시간이 더 걸릴 수 있습니다! 답변에 영구적으로 접근 할 필요는 없습니다. 가장 오래된 항목별로 정렬하면 모든 답변이 이미 순서대로 표시됩니다.

3
@ ais523 새로운 답변에 새로운 코드와의 링크를 포함시켜야한다는 의미는 무엇이라고 생각합니까?
Blue

5
코드의 16 진 덤프를 가져 와서 모든 언어로 자동 실행하는 스크립트가 필요하다고 생각합니다.
mbomb007

3
이것은 다른 유형의 챌린지로 게시 된 다목적 정수 프린터 입니다. (? 영감) 최종 답은 (현재) 점수 것입니다 0.0127만 SP3000의 30 언어 제출에 의해 구타 ... :)
스튜이 그리핀을

답변:


80

참고 : 이것을 처음 보면 가장 오래된 항목 을 기준으로 정렬 할 수 있습니다.

17. Julia (128 바이트)

#v`16 "<" 6/b0\ .q@#;n4"14""
#>3N9@15o|R"12"*^
#=|
print((1/2and 9 or 13)-(0and+4)^1<<65>>62);# =#;print(17)
#gg99ddi2` |1|1+6

마지막 줄에는 두 개의 ESC가 있습니다 . g하나 는 첫 번째 앞 과 뒤에 있습니다 2. 이것은 더 골프를 칠 수 있지만 V와 Pyth 덕분에 문제가 발생하지 않았습니다.

Python 3에서 1, V에서 2, Minkolang에서 3,> <>에서 4, Python 2에서 5, SMBF에서 6, Japt에서 7, Retina에서 8, Perl에서 9, Befunge-93에서 11, Befunge에서 11을 인쇄합니다. -98, 12의 Fission, 12의 Ruby, 14의 Turtléd, 15의 Haystack, 16의 Pyth, 17의 Julia .


힌트 :

  • 네 번째 줄의 시작은 Python 2/3, Perl, Ruby입니다. 끝은 여러 줄 #=주석 덕분에 Julia입니다 (Julia에게는 and/or) 가 없습니다 .
  • V는 <ESC>gg99ddi2<ESC>골프를 즐길 수 있지만 V는 테스트하기가 귀찮 습니다. 온라인 에서 사용해보십시오! 통역이 상당히 느리기 때문에.
  • Minkolang과 Haystack은 처음에 내려갑니다 v. Befunge-93과 -98은 그렇지 않으며에 의존합니다 b.
  • Retina는 네 번째 행에서 공백 수와 1을 계산하고 V는 Retina 구성에서 (즉, 백틱 전에) 숨 깁니다.
  • @ETHproduction의 힌트에 따라 Japt는 백틱을 사용하여 대부분의 코드를 문자열로 숨 깁니다.
  • 핵분열은 R"12"*입니다.
  • SMBF는 <.첫 번째 라인에 마지막으로 추가되었습니다 6.

24
다른 사람의 코드는 어디로 갔는가
Alfie Goodacre

13
159 바이트에서 128 바이트? 와우, 그것은 훌륭한 골프입니다!
소 qua

6
니스, 2 ^ 7 바이트
tomsmeding

7
와우 ... 믿어지지 않는다! 우리는 모든 사람들이 말하고 행할 때 모든 언어에 대해 새로운 설명을 작성해야 할 것입니다. ;-)
ETHproductions

4
@AlfieGoodacre "이전 답변을 직접 작성하기위한 안내서로 사용할 필요는 없습니다 (사양에
부합

52

23. 헥사 고니 , 186 바이트

이것이 계획을 망쳐 놓으면 죄송합니다 ...

#v`16/"<"6/b.q@"(::):::  (22)S#;n4"14"
#>3N6@15o|> ^*ttt*~++~~~%
#=~nJ<R"12";
#[

print((1/2and 9 or 13)-(0and+4)^1<<65>>62)#46(89999+++++!)=#print(17)#0\32=""<0]#echo 21
#8␛dggi2␛` |1|6

␛는 리터럴 ESC 문자를 나타내는 데 사용됩니다.

인쇄물:

Hexagony 에서 23, Underload 에서 22, Nim에서 21, Prelude에서 20, Reng에서 19 ( 여기서 테스트 가능 ), Cardinal에서 18, Julia에서 17, Pyth에서 16, Haystack에서 15, Turtlèd에서 14, Ruby에서 13, 12에서 핵분열, Befunge-98에서 11, Befunge-93에서 10, Perl에서 9, Retina에서 8, Japt 에서 7, SMBF 에서 6, Python 2에서 4,> <>에서 3, Minkolang에서 3, Vim / V에서 2 , 파이썬 3에서는 1입니다.

연결되지 않은 언어 change language로 이동하려면 Hexagony 링크의 오른쪽 상단에 있는 단추를 클릭하십시오 .


Hexagony는이 형식으로 읽을 수 없습니다 (모두). 육각형으로 봐야합니다.
2 개의 ESC 문자가 s 로 바뀌 었 으므로 볼 수 있습니다.이 문자 는 무시되므로 프로그램에 다른 문자 가 없습니다.

        # v 1 6 / " < " 6
       / b . q @ " ( : : )      A lot more readable, right?? No?
      : : : ( 2 2 ) S # ; n
     4 " 1 4 " # > 3 N 6 @ 1
    5 o | > ^ * t t t * ~ + +
   ~ ~ ~ % # = ~ n J < R " 1 2
  " ; # [ p r i n t ( ( 1 / 2 a
 n d 9 o r 1 3 ) - ( 0 a n d + 4
) ^ 1 < < 6 5 > > 6 2 ) # 4 6 ( 8   | Note that the 0s below can be replaced
 9 9 9 9 + + + + + ! ) = # p r i    | With anything (except "`" or " "), 
  n t ( 1 7 ) # 0 \ 3 2 = " " <     V as far as Hexagony is concerned
   0 ] # e c h o 2 1 # 8 ␛ d g
    g i 2 ␛ | 1 | 6 . . . . .    <-- the ␛ represents an esc
     . . . . . . . . . . . .         character
      . . . . . . . . . . .
       . . . . . . . . . .       A "." is a no-op
        . . . . . . . . .
                ^
                | Mirror wraps to here, going NW

Hexagony에 익숙하지 않은 사용자를 위해 6 개의 IP 코너가 있으며 6 개의 코너에서 시작합니다. 한 번에 1 개만 활성화되며를 사용하여 전환됩니다 #][. 메모리 모델은이 프로그램에서 그다지 중요하지 않지만 앞으로 이해해야 할 수도 있습니다. 알아야 할 것은 1 int가 "메모리 엣지"(ME는 짧게)에 저장되어 있고 '"}{활성화 된 ME를 변경한다는 것입니다.

\/|_>< 프로그램 흐름을 제어하는 ​​미러입니다.

이것이 작동하는 방식입니다.

첫 줄 실행 :

#       A no-op (sets active IP to 0, the currently active one)
 v      letter chars set the ME to their ASCII value - so ME is now 118
  16    Like Labyrinth, 0-9 multiplies ME by 10 and is added - ME now 11816
    /   A mirror that sends IP going NW by wrapping to the bottom

하단 (스 니펫을 세로로 뒤집어 위아래로 읽을 수 있음) :

    .   
   .    A series of no-ops. The IP is going NW now,
  .     because of the mirror on the top.
 .
|       Another mirror. This one sends the IP NE, into the h
 h      sets the ME to 104, the ASCII value for h
  #     104 % 6 == 2, so IP 2 is now active instead of 0

오른쪽 가장자리 :

        8  IP #2 is moving SW, starting in the right corner 
       i   Sets the ME to 105
      <    Mirror. Sends the IP going due West
    ""     These change the Active ME - just know that the new edge is 0
   =       Changes the MP (more in specs) - effectively a no-op used to fill space
\32        pushes 23, and mirrors up NE to the !

관련 코드의 마지막 비트 :

!          Prints the current value of the ME as an int. Success!
 20(R~     Does things to the ME - irrelevant now
      @    Ends the program!

참고 사항 :

  • Hexagony는 실행하기 전에 모든 s 및 `s를 삭제 하므로 해당 변경 사항은 Hexagony에 영향을 미치지 않습니다.
  • 코드를 8 길이가 아닌 9 길이 육각형으로 해석하기 위해 코드를 채워야했습니다.
  • 이로 인해 끝에 ~~~있는 2 및 2 0는 코드에 전혀 영향을주지 않고 변경 될 수 있습니다
  • =""그냥이 수정 될 수있는 새로운 있도록 이전에서 멀리 ME를 이동합니다. 그것들은 육각형 프로그램에 해를 끼치 지 않고 동일한 일을하는 다른 문자로 대체 될 수 있습니다 ( '예 : s)
  • 이것은 코드의 경계 상자를 80 x 25 chracter로 제한하기 때문에 Befunge 93 사양을 기술적으로 준수하지 않습니다. 그러나 대부분의 통역사는 (TIO와 같은)이 사양을 무시하므로 개인적으로 그것이 큰 문제라고 생각하지 않습니다. 그렇다면 의견을 남겨주십시오. (만약 내가 정말로 그것을 바꾸고 싶다면, 시도 할 것이다)
  • 너무 힘들지 않기를 바랍니다.

1
올바르게 수행하면 이것은 가장 미친 프로그램 흐름이 될 수 있습니다. 나는 미친 @ # # 방법을 통해 크기 8 육각형으로 끝내는 데 가까웠지만 일단 시도하면 9가 훨씬 쉬워졌습니다. 또한 TIO v1은 훨씬 빠르게 작동하지만 언어를 쉽게 전환 할 수는 없습니다.
MildlyMilquetoast

다음에는 미로를 제안하지만 그 일을하고 싶습니다.
MildlyMilquetoast

나는 이와 같은 것을 스스로 쓸만큼 숙련되지는 않았지만 그동안 Cubix가 나타날 때까지 기다리고 있습니다.
Pavel

@pavel 나는 그 언어에 익숙하지 않다. 3D라고 가정합니다. 멋진데. 또한 3D 곰팡이도 있습니다. 흥미로운 추가 기능이 될 수도 있습니다
MildlyMilquetoast

우리가 여전히이 길이에있는 한이 흐름과 같은 것을 유지하는 것이 가장 쉬운 것으로 생각하고 다음 크기로 올라갈 때 Hexagony 코드를 다시 작성하십시오. 3D 언어와 관련하여 기존 언어가 양식 피드를 볼 때 당황하지 않는다고 가정하면 Trefunge는 쉽게 적응할 수 있어야합니다. (또한, Cubix는 이전에 게시되었지만 포스터가 너무 어렵다고 생각하여 삭제되었습니다. Hexagony와 Cubix를 한 번에 유지하는 것은 상당히 혼란 스러울 수 있습니다…)

52

50. bash, 1024 바이트

#16  "(}23!@)" 3//v\D(@;'[af2.qc]GkGGZ'#)"14";n4
#/*` "[!PPP(22)SP(>7 7*,;68*,@;'1,@ ␉␉␉␉ q
#>␉
# >36!@␉
#`<`
#<]+<[.>-]>[
#{
#z}
#
#=<xR+++++[D>+++++++L+++<-][pPLEASE,2<-#2DO,2SUB#1<-#52PLEASE,2SUB#2<-#32DOREADOUT,2DOGIVEUPDOiiipsddsdoh@O6O4/]>+.-- -. >][
#Rx%>~~~+ +~*ttt*.x
#D>xU/-<+++L
#R+.----\).>]|
#[#[/v/v(/0l0v01k1kx0l0ix0jor0h0h1d111x0eU0bx0b0o1d0b0e0e00m1d0i0fx0g0n0n11x0o0n0cx0c0o0f0c0gx0g0f0h0j0j0i0001k10vx0v0l111111^_)  0046(8+9+9+9+9+=!)
###|
'\';echo 50;exit;';print((eval("1\x2f2")and(9)or(13))-(0and 4)^1<<(65)>>(62))or"'x"or'({({1})({1}[(0)])}{1}\{1})'#}#(prin 45)(bye)|/=1/24=x<$+@+-@@@@=>+<@@@=>+<?#d>+.--./
__DATA__=1#"'x"//
#.\."12"__*'
###;console.log 39
""""#//
=begin //
#ssseemeePaeueewuuweeeeeeeeeeCisajjapppp/*/
#define z sizeof'c'-1?"38":"37"
#include<stdio.h>
main(  )/*/
#()`#`\'*/{puts(z );}/*'``
<>{# }//
#}
disp 49#//
#{
1}<>//
$'main'//
#-3o4o#$$$
#< >"3"O.
=end #//
"""#"#//
#}
#|o51~nJ;#:p'34'\
#ss8␛dggi2␛ `|1|6$//''25  =#print(17)#>27.say#]#print(47)#]#echo 21#ss*///nd^_^_Z222999"26

자세한 내용을 원하십니까? polygot 채팅을 보십시오 !

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

평소처럼 Stack Exchange의 제한으로 인해 리터럴 탭을 리터럴 ESC 문자 로 대체했습니다 . 위 TIO 링크의 "입력"상자에서 쉽게 복사 할 수있는 버전의 프로그램을 얻을 수 있습니다.

개요

이 프로그램은 출력 (50) , 떠들썩한 파티에서 49 , 옥타브 48 Deadfish ~ 년 47 릴리, 46 Cubix에서 45 PicoLisp에서 44 alphuck에서 43 망상에서 42 악, 41 *** brainf에서 40 최소한의 -2D, 39 커피 스크립트에서 38 C에서 37 C ++에서 36 미로, 35 INTERCAL에서 34 레일, 33 사건에서, 32 소용돌이에서 31 모듈러 SNUSP에서,30 공백에서 29 트리거에서 28 뇌 플랙에서 27 펄 6에서 26 05AB1E에서 25 핍에서 24 Thutu에서 23 Hexagony에서 22 저 부하에서 21 님에서 20 서곡에서 19 Reng에서 , 18 카디날에서 17 줄리아에서 16 Pyth에서 15 덤에서 14 Turtlèd에서 13 루비에서 12 분열에서 11 비 펀지-98, 10 비 펀지-93,9 펄 5에서 8 망막, 7 JAPT에서 6 SMBF에서 5 파이썬 2에서 4 에> <> 3 Minkolang에서 2 V / 빔, 그리고 1 파이썬 3인치

확인

대부분의 언어는 위의 테스트 드라이버에서 테스트됩니다. 일반적인 4 가지 범인은 별도로 테스트해야합니다.

  • 인시던트 는 공식 통역사를 사용하여 오프라인에서 테스트되었습니다.

  • Deadfish ~ 는 오프라인에서 공식 통역사를 사용하여 테스트했습니다.

  • 모듈 식 SNUSP여기에서 온라인으로 테스트 되었습니다 .

  • Reng여기에서 온라인으로 테스트 되었습니다 .

설명

언어를 추가 할 다양한 리드를보고있었습니다. 한 가지 가능성은 #"스크립트 언어"줄 (Perl, Python 2 및 3, Ruby를 처리)에 추가 할 수 있는 줄 설명이 있는 언어를 찾는 것이 었습니다 . 그래도 이미 존재하는 언어와 구문 호환 가능한 적절한 언어를 생각하는 데 시간이 걸렸습니다.

그 대답은 오랜 세월 동안 나를 쳐다보고 있었다. 위의 TIO 링크를 클릭하면 bash로 작성된 폴리 글롯 테스트 드라이버가 열립니다. 그래서 이번에는 "Bash — TIO Nexus"라는 탭이있었습니다. 당신은 그것이 힌트라고 생각했을 것입니다. 그러나 분명히 나는 ​​그것을 놓쳤습니다. 보너스로 bash는 스크립팅 언어이므로 "스크립팅 언어 라인"이라는 용어가 여전히 적합합니다.

bash 프로그램은 다른 스크립팅 언어와 같은 위치에서 시작됩니다. 그러나 그것들을 그것들로부터 분리하는 상당히 간단한 방법이 있습니다. 작은 따옴표로 묶인 문자열 \에서 대부분의 언어에서 이스케이프 문자이지만 bash는 아닙니다. 따라서 '\'…';Perl, Python 및 Ruby에서 성능이 저하되지는 않지만 bash에서 실행되는을 통해 다른 언어에서 bash 코드를 숨길 수 있습니다 . echo 50;exitbash 프로그램을 끝내는 아주 간단한 방법입니다. 거의.

여기서 가장 큰 문제는 bash가 실행시 exit현재 행의 끝까지 문제의 코드를 실행하지 않더라도 구문 분석을 계속한다는 것입니다. 따라서 나머지 부분에 구문 오류가 없는지 확인해야합니다 라인. 우리는이 '직후 exit;바로 일치하는이없는 (그리고 수 없습니다). 나중에 '…', 스크립트 언어에서 일부 Brain-Flak 코드를 숨기는 데 사용되지만 bash에서는 숨기기가 해제됩니다. 결과적으로 코드를 숨기기 위해 사용하는 문자열 리터럴을 작은 따옴표로 묶은 문자열에서 큰 따옴표로 묶은 문자열로 변경해야합니다. or"'"Perl, Python 또는 Ruby를 방해하지 않고 트릭을 수행합니다 (왼쪽 인수가 모든 경우에 진실이기 때문에).

우리는 이제 미래 라인으로 확장되는 비교할 수없는 큰 따옴표를 가지고 있습니다. 적어도 하나의 다른 언어를 방해하지 않으면 서 닫는 것은 상당히 어려웠습니다. 실제로 우리가하는 일은 bash의 코드를 큰 따옴표에서 파이썬 / Ruby 주석의 후속 줄에 일치하지 않는 작은 따옴표로 다시 숨기는 방식을 변경하고 마지막으로 줄 끝에서 작은 따옴표를 닫는 것입니다.

피시스와 05AB1E

큰 따옴표로 묶으면 코드, Pyth 및 05AB1E를 숨기기 위해 큰 따옴표로 묶인 문자열을 사용하는 언어도 방해받습니다. 여기서 사용하는 주요 요령은 가능한 한 적은 코드를 노출하기 위해 추가하는 모든 큰 따옴표가 곧 다른 큰 따옴표를 갖도록하는 것입니다. (이것은 __DATA__줄 에 여분의 큰 따옴표를 설명하며 bash에는 필요하지 않습니다.) Pyth는 \이스케이프 문자로 사용 합니다. 이것의 주된 결론은 스크립팅 언어의 문자열로 엉망이되는 범위를 제한하여 위의 다소 복잡한 방법을 사용하도록 강요했다는 \것입니다. 그밖에). 05AB1E에서 외부' 이스케이프 문자로 작동문자열을 피하고 선두를 벗어나는 "것은하지 않을 것입니다. 그래서 나는 bash 따옴표 스타일 사이에서 변경하는 데 사용되는 구문 x안에 쓸모없는 패딩 문자 (기본값은 내 평소 ; 읽기가 더 쉽습니다!)를 배치해야했습니다 "'".

전주곡

지금까지 해결하기 가장 어려운 언어입니다. 문제는 모든 괄호가있는 스크립팅 라인이 옆으로 이동되어 Prelude 제어 흐름 (괄호가 세로로 정렬되는 방식에 많은 관심을 기울임)이 완전히 파괴되었다는 것입니다. 따라서 작동하는 무언가를 재구성하려고했습니다.

더군다나, 현재 첫 줄 (실제로 다시 쓰고 싶지는 않았지만)은 괄호가 나타날 수있는 곳에 약간의 제한이 있습니다. 0이 아닌 숫자 (실제로 2 개!)로 시작하고 곧 괄호로 시작합니다. 이는 Prelude의 루프이며 Prelude의 제어 흐름에서 초기에 반복되면 여러 가지 다른 문제가 발생합니다 (주로 더 적은 코드가 아닌 더 많은 코드가 실행되기 때문). 따라서 해당 코드를 건너 뛰려면 다른 줄에서 0 반복 루프를 열어야했습니다. mainC 프로그램 의 라인은 매우 적합하지만 일치하는 닫는 괄호가있는 위치에 매우주의해야합니다. 너무 오른쪽과 일치하지 않는 브래킷#R+줄이 너무 왼쪽에 문제를 일으켜 충분한 코드를 주석 처리하지 않습니다. 한 줄의 여는 괄호는 다른 줄의 닫는 괄호와 일치 할 수 있습니다.

이 작업이 완료되면 인시던트 줄의 시작 괄호 안에 충분한 공간이 생겨 마침내 프로그램의 처음 몇 문자를 안전하게 통과했습니다. 그러나 괄호 배치의 차이는 결국 인시던트 / Whirl 코드 중 일부가 실제로 Prelude에서 실행되어 스택을 손상 시킨다는 것을 의미합니다. 이것을 막으려 고 노력하는 대신, 나는 Whirl의 0을 오른쪽으로 더 옮겨서 작동하는 Prelude 프로그램을 다시 제공 할 수있었습니다.

또 다른 작은 변화는 프로그램의 첫 줄에있었습니다. 줄의 마지막 괄호는 피하기 매우 어려운 위치에있었습니다. cPyth 코드 바로 뒤에 추가 하여 오른쪽으로 이동했습니다. (많은 언어가 프로그램의 요점을 파싱하고 있으므로 적어도 하나의 언어를 어 기지 않는 패딩 문자를 찾기 위해 많은 시행 착오가 필요했습니다!)

사건

Prelude는 그 자체로는 충분히 어려웠지만 Prelude와 Incident를 동시에 작동시키는 것은 악몽이었습니다. Prelude는 코드에 많은 제약을 가하여 자유롭게 물건을 움직일 수 없었으므로 우발적 인 토큰 구성이 골프를 치기 어렵게 만들었습니다. 예를 들어 Prelude는 실제로 0오른쪽으로 이동 한 00토큰 만 필요 하지만 토큰이 실패하여 사건 프로그램의 일부로 원하는 토큰 중 일부가 손상 되었습니다 (두 개의 토큰이 겹치면 거부 됨). 는 00우리가 겹치는 것 외에도 우리가 원하는 토큰과 겹쳤습니다). 나는 네 번째 사본을 만들어 토큰으로 간주되지 않도록 두 가지를 모두 옮겨야했습니다.

토큰 ;'␠␠두 개의 공백 문자 가 더 미묘합니다 . 문제는 이러한 표시 둘 것입니다 전에kG (프로그램의 중심점을 파괴하는 것 외에도) 사건의 제어 흐름을 깰 것이다, 따라서이이 프로그램의 시작 부분으로 바로 이동하는 데 사용되는합니다.

복사본을 분리하여 제거해도 ␠␠실용적이지 않습니다. 중복을 통해 제거하는 것이 가능할 수 있지만 ( ␠=유망한 잠재적 중복 임) 네 번째 사본을 추가하는 것이 거의 확실하지 않습니다.

한편에 다른 트릭을 사용할 수 있습니다 ;'. 이 간격은 상당히 간격에 민감한 상황에서 사용되기 때문에 시도하고 싶지 않습니다. 그러나, 그렇지 않아 (첫 번째 줄에 나타나는에도 불구하고) 프로그램의 시작에 가까운, 그래서 우리는 오히려이 존재하지 필요보다 (따라서는 제어 흐름에 영향을주지 원인이) 그것을 뛰어 수 그럴듯합니다. 다른 언어를 망치지 않는 점프에 사용할 적절한 토큰을 찾았습니다. /v첫 번째 줄에서 조금 일찍 나타나고 아무것도 깨지 지 않아서 내가 사용한 것입니다.

1Kib 코드로 50 개 언어

@MistahFiggins에 따르면 1024 바이트 인 경우 1025 바이트 제출이 더 깔끔 할 것이라고 지적했습니다 (특히 50 번째 언어가 그 자체로 중요합니다). 이를 위해서는 어딘가에서 많은 비용을 절감해야했습니다. 이 경우, Deadfish에서 3 바이트를 절약했습니다. 사건 토큰을 올바르게 정렬하는 데 사용되는 2 바이트의 추가 비용으로 프로그램이 정확히 1024 바이트로 떨어졌습니다.

이전에 Deadfish ~ 코드가 사용한 공식은 (2² + 2) ² + 10 × 1 + 2 = 48입니다. 새로운 공식은 (3²-2) ²-1이며 48을 생성합니다. 놀랍게도, 그렇지 않습니다 훨씬 더 간단하지만 Deadfish에서 작성하는 것이 훨씬 짧습니다.

또한 VIP 점수 는 .008192입니다. 이것은 새로운 기록 일뿐만 아니라, 그 자체로도 좋은 둥근 숫자입니다 (즉, 수식의 입력 값으로 둥근 숫자가 좋은 결과 임).


2
TIO> _> (정말로 Reng의 제작자)가 없어 죄송합니다
Conor O'Brien

@ ConorO'Brien Ping Dennis? 또한, ais523, 당신은 싱글 바이트 오프 골프를 시도해야합니다;)
MildlyMilquetoast

1
당신 이 만든 prelude leeway 덕분에 puts(z )스왑 (P라인 2에서 공간을 줄일 수 있습니다 . 이 답변에 대한 브라보. # 50in1k
Chance

1
그것이 일어날 때, 나는 다른 바이트를 골퍼 쳤다. 지금은 정확히 1024입니다. 나는 그것을 정말로 바꾸고 싶지 않습니다. 더 많은 가능성이있을 수 있습니다 (예 : 더 이상 필요하지 않은 오래된 사고 패딩 / 디 토큰 화가있을 수 있음).

6
@ ais523은 동의했다. 이 답변은 항상 1024 바이트 여야합니다.
Chance

38

37. C ++ (gcc), 776 바이트

#  1"16" 2//v\(;@#/;n4"14"
#/*`3 auaaZ<>16/"<"6/b.q@")(22)S#  ␉␉␉␉ 
#yy␉;36!@
# ␉
#=␉>
#[#yy#yy0l0mx01k1k0l0ix0jx0h0h1d111P0eU0bx0b0o1d0b0e0e00x1d0i0fx0g0n0n11x0o0n0cx0c0o0f0c0gx0g0f0h0j0j0i0001k10mx0m0l11111100(^_)
#`<`␉|
print((eval("1\x2f2")and( 9 )or(13 ))-(0and 4)^1<<(65)>>(62))or'(\{(\{})(\{}[()])}\{}\{}\{})'#46(8+9+9+9+9+=!)#1|=/=1/24=x=9[<$+@+-@@@@=>+<@@@=>+<?#>+.--.]/
__DATA__=1#//
#.\."12"*␉
""""#//
=begin␉//
#*/
#include<iostream>␉
int main()  /*/
#()"`#"\'*/{std::cout<<37;}/*'"`"
$'main'␉//
#-3o4o#$$$
<>3N.<>␉//
#xx
#x%~~~+␉+~*ttt*.x
#xx
=end   #//
"""#"#//
#0]#echo 21#/(\[FAC,1<-#2FAC,1SUB#1<-#52FAC,1SUB#2<-#32FACLEGEREEX,1PLEASEGIVEUPPLEASE)  ap
#_~nJ|#o51\   
#0␛dggi2␛`␉|1|6$//''25  >>>>>#>27.say# =#print(17)#^_^_7LEintndus({})!<>+]/*///Z222999/3!@"26

리터럴 탭, 리터럴 ESC 문자입니다. 그렇지 않으면 스택 익스체인지가 프로그램을 혼란시킬 것입니다. 작업하려면 아래 TIO 링크의 "입력"상자에서 프로그램을 복사하는 것이 좋습니다.

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

개요

이 프로그램은 인쇄 (37) C ++에서 36 미로, 35 INTERCAL에서 34 레일, 33 사건에서, 32 소용돌이에서 31 모듈러 SNUSP에서 30 공백에서 29 트리거에서 28 뇌 플랙에서 27 펄 6 , 26 05AB1E에서 25 핍에서 24 Thutu에서 23 Hexagony에서 22 저 부하에서 21 님에서 20 서곡에서 19 Reng에서 18 추기경,17 줄리아에서 16 Pyth에서 15 덤에서 14 Turtlèd에서 13 루비에서 12 분열에서 11 비 펀지-98, 10 비 펀지-93에서 9 펄 5, 8 망막, 7 JAPT에서 6 SMBF에서 5 파이썬 2에서 4 에> <> 3 Minkolang에서 2 V / 빔, 그리고 1 파이썬 3인치

확인

대부분의 언어는 위에 표시된 테스트 드라이버로 테스트됩니다. 당신은 Reng 테스트 할 수 있습니다 여기에 모듈 형 SNUSP을 여기 ; 필요에 따라 19와 31을 각각 출력합니다.

큰 따옴표를 피하고 줄 바꿈을 대체하는 테스트 드라이버 출력에 다른 형식을 추가했습니다. 이것은 @feersum here에 의해 생성 된 함수를 감싸는 ac (gcc) 프로그램에 단일 행 문자열을 공급할 수 있도록 합니다 . 다른 사람들이 그대로 사용할 수 있기를 바랍니다.

사건 토큰 프로그램은 다음과 같습니다 . 이상적으로는 토큰을 읽기가 어렵고 "중심"토큰을 표시하고 테스트 드라이버에 포함시키기 때문에 토큰을 전달하고 싶습니다. 그러나 나는 다양한 프로그램이 순차적 정수를 인쇄하게하는 것 외에 다른 것을하는 방법을 정말로 모른다. 그래서 이것은 내가 얻은 한.

나는 시작 및 끝 점프 토큰 후의 토큰과 같은 외형 적 인 문제와 같은 명백한 인시던트 문제를 해결하려고 시도했지만 0o중앙 에 놓을 토큰의 균형을 맞추지 못했습니다 . 논리가 정확히 중심을 결정하는 것이 무엇인지 확실하지 않습니다. @ ais523가 도움이되기를 바랍니다. 이 7LEintndus({})!<>+네 번째 코드에 포함되지 않은 경우 끝에 가까운이 문자열 은 모두 토큰이됩니다. 이것들은 .중심 토큰을 조정하기 위해 모두 제거하고 ( Hexagony 정렬을 위해 대체 ) 할 수 있습니다.

다음 날 또는 이틀 동안이 게시물을 업데이트하여 코드를 살펴 보겠습니다 (바이트 수를 넘지 않고 인시던트를 확인 / 수정 할 수 있다고 가정). 그러나 그것은 지금 늦었습니다. 나는 다른 미궁 같은 문제를 해결하기 전에 이것을 꺼내고 싶었습니다. :피

설명

C ++ 코드 작동 방식

나는 대부분의 사람들이 C ++에 익숙하다고 생각하므로 너무 자세하게 설명하지는 않을 것이다. 블록 주석은 형식으로 제공 /* comment */됩니다. 줄 설명은 형식으로 제공 //comment됩니다. C ++에서 답을 얻기 위해 사용하는 실제 코드는 int main() {std::cout<<37;}입니다. STDOUT과 인터페이스하는 데 사용되는 라이브러리는이 명령문에서 참조됩니다 #include<iostream>.

/ * 의견 남용 * /

저에게 C ++의 이야기는 Brain-Flak의 답변으로 되돌아갑니다.

마지막으로 # 28을 찾은 후, 나는 PPCG에 게시 된 다른 폴리 글 로트를 연구하기 시작했고 연구를 통해 몇 가지 쉬운 답변을 얻었습니다 (대부분이 다른 사람이 기울어지면 여전히 찾을 수 있습니다). 그러나 더 중요한 것은 일반적으로 폴리 글 로트에 대한 결론에 이르렀습니다. 큰 폴리 글 로트는 #댓글 남용 또는 /*댓글 남용 의 두 가지 범주 중 하나에 해당하는 경향이 있습니다.

이것은 어쨌든 사실 또는 제한 사항이 아니라 다음 몇 가지 답변을 안내하는 개인적인 정신 구조입니다.

여기에서 나는 이것이 현재 세계에서 가장 큰 폴리 글 로트가 될 것이라고 생각했는데, 이것이 현재의 것으로 추정된다면, 두 의견 패밀리의 의견 남용을 활용할 수 있다면 가장 좋을 것입니다. 그래서 나는 /*주석 언어를 통합하는 방법을 찾기 시작했으며 대부분 개인적인 친숙 함으로 인해 C 가족에게 밀려났습니다.

C ++ 초기 테스트

이것에 대한 나의 초기 생각 과정은 주로 C #을 사용하는 것이었고 C #의 첫 번째 장애물은 폴리 글롯을 #스크립팅 언어로 코드로 처리 하지 않고 시작하지 않은 줄을 받아 들일 수있는 상태로 만드는 것 입니다. . 레일 응답은 몇 바이트의 팽창 응답과 함께이 부분을 해결했습니다.

다음으로 첫 번째 /*주석 블록 을 시작하는 방법에 대한 문제가 발생했습니다 . 나는 라인이 #Perl, Ruby 및 Python에게는 보이지 않는 상태로 라인을 시작해야한다는 것을 알았지 만 이전에는 무엇이든지 /*C #에서 읽을 수 있습니다. #region처음 에는 C # 태그를 시도했지만 2D 언어에 대해 너무 리지로 밝혀졌습니다. C ++를 입력하십시오.

C ++에는 2로 시작 #하는 2D 언어에 대한 많은 옵션을 제공하는 여러 개의 프리 프로세서 지시문이 모두로 시작됩니다 . 그러나 그들 모두는 적어도 하나의 언어와 호환되지 않으며 C ++ 노출 코드 공간에 있기 때문에 해결 방법이 제한적이었습니다. 좌절과 절망으로 인해 C ++이 #주석 블록 앞에 단 하나만 받아 들일 것이라는 사실에 빠져 들었습니다 . 좋아, 그게 가능해 그래서 저는 #/*폴리 글롯에서 처음 세 문자로 작동 할 수 있는 가정을 진행했습니다 .

두 번째 기본 검증은 실제 인쇄 문이 다른 코드와 함께 행복하게 살 수 있도록하는 것입니다. Brain-Flak의 답변에서 Japt는 이스케이프 처리되지 않은 것을 좋아하지 않았으며 {C ++에서 말하는 데 필요했으며 C ++ int main() {std::cout<<37;}은 코드 중간에 Japt의 이스케이프 문자를 허용하지 않습니다. 이번에 나는이 진술을 위해 Japt의 문자열을 제거하더라도 Japt는 여전히 같은 결과를 얻습니다.

한편 Brain-Flak은 {}어느 쪽도 마음에 들지 않았지만 C ++이 and 문 #사이 에 괜찮다는 것을 알게되어 운이 좋았습니다 .Brain-Flak의 관점에서 중괄호를 주석 처리 할 수있었습니다.int main(){std::cout<<37;}

따라서 C ++의 주요 문제가 이론적으로 해결할 수있는 것으로 판명되면서 내가 소개 한 모든 오류를 해결하는 힘든 과정을 시작했습니다.

2D 풍경

이 답변의 가장 어려운 부분은 지금까지 폴리 글 로트의 상단 두 줄을 재구성하는 것이 었습니다. 그리고 가장 중요한 문제는 *입니다. 언더로드는 *이전에 허용되지 않습니다 (. 빈 스택에서의 수학 연산으로 간주되며 오류라고 생각합니다. 따라서 polyglot은 (이전에 필요 /*했지만 C ++은 이것을 허용하지 않았습니다. 그래서 해결책은 //첫 번째 줄에 a를 숨기고 C로 (두 번째 줄을 시작 하는 C ++ 줄 주석 #/*이었습니다.

다음으로 Befunge는 /무언가를 나누지 않고 는 아이디어가 마음에 들지 않았지만 기존 Begunge의 대답을 공부 한 후에 16/"<"6/b.q@는 숫자와 문자열이 서로 앞에 박혔다 는 아이디어를 발견했습니다 //. 그것은 효과가 있었으며 왜 C ++이 이것에 대해 괜찮은지 알지 못하지만 # 1"16" 2시작 문장으로 받아들 입니다. 나는 그것을 질문하지 않을 것이지만, 그것이 작동하기 위해서는 공간이 필요하다는 것을 알고 있습니다.

라인 1

Japt는 다소 공간에 민감한 것으로 판명되었으며 실제로 맨 위 줄의 백틱 기반 문자열에 들어가기를 원하지 않았으므로 Pip의 백틱은 두 번째 줄로 옮겨져 1 번 라인에서 많은 언어 체조를 강요했습니다.

  • Pip은 대부분의 1 행을 좋아하지 않았으므로 첫 번째 #줄 뒤에 두 번째 공백을 두어 주석을 표시했습니다.
  • (에 대한 저 부하는 이전에 JAPT에서 탈출해야했다 \.
  • #반드시 필요한 그래서 Turtlèd에서 점프 종료이지만 Pyth가 null로 제산이 필요하므로 Pyth이 오류 종료 루프를 고려 / 애프터#
  • @첫 번째 줄에서 더 이상 무엇을하고 있는지 잘 모르겠지만 Pyth와 Japt는 @Pyth의 문서에 따르면 의미가없는 문자는 아니지만 존재하지 않는 것보다 더 나은 것처럼 보입니다 .
  • 그리고 첫 번째 ;결과는 결과없이 제거 될 수있는 것처럼 보입니다. 따라서 Pyth와 관련이 있다고 생각하지만 더 이상 해결 될 것이 확실하지 않습니다. 그러나 미래의 솔루션은 바이트를 생략하여 바이트를 절약 할 수있는 것처럼 보입니다.
  • <> <와 Turtlèd는 기본적으로 <> <를 처음 반영 #하고 줄 끝까지 줄 바꿈하여 이전과 동일하게 작동합니다 . 그리고 Turtlèd #는 내가 언급 한 것처럼 점프 "14"하고 인쇄 하는 문자열로 끝납니다 .

2D 라우팅

이러한 문제가 해결 된 다음 단계는 2D 언어를 라우팅하는 것이 었습니다. 이전에는 이전 v으로 인해 Befunges가 초기 를 무시 #했지만 Haystack 및 Minkolang을 아래로 보냈습니다. 이제 초기 공간은 3 차원을 따라 Minkolang을 보내려고 시도합니다. 3 차원은 문서가 시간 차원이라고합니다.

Minolang의 3 차원을 간단히 제쳐두고 : 나에게 이것을 시간 차원이라고 부르는 것은 잘못된 것입니다. 개념을 설명하는 링크를 찾을 때까지는 실제로 그것을 얻지 못 했으며 3D 체스 판의 여러 레이어와 비슷해 보입니다. 제 생각에는 이것이 3D 언어가 일반적으로 작동하는 방식입니다. 그러나 이것은 나에게 새로운 개념이므로 다른 사람들을 위해이 정보를 버릴 것이라고 생각했습니다.

따라서 Minkolang의 여러 레이어는 $$$레일 코드의 끝 부분 에 줄로 끝나는 줄로 구분됩니다 #-3o4o#$$$. 이제 Minkolang은 공간을 차지하고 처음 >으로 떨어지고 <>3N.<> ␉//올바른 출력으로 진행합니다. 3. #>Perl6 주석 블록을 종료하려고 시도하기 때문에이 줄을 시작할 수 없으므로 SMBF와 Brain의 균형을 맞추기 위해 <대신 사용됩니다 #-대공포. 그러나 이것은 Brain-Flak 스택 스왑 절차이므로 <>Minkolang 종료 후 Brain-Flak의 정답으로 다시 전환하기 위해 두 번째 세트 가 사용됩니다.

Labrynth도 마찬가지로 공간에 부딪치지 만 Labrynth는 1 열에서 아래로 이동합니다. 그런 다음 2 번 라인을 아래로 내려 3다른 벽에 부딪히면 다시 남쪽으로 돌아와 ;3을 튕기 게됩니다. . 그런 다음 프로그램은 @종료를 찾기 전에 36이 저장되고 인쇄되는 오른쪽으로 계속 진행합니다 . 이 경로는 필요한 것보다 길지만, Prelude가 !나타나는 줄에 관계없이 현재보다 왼쪽에 더 있으면 정상 20 출력 전에 널 바이트를 출력한다는 것을 알았 습니다. 공간이 있었기 때문에 더 정확했습니다.

다음으로, Haystack의 라우팅은 /이제 v라인 1에 앞서 Reng처럼 경로를 반영 하기 때문에 변경되었습니다 . 다행히 Reng은 다소 평화롭게 동거합니다. 한 가지 장애는 Haystack의 바늘 |이 Reng의 반사기라는 것입니다. 따라서 Reng은 #바늘에 대한 점프 ( ) 와 같은 Befunge를 사용하여 Reng를 올바르게 결론지었습니다.

Befunges는 1 번 라인을 따라 계속 진행 v하고 아래로 내려간 다음 2 번 라인에서 오른쪽으로 이동하여 이전에 사용한 것과 동일한 코드로 마무리합니다. 내 말은이 언어는 코드를 의미있게 통과하려고하는 언어가 적기 때문에이 부분을 조금 골라 넣을 수 있다는 것입니다. 그러나 더 이상 벽을 필요로하지 않아서 그대로 두었습니다.

마지막으로, 추기경의 출발점 %은 이미 밀집된 상위 2 개 라인에 집중할 필요가 없었습니다. 그래서 나는 그것을 파이썬의 문자열로 옮겼습니다. 여러 코드 경로도 이제로 묶여 x포인터의 이동을 종료합니다.

2 호선 & 3 호선

여기서 중요한 유일한 변화는 모든 :이유로 인해 골프를 쳤다는 것입니다. Prelude의 (요구 일 수도 있고 단순한 바이트 수 문제 일 수도 있습니다. 다른 것은 트리거의 점프 코드가 뒤로 이동하여로 브랜드가 변경되었다는 것입니다 auaaZ. Befunge의 코드 경로를 충족시키기 위해 채울 공간이 있었고 이것이 가장 좋았습니다. 또한 <다음은 SMBF의 균형을 맞추기위한 것 >입니다. 마지막으로, 두 번째 줄의 끝 부분 에서 고독한 것은 05AB1E의 줄을 유지하는 것입니다. 또한 yy3 행에는 미로의 필러 문자 만 있습니다.

큰 끈 Esolangs

상단의 두 줄이 해결되면 풀 파싱 esolang에 파고 들기 시작했고 Pip에 문제가있는 것으로 나타났습니다. 당신이 기억한다면 우리 {std::cout<<37;}는 Japt 문자열을 제거하여 Japt가 이것을 코드로 취급하도록함으로써 중괄호를 처리했습니다. Pip은 동일한 문자열 구문을 사용하고 있으며이 줄을 코드와 같지 않았으며 Pip은 Japt와 매우 유사한 문자열 선언 옵션을 가지고 있습니다. 둘 다 단일 '문자열을 사용하여 하나의 문자열을 선언하고 둘 다 동일한 이스케이프 선언을 사용 \하고 둘 다 "문자열 식별자로 허용 합니다. 따라서 Pip이 Japt을 똑같이 믿지 않으면 서 이것이 문자열이라고 믿게 만드는 것은 어려웠습니다.

그러나 Japt은 한 가지 악용 가능한 차이점을 가지고 있음이 밝혀졌습니다 #. 다음 캐릭터의 ASCII 값을 취합니다. 따라서 #"`Japt / pip 문자열을 종료 한 다음 Papt에게 "새 문자열을 시작하도록 지시하면서 asci 값을 가져 오도록 Japt에 지시 합니다. "아마 백틱 이 되었을 수도 있고 아마도 더 좋았을 수도 있지만, 내 생각은 내부에서 다른 문자열 식별자를 문자열 조작의 다른 지점으로 사용하는 것이 었습니다. 여기 몇 바이트를 절약 할 수있는 또 다른 장소가 있습니다.

다음으로 중괄호 뒤에 Japt 문자열을 시작하면서 Pip이 문자열에 남아있게해야했습니다. '"`작은 따옴표, 큰 따옴표 및 백틱 으로이 작업을 수행 했습니다. Japt의 '경우 문자열에 없으므로 다음 문자를 단일 문자 문자열로 가져 오는 표시기입니다. Pip '은 문자열의 일부로를보고 문자열을로 종료합니다 ". 그리고 마지막으로, `Pip과 Japt 모두 다른 언어가 시작되고 있음을 나타내며, 두 언어가 모두 행복하게 끝나는 마지막 줄까지 폴리 글 로트 전체에서 계속됩니다.

이제 Japt와 Pip이 모두 작동했지만 05AB1E는 "코드 노출을 유발하는 일부 오류 로 인해 실패했습니다 . 다행히도 이것은 "문자열 조작 세트를 그대로두고 전체를 다른 세트로 묶어 해결하기에 충분히 쉬웠습니다 "`#"\\'*/{std::cout<<37;}/*'"`".

마지막으로 라인이 이제 이와 같이 int main() #/*"`#"\'*/{std::cout<<37;}/*'"`"생겼으며, Underload에 문제가있었습니다. 연속적인 *, 또 다른 구문 오류 였으므로 ()의 중간에 a 를 던졌습니다 *.

깨지기 쉬운에 솔랑

큰 장애물은 이제 공백이었습니다. 대부분의 공백 솔루션이 이미 제공된 설명에 내장되어 있으므로 공백에 대해 자세히 설명하지 않으며 공백이 몇 가지 결정을 강요 한 인스턴스에 대해 글을 올렸습니다. 당신을보고 있습니다. 그러나 큰 변화는 Whitespace의 답변을 출력하는 실제 코드가 1-3 대신 2-4 행에 있다는 것입니다. 이것은 주로 줄 1의 Japt 코드 노출 때문입니다.

Thutu는 원래 다음 줄에 문제가있었습니다 int main() #/*()"`#"\'*/{std::cout<<37;}/*'"`". 그래서, 나는 #주석 표시기 뒤에있는 모든 문제를 숨기려고 첫 번째 줄 바로 앞에 줄 바꿈을 한 다음 /코드 노출 된 다른 곳 에서 많은 후행을 스팸 발송했습니다 .

이 시점에서 나는 Hexagony를 정렬하고 새로운 문제를 발견했습니다. 삶을 시작한 처음에 코드, # 1"16" 1을 만들어 +/+23!@더 이상 명확 스택. 그래서 방금 +is를 제거하고 이제 123을 출력한다는 것을 알았습니다. 이것은 오프닝 gambit를 변경 # 1"16" 2하고 Hexagony 조각을로 골프를 치면서 수정하기에 충분히 쉬웠습니다 /3!@.

Whirl에는 약간의 변화가 있었지만 대부분 Whirl-Incident 라인 앞에 올바른 수의 선행 1이 표시되도록하는 것이 문제였습니다. 사건은 특히 어려운 토큰 하나를 가지고있었습니다. 나는 정확히 3 사본을 가지고 /**/.

처음에는 *//*코드에서 오래된 장소를 던져서 각각의 네 번째 사본을 만들려고했지만 Underload는 *다시 연속적인 것을 보았습니다 . 궁극적으로 내가 던진 /이 줄의 끝 int main() /*이 끝날 수 있도록 /*/내가 토큰이 중복 만들 거라고 생각하지만, 나는 단지 두 개의 토큰 중 하나의 4 복사본을 만드는 데 성공했다. 맞아 맞아. 그것이 작동하는 방식입니다. 글쎄, 나는 /마지막 */에 비슷한 것을 던져 거기에서 4를 만들 것입니다. 그 후, 나는 마지막 줄에있는이 문자열에서 여러 개의 육각형 no-ops를 여러 개의 사건 토큰 사본으로 대체했습니다 7LEintndus({})!<>+.

결론

자, 이것이이 거대한 리 팩터에 대한 모든 세부 사항입니다. 다음에 쓸 내용은 많지 않기로 약속합니다. 실제로 C ++ 이이 폴리 그램에 대해 좋은지 나쁜지 알지 못하지만 내 감각에는 몇 가지 옵션이 열립니다. 잘하면 이것은 좋은 일로 이어집니다.

행복한 코딩.


2
과 같은 g++이 필요합니다 .cpp, 그래서 그 파일 확장자에 특정 섹션을 추가했습니다. 그런 다음 run-wrapper.sh그것을 처리하는 데 사용해야 했습니다. 편집 할 것입니다.
SnoringFrog

1
나는 쉽게 추가하기 때문에 이것 에 상징적 인 brainfuck 를 추가하고 싶지만 유니 코드 문자는 python2 충돌합니다.
_-– SnoringFrog

1
@SnoringFrog 나는 이모티콘
기회

1
또한 **Underload의 구문 오류가 아닙니다. 그것은 단지 많은 스택을 소비하는데, 당시에는 사용할 수 없었습니다 (아마도 콜론을 골프로 쳤기 때문에). 괄호로 묶은 그룹이나 콜론으로 묶거나 그 사이에 스택을 채우거나 괄호로 묶어 언더로드에서 코드를 숨길 수 있습니다.

2
@ ais523 C의 초창기에 불필요한 경우 시간을 절약하기 위해 첫 번째 행이 #으로 시작하지 않으면 전처리 기가 실행되지 않았습니다. 그러나 첫 번째 줄을 전 처리기 명령문으로 사용하지 않으려면 실제로 아무 것도 수행하지 않고 첫 번째 줄을 #으로 시작하는 방법이 필요하므로 null 지시문이 있습니다. 나는 이것을 사용하는 코드와의 호환성이 표준에 포함 된 이유라고 강력하게 의심합니다.
Muzer

34

3. Minkolang v0.15 (26 바이트)

#>>>>>>>>v
print(1)#>3N.i2

이 프로그램은 인쇄 일을 파이썬 3에서 2 빔에, 그리고 3 Minkolang의 v0.15에서

2D 언어를 도입하여 문제를 일으키지 않기를 바랍니다.

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

설명

#                     stops program from moving through time (really does nothing)
 >>>>>>>>             I can't use a space because then the program will move through time
         v            go down
         >            go right
          3N.         Outputs 3 and end program
                      Anything afterward is ignored since program has ended

Vim은 어떻게 든 Minkolang을 무시하므로 좋습니다.

그리고 주석을 무시하기 때문에 파이썬에는 실제로 문제가 없었습니다. #

다음...

다음 언어의 #경우 리플렉터로 작동하기 때문에> <>와 같은 것을 제안 합니다 (방향이 왼쪽으로 바뀌고 오른쪽으로 줄 바꿈됩니다). 다른 언어에서 무시할 수있는 코드를 추가 할 수 있습니다


16
"시간을 통해 이동"와트?
TuxCrafting

5
@ TùxCräftîñg Minkolang의 치수는 3 차원입니다 (2d = 법선, 세 번째는 시간입니다). TBH, 나는 그것을 이해하지 못한다, 그것은 단지 TIO 링크에 대한 설명에서
Cows quck

@ mbomb007 정확히 무엇을 말하고 있습니까?
Cows quack

1
@ TùxCräftîñg 나는 그렇게 할 수 있다고 생각하지 않습니다
dkudriavtsev

1
@wat 흠 이것은 이해하는 데 너무 오래 걸렸습니다
TuxCrafting

34

5. 파이썬 2 (35 바이트)

#3N.;n4
print('1'if 1/2else'5')
#i2

이 프로그램을 인쇄 파이썬 3에서 2 빔에서 3 Minkolang의 v0.15에서 4 에서> <>와 5 파이썬 2인치

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

Python 2에서 1/2은 0이며 이는 잘못된 값으로, 파이썬 인쇄 5를 만듭니다. Python 3에서 1/2은 0.5로, 진귀한 값이며, 파이썬 인쇄 1을 만듭니다.


1
나는 그것이 Minkolang에서 작동 확인할 수 있습니다
소 돌팔이

1
print('1'if 1/2else'5')1/2와 다른 사이의 공백없이 내 시스템에서 중단
Tasos Papastylianou

TIO의 두 버전 모두에서 작동합니다.
betseg

28

4.> <> (29 바이트)

#>>>>>>>>v;n4
print(1)#>3N.i2

이 프로그램을 인쇄 파이썬 3에서 2 빔에서 3 Minkolang의 v0.15 및 4 >와 <>

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

코드 실행

#             - change direction to left
            4 - add 4 to stack
           n  - print as a number
          ;   - end the program

또 다른 2D 언어.

방향 변경 후 문자를 추가하고 어떤 이유로 Vim에 의해 무시되므로 Minkolang에는 영향을 미치지 않습니다. #파이썬에서 주석이므로 변경하지 마십시오.


28

28. Brain-Flak , 280 바이트

#v`16/"<"6/b.q@"(::):::   (22)S#;n4"14"
#>3N6@15o|> ^*ttt*~++~~~%
#=~nJ<R"12";
#[
#`<`|
print((eval("1\x2f2")and (9) or (13))-(0and 4)^(1)<<(65)>>62)or'(\{(\{})(\{}\/^23!@[()])}\{})(\{}\{})'#@46(8+9+9+9+9+=!)=#print(17)#]#echo 21#|/=1/24=x=90/
#8␛dggi2␛` |1|6$//''25  #>say 27#"26

␛는 평소와 같이 리터럴 ESC 문자를 나타냅니다.

이 프로그램은 출력 28 뇌 플랙에 , 27 펄 6 , 26 05AB1E에서 , 25 핍에서 , 24 Thutu에서 , 23 Hexagony에서 , (22) 저 부하에서 , 21 님에 , 20 서곡에서 , 19 (시험 Reng에서 여기 ) 18 추기경 , 17 줄리아에서 , 16 Pyth에서 , 15 덤에서 , 14 Turtlèd에서 ,13 루비 , 12 분열에서 , 11 비 펀지-98 , 10 비 펀지-93 , 9 펄 5 , 8 망막 , 7 JAPT에서 , 6 SMBF에서 , 5 파이썬 2 , 4 에서> <> , 3 에서 Minkolang , 2 빔 / V에서 , 1 파이썬 3

우선, 나는이 도전에 기여할 수있는 특권을 말하고 싶습니다. 나는 몇 주 전에 코드 골프에 대해서만 들었고 그 이후로 절대적으로 매료되었습니다. 내가이 도전을 발견했을 때 내가 한 첫 번째 일은 작업 할 수있는 것을 찾을 수 있는지 확인하기 위해 다양한 언어로 코드를 실행하는 것입니다. 우리가 6 번과 같은 때에 돌아 왔습니다. 솔직히이 도전은 불가능하다고 생각했지만 여기에 있습니다 (# 28 Wow!). 당시 내가 찾은 것은 Brain-Flak이 값 2를 출력한다는 것입니다. 그래서 나는 그것을 배우기 시작했습니다.

Brain-Flak은 배우기 쉽고 배우기를 제외하고는 거의 모든 문자를 무시하기 때문에 이런 종류의 도전에 꽤 좋습니다 (){}[]<>. #또한 같은 줄에 주석을 달면 Brain-Flak에 대해 마지막으로 제출 된 유일한 부분은 print((eval("1\x2f2")and 9 or 13)-(0and 4)^1<<65>>62)다음과 쌍을 이룹니다 ((())()<<>>). 그래서 계획은 파이썬 코드라고 생각하는 것에 불필요한 괄호를 추가했습니다.

Brain-Flak에서 구문 분석하기 위해 파이썬 비트를 수정하여 ((() () ())()()<<()>>)첫 번째는 5이고 두 번째는 3입니다. 그 후에 5를 제곱 ({({})({}[()])}{})하고 결과를 3에 추가합니다 ({}{}). 이 제곱 및 추가는 파이썬 관점에서 문자열로 진행됩니다. 여기서 파이썬의 추론을 이해한다고 주장 할 수는 없지만이 문자열이 다른 언어에 의해 의미있는 방식으로 평가되지 않고 몇 가지 예외가 있다고 확신합니다.

Japt는 문자열 내에서 중괄호를 코드를 포함하는 것으로 해석하지만 이 문자열에서 \각각 앞에 나오기에는 충분히 쉬웠습니다 {. 그러나 이것은 바이트 수를 증가시켰다. 그런 삶입니다.

Prelude는 모든 괄호로 꽤 관대했습니다. 이전 의견에서는 Prelude가 세로로 정렬 된 Pparentheses에 적합하고 하나만 만들었 음을 지적했습니다. 단! (상단 라인은로와 줄 지어 (9큰 라인. 따라서 (맨 위 줄 앞에 추가 공간을 추가해야했습니다 . 여기서 이중 공간은 무언가에 대한 주석 표시기이므로 추가 공간을 추가하는 것이 쉽지 않은 것으로 보였습니다. (9)대신 공백을 추가하려고 시도 했지만 카디널은 협조하지 않았습니다.

05AB1E는 파이썬 문자열에 대한 첫 번째 시도가 큰 따옴표로 캡슐화되는 것을 좋아하지 않았지만 모두 작은 따옴표를 사용하는 것으로 동의했습니다. 큰 문제는 아닙니다.

Hexagony는이 시점에서 유일하게 남은 언어였으며, 다음 16 진 크기 임계 값을 지났으므로 분명히 더러워 질 시간이었습니다. 이것은 /^23!@Hexagony 코드이며 향후 추가가 훨씬 쉬워 질 것이라고 생각하기 때문에 매우 기쁩니다. 이 작은 조각은 기본적으로 코드를 파열시키지 않고 파이썬 문자열의 어느 곳으로나 이동할 수 있습니다. 이것은 전체 문자열이므로 모두 같은 페이지에 '(\{(\{})(\{}\/^23!@[()])}\{})(\{}\{})'있습니다. 은 /우리가 여유를 많이 가지고있는> NW는 W-하기> E 다운이 문자열 - 여기 SE에서 Hexagony의 경로를 설정합니다. (이전 \은 탈출하는 것입니다/thutu BTW). 내 생각은 변경하면, 어떤 시점 에서이 문자열을 끝내고 문자열 내에서 Hexagony 조각을 밀어 코드 경로를 잡고 적절한 결론으로 ​​보낼 수 있다는 것입니다. Japt 's \{. 사이에 오지 않도록주의 하십시오 . 이 문제가 발생 @하면 문자열의 오른쪽이 다른 Hexagony 솔루션에서 그대로 남아 있으며 다른 언어로 인한 결과없이 제거 할 수 있습니다. 물론 Hexagony의 코드 경로를 반대 방향으로 잡는 경우 물론 @!32^\대신 사용할 수 있습니다 /^23!@. 또한 내 솔루션에서===2바이트 제한 이하로 유지하기 위해 코드에서. 여기에 누군가가 Hexagony의 정렬을위한 것이라고 언급했으며 더 이상 필요하지 않았습니다.

Finially, 여기 당신이 디버깅 할 수 있도록 Hexagony 읽을 수 육각형으로 한 줄의 텍스트로 변환 codegolf을 탐험하면서 내가 찾은 코드의 작은 조각이다. 많은 사람들이 이것에 대해 알고 있다고 확신하지만 여기에 게시 된 것을 보지 못했기 때문에 다른 사람에게도 도움이 될 수 있습니다. 공정한 경고, 당신은 백틱 및 캐리지 리턴을 제거하기 위해 입력을 변경하고 코드를 꽤 육각형으로 정렬하기 위해 정상적인 공간을 차지하는 무언가에 대한 리터럴 이스케이프를 교체해야합니다.

추신 : 내가 이것을 쓰는 동안 나는 실수를 깨달았다. 나는에 대한 Hexagony의 메모리 엣지를 지우고 있다고 믿었 ^지만 결과가없는 no-op로 바꿀 수 있습니다. 이 섹션을 조작하려고하면 ^아마도 그럴 것입니다 +. 나는 분명히 +이것에 앞서 통과 했지만, 미래의 polyglotters는 그렇게 운이 좋지 않을 수 있습니다.

행운을 빕니다!


투표하기 전에 런 다운과 설명을 기다리고 있었지만 런 다운은 좋아 보이므로 설명을 기다리는 동안 투표하겠습니다. :-). 모든 추가 백 슬래시가 Thutu에서 구문 오류를 피해야한다고 가정합니까? 또한 코드를 추가 한 위치에 대한 흥미로운 접근 방식은 Hexagony와 관련이 있다고 생각합니다. 전체 설명을 보는 것이 좋을 것입니다. (또한, 환영 PPCG합니다!)

이제 설명을 봅니다. 나는 그것을 읽는 것을 즐겼다. "Python 코드"는 실제로 여러 스크립팅 언어 (Python, Perl 5, Ruby)에서 사용되지만 모두 해석 andor동일한 방식으로 스크립팅 언어에서 코드를 주석 처리하지만 Brain-Flak이 아닌 방식으로 작동합니다 그들 모두에서.

1
감사합니다 @ ais523. 내 코드 배치를 언급했습니다. 그래서, 나는 스크래치 언어 운영자가 스크립팅 언어 에서 볼 수있는 어딘가에 배치해야한다는 것을 알았습니다 . 이것은 Retina에서 작동하지 않았으며 가능한 경우 Retina를 수정하려고 시도하는 2D 언어 문제와 해당 언어를 모두 다루고 싶지 않았습니다. 나는 현재 배치에 빠져서 운이 좋았다.
Chance

2
환상적인 답변과 매우 철저한 설명! 나는 당신이 뇌파를 즐긴다는 것을 정말로 기쁘게 생각합니다. : D
DJMcMayhem

25

38. C, 804 바이트

#  1"16" 3//v\(@#/;n4"14"
#/*`3 auaaZ<>16/"<"6/b.q@")(22)S#  ␉␉␉␉ 
#yy␉;36!@
# ␉
#=␉>
#[#yy#yy0l0mx01k1k0l0ix0jx0h0h1d111P0eU0bx0b0o1d0b0e0e00x1d0i0fx0g0n0n11x0o0n0cx0c0o0f0c0gx0g0f0h0j0j0i0001k10mx0m0l11111100(^_)
#`<`␉|
print((eval("1\x2f2")and( 9 )or(13 ))-(0and 4)^1<<(65)>>(62))or'(\{(\{})(\{}[()])}\{}\{}\{})'#46(8+9+9+9+9+=!)#1|=/=1/24=x=9[<$+@+-@@@@=>+<@@@=>+<?#>+.--.]/
__DATA__=1#//
#.\."12"*␉
""""#//
=begin␉//
#
#*/␉
#define␉z  sizeof 'c'-1?"38":"37"
#include␉<stdio.h>
int main()  /*/
#()`#`\'*/{puts(z);;}/*'``
$'main'␉//
#-3o4o#$$$
<>3N.<>␉//
#xx
#x%~~~+␉+~*ttt*.x
#xx
=end   #//
"""#"#//
#0]#echo 21#/(\[FAC,1<-#2FAC,1SUB#1<-#52FAC,1SUB#2<-#32FACLEGEREEX,1PLEASEGIVEUPPLEASE)  ap
#_~nJ|#o51\   
#0␛dggi2␛`␉|1|6$//''25  >>>#>27.say# =#print(17)#^_^_7LEintndus({})!<>+]/*///Z222999/(3!@)"26

리터럴 탭, 리터럴 ESC 문자입니다. 그렇지 않으면 스택 익스체인지가 프로그램을 혼란시킬 것입니다. 작업하려면 아래 TIO 링크의 "입력"상자에서 프로그램을 복사하는 것이 좋습니다.

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

개요

이 프로그램 인쇄 38 C에서 37 C ++에서 36 미로, 35 INTERCAL에서 34 레일, 33 사건에서, 32 소용돌이에서 31 모듈러 SNUSP에서 30 공백에서 29 트리거에서 28 뇌 플랙에, 27 펄 6에 26 05AB1E에서 25 핍에서 24 Thutu에서 23 Hexagony에서 22 저 부하에서 21 님에서 20 서곡에서 19 Reng에서 18기본적인에서 17 줄리아에서 16 Pyth에서 15 덤에서 14 Turtlèd에서 13 루비에서 12 분열에서 11 비 펀지-98, 10 비 펀지-93에서 9 펄 5, 8 망막, 7 의 JAPT, 6 SMBF에서 5 파이썬 2에서 4 에> <> 3 Minkolang에서 2 V / 빔, 그리고 1 파이썬 3인치

확인

대부분의 언어는 위에 표시된 테스트 드라이버로 테스트됩니다. 당신은 Reng 테스트 할 수 있습니다 여기에 모듈 형 SNUSP을 여기 ; 필요에 따라 19와 31을 각각 출력합니다.

다음은 약간 덜 수정 된 Incident tokeniser 버전으로, 골프는 덜하지만 좀 더 유용하도록 설계되었습니다.

설명

나는 항상 작은 폴리 글 로트를 만드는 것을 좋아했지만 결코 이만큼 큰 것은 없습니다. 나는 아마 그것을 가야한다고 생각했다!

@Chance의 멋진 C ++ 답변 후 C는 다음 논리적 선택으로 보였고 (이전 답변과 비교하여) 상대적으로 쉽게 추가 할 수 있었으므로 기회가 있었을 때 그것을 결정했습니다!

C와 C ++의 차이점을 알리기 위해 잘 알려진 트릭을 사용했습니다. 문자 상수의 크기는 C ++에서 1 바이트이지만 C에서 int (최소 16 비트로 보장됨)의 크기입니다.이 코드는 이식성이 뛰어나야합니다 (int에 맞도록 충분한 비트를 가진 바이트를 사용하는 시스템은 예외). 나는 바보 같은 실수를했다.

나는 printf모든 것을 인라인 으로 처리하려고 시도 했지만 여러 괄호가 Japt에 문제를 일으키는 것처럼 보였으므로 줄을 더 간단하게 만들었습니다.

다음으로 추기경이 마음에 들지 않았습니다 %. printf 때문에 추측 했으므로 문자열 조작으로 전환하여 그 문제를 해결해야했습니다.

다음 시도는 문자열을 할당하려고 시도한 후 C 동작에서 두 번째 바이트 조건을 변경하고 너무 길어서 Hexagony를 다음 크기로 밀어 넣었습니다. 나는 내가 가지고 놀 수있는 여분의 캐릭터 안에 그것을 유지함으로써 그것을 다시하는 것을 피하고 싶었다! 나는 이것을 위해 얻을 수있는 모든 바이트가 필요했기 때문에 @Chance가 제안한 바이트 절약 변경 사항을 구현했습니다.

그래서 나는 C 코드를 조금 다운시키고 puts(sizeof'c'-1?"38":"37");Underload가 segfaulting을 제외하고는 거의 효과 가 있는 것으로 나타났습니다. 아마도 대괄호의 복잡한 표현 때문입니다.

Perl6에서 >>일치하는 데 필요한 여분의 것을 제거한 후에도 <<더 복잡한 부분을 char 배열 할당으로 나눌 수있는 간결한 방법을 얻을 수 없었습니다. 그래서 전처리기를 대신 사용하는 것을 보았습니다.

많은 시행 착오 끝에 Retina가 좋아하는 솔루션을 찾았습니다. 나에게 문제를 일으킨 문제가되었던 Prelude는 그것이 왜 깨지는 지 살펴보기 전에 자신을 !고치게되었습니다. (한 단계에서 3 단계에 괄호 나 I가 있다고 생각합니다. 이전 답변).

그동안 공백이 필요한 것을 얻기 위해 공백을 패치하고있었습니다. 나는 오히려 쉽다는 것을 알았다. 특히 tab space space space매우 유용한 조합 (스택에서 상위 2 개의 항목을 추가하는 명령)이었습니다. 모든 것을 동기화하지 않고 다른 공백이없는 행에 공백을 추가 할 수 있기 때문에 (내 위치를 추측하고 있습니다. 프로그램은 실제로 실행되지 않으므로 스택 언더 플로가 걱정되지 않습니다).

나는 이제 인시던트를 테스트했으며 작동합니다! @Chance와 @LliwTelracs 덕분에 웨일스 어 이름이 아니라는 사실을 깨달았습니다. 이 구문 강조를 참조하십시오 . ;토큰 앞에 표시된 #yy토큰 을 제거했습니다 . 나는 "detokenising"문자열에서 (이전의 C 프로그램에서 훨씬 더 많이 나타남) 명령문을 ;다음과 같이 추가 한 후 여분의 것을 추가하여 간단히 수행 했지만 실제로 Hexagony의 짧은 문자 (@Chance 덕분에) 이므로이 마지막 줄에 추가 문자를 추가하려는 시도가 실패한 후 다시 변경하고 여분의 세미콜론을 다른 곳에 추가했습니다.getss;

또한 공백을 약간 조정하여 다른 토큰을 변경하여 센트 링을 시도하고 탭 줄 바꿈을 다시 토큰 화하기 위해 (줄 끝의 탭을 #include중간으로 이동하여 세 개의 토큰을 만듭니다) define행 에서 한 칸 이동하여 트리플 스페이스 토큰을 토큰 해제하십시오 .

마지막으로, 최초 제출 후 하루가 지나서 gcc가 생성 한 (그리고 Clang이 실패한) 무서운 전 처리기 경고의 맨 아래에 도달하기로 결정했습니다. 첫 번째 줄이 전혀 작동하지 않은 이유는 원래 파일 이름 및 줄 번호 매기기와 같은 디버그 정보를 제공하는 전 처리기의 출력이기 때문입니다. 첫 번째 줄의 첫 번째 "2"는 마음에 들지 않았습니다. 왜냐하면 "포함 된 파일에서 지정된 파일로 복귀"를 의미했기 때문에 포함 된 파일이 없었기 때문에 불가능합니다. 언어를 "1"(일반 헤더 시작)으로 변경하면 너무 많은 언어가 질식되어 "3"(내부 컴포넌트 헤더 시작)으로 변경했습니다. 이제 2를 사용하고 있기 때문에 Hexagony 만 중단했습니다. Hexagony 코드가 시작될 때 열린 괄호를 추가했습니다.(3을 2로 줄인 다음 육각형 코드 )의 끝 ( @) 뒤에 닫는 괄호 를 사용하여 Retina, Prelude 및 Underload를 만족시키는 모든 일치하는 괄호. Reng 및 Modular SNUSP를 다시 테스트해도 아무런 문제가 없었으며 인시던트 토큰이 올바르게 보였으므로 이제 수정했습니다! 다양한 이국적인 아키텍처에서 테스트했으며 작동하는 것으로 보입니다. 나는 코드 골프에 중요하지 않다는 것을 알고 있으며, 미래의 제출자가 바이트 수 또는 그 밖의 것을 유지하기 위해 이것을 다시 중단 해야하는지 (또는 누군가이 솔루션을 기반으로 이미 시작하여 변경하고 싶지 않은 경우) 상관하지 않습니다. TIO의 Objective-C 컴파일러는 Clang 만 지원하므로 누구나 추가하고 싶을 때 매우 유용합니다!

나는이 언어들 중 대부분을 사용한 적이 없다는 것을 명심하십시오. 저의 성공으로 인해 더 많은 신규 이민자들이 이것을 시도해 보길 바랍니다!


@LliwTelracs Huh, Chance의 답변에 연결된 C 프로그램은 토큰 목록에 대해 다른 출력을 가졌습니다. ^ _ ^ _
Muzer

오류는 값을 내 프로그램에 붙여 넣어 탭이나 이스케이프를 인식 할 수 없도록 복사하는 것입니다.
fəˈnɛtɪk

@LliwTelracs 토큰 화를 스스로 알아 내려고 시도한 결과, 세미콜론이 세 번 나타납니다. Hexagony가 잘못 정렬되므로 바이트를 절약 할 수 없다고 생각하는 것을 제외하고는 여분의 것을 추가 할 수 있습니다. 흠 ...
Muzer

1
사건은 일한다!
Muzer

1
@Chance 방금 C 선 처리기에서 첫 번째 행이 어떻게 유효한지 살펴 보았습니다. 디버그 정보 등에 사용되는 선 처리기의 출력 인 것 같습니다. "이제 이름이"16 인 파일로 (2)를 반환 "을 의미합니다. 1 행. Clang 초크 (및 gcc 경고)가 처음에는 파일에 들어 가지 않았기 때문에 2라고 생각합니다. 따라서 돌아올 것이 없습니다. 기회가되면 Clang에서도 컴파일되도록 다른 것으로 변경하는 실험을 할 수 있습니다. gcc.gnu.org/onlinedocs/cpp/…
Muzer

25

65. ALGOL 68 (Genie) , 1634 바이트

#16  "(}+?23!@)-("//*\Dv;'[af2.q]PkPPX'#CO)"14";n4
#/*0|7//```"`   [-'][!(>77*,;68*,@;'1,@10␉␉11)(22)S␉␉(1 P''53'S^'q
#>␉
# 36!@␉`
#
#_>++++.>.}+?
#`<`
#<]}} +<[<.>>-]>[
#{
#z}
#
#=x<R+++++[D>+++++++59L+++<-][pPLEASE,2<-#2DO,2SUB#1<-#52DO,2SUB#2<-#32DOREADOUT,2PLEASEGIVEUPFACiiipsddsd4O6O@oh]>@@+.---@.>][
#x%+>+=ttt Z_*.
#D>xU/-<+++L
#R+.----\).>]|
#[#[(?2?20l0v0x1k1kMoOMoOMoOMoOMOO0l0ix0jor0h0h1d111x0eU0yx0y0moO1d0y0e0e00m1d0i0fx0g0n0n11MoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOmOoMOo0moo0n0tx0t0moO0f0t0gOOM0g0f0h0j0j0i0001k1x0vx0v0l111111^_00)
[ "]56p26q[puts 59][exit]" ,'\[' ];#/s\\/;print"24";exit}}__DATA__/
#
###x<$+@+-@@@@=>+<@@@=>+<?#d>+.--.

#
'(((p\';a=a;case $argv[1]+${a:u} in *1*)echo 50;;*A)echo 54;;*)echo 58;;esac;exit;';print((eval("1\x2f2")and 9or 13)-(0and 4)^1<<(65)>>62)or"'x"or'{}{}{}{}({}<(((((()()())){}{})){}{})>){(<{}(({}){})>)}{}({}())wWWWwWWWWwvwWWwWWWwvwWWWwWWWWWWWWwWWWWwWWWWWWWwWWWWWWWW li ha '#}#(prin 45)(bye)46(8+9+9+9+9+=!)((("'3)3)3)"'
__DATA__=1#"'x"
#.;R"12"'
###;console.log 39
""""
=begin
<>{nd
#sseeeemPaeueewuuweeeeeeeeeeCis:ajjap*///;.int 2298589328,898451655,12,178790,1018168591,84934449,12597/*
#define p sizeof'p'-1?"38":"37"
#include<stdio.h>
main ( ){puts(p);}/*
print 61
#}
disp 49;
#{
}<>
$'main'3
#-3o4o#$$$
#<T>"3"O.s
=end
"""#"
#}
#s|o51~nJ;#:p'34'3\=#print (17)#>27.say#]#print(47)#]#echo 21# xi xi xi xi xi xi xi xi xi xi xi xi xi xi xi xi xi xi xi xi xi xi xi xi xi xi xi xi xi xi ax fwwvwWWWwWWWWwvwWWwWWWwvwWWwWWWwvwWWwWWWwvwWWwwwwwwwwwwwWWWwWWWWWwWWWWWWWwWWWWWWWWWwWWWWWWWWWWWWWWWwWWWWWWWWWWWWwvm 
# sss8␛dggi2␛`|$// ''25  16*///~-<~-<~-<<<~-XCOprint("65")#s^_^_2229996#

VIP 점수 ( Versatile Integer Printer ) : .005949 (개선하려면 다음 항목은 1710 바이트를 넘지 않아야 함)

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

개요

이 프로그램은 출력 65 ALGOL 68에서 64 통증, 63 브라이언 및 척에서 62 잔디에서 61 사일로, 60 , Moorhens의 2.0 59 티클에서 58 ksh을, 57 와이즈에서 56 DC에서 55 뇌 -Flak 클래식 54 zsh을에 53 밀어에서 52 COW에, 51 회의에서, 50 배시에, 49 옥타브, 48 Deadfish ~에서 47 릴리, 46 Cubix에서 45PicoLisp에서 44 alphuck에서 43 망상에서 42 악, 41 브레인 퍽에서 40 최소한도 2d에서 39 커피 스크립트에서 38 C에서 37 C에서 ++, 36 미로, 35 INTERCAL에서 34 레일, (33) 사건에서 32 소용돌이에서 31 모듈러 SNUSP에서 30 공백에서 29 트리거에서 28 뇌 플랙에서 27 펄 6, 26 05AB1E에서 25 핍에서,24 Thutu에서 23 Hexagony에서 22 저 부하에서 21 님에서 20 서곡에서 19 Reng에서 18 카디날에서 17 줄리아에서 16 Pyth에서 15 덤에서 14 Turtlèd에서 13 루비, 12 에서 핵분열 11 비 펀지-98에 10 비 펀지-93에서 9 펄 5에서 8 망막, 7 JAPT에서 6 SMBF에서 5 파이썬 2에서 4 > <>에서 3Minkolang에서는 2 , V / Vim에서는 2 , Python 3에서는 1 입니다.

확인

대부분의 언어는 위의 테스트 드라이버로 테스트 할 수 있지만 6 개 언어는 로컬에서 테스트해야합니다.

  • Reng은 여기서 출력 19로 테스트 할 수 있습니다 .

  • 모듈 형 SNUSP는 여기서 출력 31로 테스트 할 수 있습니다 .

  • 토큰의 수동 밸런싱을 통해 사건을 테스트하는 것으로 확인되었습니다.

  • 이 인터프리터를 사용하여 Deadfish ~를 로컬로 출력하도록 테스트 할 수 있습니다 . Deadfish ~는 표준 입력에 폴리 글 로트를 공급하지만 >>표준 출력에 많은 프롬프트를 인쇄하는데 , 이는 Deadfish ~ 프로그램 실행의 불가피한 결과입니다.

  • Moorhens 2.0 은이 인터프리터를 사용하여 출력 60으로 테스트 할 수 있습니다 .

알코올 68

ALGOL은 아마도 프로그래밍 초기부터 4 가지 고급 프로그래밍 언어 중 가장 잘 알려지지 않은 것입니다.이 엉뚱한 구별의 나머지 언어는 COBOL, FORTRAN 및 Lisp입니다. ALGOL은 당시 학계 및 수학 분야에서 더 잘 알려져 있었지만 오늘날 현대 언어에 큰 영향을 미치는 것으로 잘 알려져 있습니다. 실제로 대부분의 현대적이고 실용적인 언어는 "알골 유사"으로 설명 될 수 있으며, 그 중 최소한 C는 물론 고유 한 영향과 파생물 계보가있는 C입니다.

컴퓨터 역사상 또 하나의 주요 디딤돌이기 때문에 ALGOL을 포함하게되어 매우 기쁩니다.이 기념비에 우리는 폴리 글롯이라고 부릅니다. 멋진 물건입니다.

ALGOL68은 3 가지 주요 ALGOL 사양 중 최신이며 ALGOL60 및 ALGOL58입니다. 흥미롭게도 사양에는 고정 된 구문이 없으므로 토큰이 정의되어 있지만 철자가 아닙니다. 이는 주어진 인터프리터가 다른 심볼을 사용하여 예를 들어 주석 블록을 시작할 수 있기 때문에 언어를 인터프리터에 크게 의존하게 만듭니다. 본 명세서 ¢는 주석 블록을 개시하는 것으로 설명한다. 그러나 ¢기본 127 ASCII 코드 중 하나가 아니기 때문에 사용 가능한 통역사 중 주석 표시기로 많이 사용되지는 않습니다. Genie 인터프리터가로 철자 ¢를 쓰면 #캐릭터 1을지나 폴리 글 로트를 만들어야합니다.

Genie는 실제로 세 가지 주석 구문 옵션을 가지고 있으며 다른 두 가지 옵션은 co및이며 comment, 둘 다 굵게 표시됩니다. 예, 대담 해요 이탤릭체를 사용하면 변수입니다. 지니는 모든 대문자를 굵게 표시하여 다시 해결했습니다. 그리고 CO폴리 글롯에 어디에도 없기 때문에 파서에서 폴리 글롯을 숨기는 쉬운 방법이 있습니다. 길 CO을 따라 언어가 필요한 경우 더 자세한 COMMENT구문으로 전환 할 수 있습니다 .

ALGOL에는 줄 설명이 없습니다. 모두 블록 스타일이므로 종료해야합니다. 폴리 글롯의 초기 상태를 고려할 때 Turtlèd가 #점프 토큰으로 사용하기 때문에 ALGOL 블록 주석이 즉시 열리고 라인 1의 끝 근처에서 종료됩니다 . Turtlèd는 운 좋게도 Cand O문자를 걷는 데 문제가 없으므로 1 행 CO에서 두 번째 직후에 삽입 #하여 ALGOL68에 대한 팻 블록 주석을 시작할 수 있습니다.

여기에서 우리는 COprint("65")어딘가에 배치해야합니다 . 다른 #주석으로 줄을 끝내기를 선호 #하고 마지막 줄의 시작 부분 에서 주석이 끝나기를 원하지 않기 때문에 마지막 줄을 선택했습니다 . 그래서 우리는 우리의 ALGOL 인쇄 문을 수행 #s하고 #수개 국어의 마지막 문자로. s에서이 #s밖으로 균형을 alphuck위한 p인쇄에.

응답 59로 폴리 글 로트의 끝을 열고이 모든 것을 가능하게하는 @ ais523에게 감사합니다.

SMBF

ALGOL의 최종 주석을 종료하기 위해 폴리 글롯 끝에 다른 문자를 추가했으며 SMBF는 이전에 해당 문자의 마지막 문자를 읽었습니다. 이 문제를 해결하려면 8 행의이 코드를 this로 변경하여 SMBF를 변경하여 두 번째 문자부터 마지막 ​​문자까지 읽어야 [.>-]했습니다 [<.>>-]. 루프가 시작될 때 BF의 MP가 0에 있기 때문에 이것은 SMBF 개인 코드 블록입니다.

방아쇠

이 시점에서 SMBF에서 이상한 동작을 발견했으며 폴리 글 로트 끝에 이러한 코드 세그먼트 간의 관계와 관련이있었습니다.

• 사건의 도약 목적지 : ^_^_

• 트리거의 점프 대상과 답변 : X222999

• ALGOL68의 답변 : COprint("65")#s

ALGOL의 답변은 코드 세그먼트 내에서 몇 개의 인시던트 토큰을 토큰 화했기 때문에 ALGOL의 코드는 인시던트의 코드 세그먼트보다 먼저 진행되어야했습니다. ALGOL은 또한 순서대로 1 위를 차지하면 전주 (prelude) 정렬 문제를 일으켜 두 번째 또는 세 번째로 진행해야했습니다. 한편 SMBF는 인시던트 코드가 마지막에 도달했을 때 설명 할 수없는 실패를 일으켰으므로 인시던트가 1 ~ 2 회 진행되어야했습니다. 글쎄, 나는 이것이 해결할 수없는 입문 논리 문제라는 것을 깨달았다. 그래서 나는 설명 할 수없는 것을 더 유연하게 만들기 시작했다.

SMBF를 걷다가 끝에 ^ _ ^ _이 (가)있는 문제는 Wise 때문이라는 것을 알았습니다. Wise의 코드 ( ~-<~-<~-<<<~-)는 대부분의 폴리 글롯과 달리 실행되지 않는 루프 뒤에 숨겨져 있지 않습니다. 그러나 Wise의 코드에는 SMBF 인쇄 코드가 없습니다. 메모리 값만 변경했습니다. 무해한 것 같았습니다. 그렇다면 문제는 무엇입니까? BF 앞에서 그 대담한 SM이었습니다.

와이즈의 코드는 실행될 코드의 문자를 변경하고 있으며 인접 값이 무엇인지 짐작할 수 ^있습니까? 그것은이다 ]. Wise는 폴리 글 로트 끝에 SMBF 루프 터미네이터를 배치하여 SMBF가 무한 루프에 빠지게했습니다. 나쁜 모조 야

일부 생각 후 나는 문제에 대한 0 바이트 솔루션을 가져 와서 Trigger의 점프 대상 ( X)을 답변 ( 222999) 에서 분리 하여 폴리 글 로트를 종료했습니다 ~-<~-<~-<<<~-XCOprint("65")#s^_^_2229996#. 이것은 트리거의 대답이 아닌 트리거의 점프 다음에 문자가 연속적으로 나타나지 않기 때문에 작동합니다.

마무리

이것이 이번 라운드의 모든 주요 변경 사항입니다. 나는 c라인 1에서 논의 된 많은 부분을 줄이기 위해 약간의 변경을 했지만, 그것은 순수한 골프 변경을위한 것입니다.

행운을 빕니다!

사고 보고서

#<q>"3"O.s되었다 #<T>"3"O.sdetokenizing 때문에 T대신에 q균형을 더 효율적이었다

<>{되었다 <>{nddetokenize을 nd하고{␊

사이에 공백을 넣어 }}+의를 #<]}} +<[<.>>-]>[detokenize에 }}+더 싸게.


25

2. V (11 바이트)

print(1)#i2

이 프로그램 은 Python 3에서 1 을, V에서 2 를 인쇄합니다 .

그냥 공을 굴려서 내가 가장 좋아하는 언어를 믹스에 던져 넣는 것입니다. :)

매우 간단한 답변입니다.

print(1)#

V에서도 NOP가됩니다. (나에게 행운입니다) 그런 다음 i2삽입 모드로 들어가서 '2'를 삽입합니다. 여기서 온라인으로 V를 사용해 볼 수 있습니다

물론 파이썬에서는

print(1)

'1'을 인쇄하고

#i2

코멘트입니다.


2
이 V 또는 Vim입니까? 귀하가 연결 한 통역사는 기술적으로 "V"입니다.
mbomb007

@ mbomb007 음, V는 거의 전적으로 하위 호환성이 있으므로 의도는 vim입니다. 나는 그것이 기술적으로 V라고 가정합니다. 변경하기에는 너무 늦습니까?
DJMcMayhem

2
실제로는 답변에서 제목을 편집하십시오.
mbomb007

1
@ mbomb007 문자 그대로의 ESC 캐릭터가 그렇게 할 것입니다 (따라서 제출시 하나를 사용해야했습니다).

1
이것을 테스트하는 사람들을위한 참고 사항 : 이전 Vim 세션에서 cliipboard가 이월되지 않았는지 확인해야합니다.
Riking

24

20. 전주곡, 167 바이트

#v`16 "<" 6/b0\ .q@#;n4"14""
#>3N9@15o|R"12"*^*ttt*~++%
#=|
print((1/2and 9 or 13)-(0and+4)^1<<65>>62);#35(99999+++++!) =#;print(17)
#       ~nJ<
#
#gg99ddi2` |1|1+6

인쇄 가능한 문자가있는 Vim을 삽입 모드에서 벗어날 수 없기 때문에 이전 제출에서와 동일한 위치 ( #및 마지막 줄에서 gand 사이 2`마지막 사이)에 리터럴 ESC 문자가 있습니다.

이 프로그램은 출력 20 서곡에서 , 19 Reng있는 (검증 가능한 여기 ) (18) 추기경 , 17 줄리아에서 , 16 Pyth에서 , 15 덤에서 , 14 Turtlèd에서 , 13 루비 , 12 분열에서 , 11 비 펀지-98 , 10 비 펀지-93 , 9 , 8 망막 , 7 JAPT에서 , 6 SMBF에서 ,5 파이썬 2 , 4 에서> <> , 3 Minkolang에서 , 2 빔 / V에서 , 1 파이썬 3a partridge 배나무 트리 .

기존 코드는 Prelude에서 거의 취소됩니다. 거짓 인수가있는 while 루프와 우리가 신경 쓰지 않는 스택의 일부 스택 조작으로 구성됩니다. 더 좋은 점은 코드에있는 모든 언어 ( 이전 제출 #=#이전 제출 사이의 주석)에 해당하는 부분이 있습니다 . 이것에 Prelude를 맞추기 어려운 부분은 하나의 스택으로 바이트 수를 늘리지 않고 숫자를 생성하는 것이 었습니다. 이 프로그램은 모든 스택 요소에 45를 추가하고 ASCII로 출력하는 루프를 사용하므로 스택에서 3 위에 3을 5를 넣으면 20출력으로 나타납니다. (Netly, 20은 Prelude에있는 19보다 출력하기 쉬운 숫자이므로, 답변 19를 게시하면 실제로 도움이되었습니다.)


Prelude는 향후 프로그램에서 작업하기가 상당히 쉬워야합니다. 문제가 발생할 수있는 사람을위한 몇 가지 조언 : 괄호를 세로로 묶지 마십시오. 괄호 밖에 느낌표를 허용하지 않아야합니다. 괄호 밖에 숫자를 입력하면 같은 줄에 더 많은 괄호를 더 이상 배치하지 마십시오. 내가 Prelude 프로그램을 도입 한 격차는 여전히 열려 있고 다른 1D 언어가 유용 할 수있는 장소 인 것 같습니다 (Prelude의 일종 인 1½D이며이 프로그램에서 1D 언어와 같은 역할을합니다).

Prelude로 펀치를 날려 줘 :) 실제로 ASCII 전용 V를 :%s교체하면 가능할 것으로 생각 하지만 조금 까다 롭습니다 (V는 테스트하기가 성가시다)
Sp3000

:vim에서 a 를 사용하여 명령을 시작하면 캐리지 리턴이 필요하며 인쇄 할 수 없습니다. : /
Zwei

4
a partridge배나무에서 +10000000000 그러나 5 GOLDRINGS로 인쇄 됩니까?
immibis

23

30. 공백 , 296 바이트

#v`16/"<"6/b.q@"(: ::T):  ␉␉␉␉ :(22)S#;n4"14"
#>3N6@15o|>␉^*ttt*~++~~~%
#=~nJ<R"12"; ␉
#[␉
#`<`|
print((eval("1\x2f2")and (9)or(13))-(0and 4)^(1)<<(65)>>62)or'(\{(\{})(\{\/+23!@}[()])}\{})(\{}\{})'#46(8+9+9+9+9+=!)=#print(17)#]#echo 21#|/=1/24=x=90/
#8␛dggi2␛␉` |1|6$//''25  #>say␉␉ 27#T222999"26

␛는 문자 이스케이프를 나타냅니다.

␉는 리터럴 탭을 나타냅니다.

이 프로그램은 출력 (30)을 공백으로 , 29 트리거에서 , 28 뇌 플랙에서 , 15 덤에서 , 14 Turtlèd에서 , 13 루비 , 12 핵분열에 27 펄 6 , 26 05AB1E에서 , 25 핍에서 , 24 Thutu에서 , 23 Hexagony에서 , (22) 저 부하에서 , 21 님에 , 20 서곡에서 ,Reng에서 19 번 ( 여기 에서 테스트), 18 번 에서 Cardinal에서 , Julia 에서 17 , Pyth 에서 16 , , 11 비 펀지-98 , 10 비 펀지-93 , 9 펄 5 , 8 망막 , 7 JAPT에서 , 6 SMBF에서 , 5 파이썬 2 , 4 에서> <> , 3 에서 Minkolang , 2 에서 V / Vim , 1 에서 Python 3 .

공백은 제한된 문자 집합을 가진 또 다른 esolang입니다. 이것은 탭, 공백 및 줄 바꿈 만 읽습니다.

따라서 Whitespace가 읽지 않은 모든 내용을 꺼내면 다음 코드가 남습니다.

[space][space][space][LF]
[space][LF]
[LF]
[LF]
[LF]
[space][space][space][space][space][LF]
[space][space][space][space]

그리고 30을 출력하는 코드는 다음과 같습니다.

[space][space][space][tab][tab][tab][tab][space][LF]
[tab][LF]
[space][tab]

따라서 기존 코드의 맨 위 3 줄에는 요구 사항을 충족시키기 위해 줄 끝에 추가 공간이 제공되었습니다. 행 1의 탭과 후행 공백은 행의 중간에 있으며, <>의 요구를 수용합니다.

2 행의 공백이 여기 탭으로 변경되었습니다. 이것은 2D 언어 공간과 동일하게 작동하는 것처럼 보이지만 시각적으로는 더 이상 정렬되지 않습니다. ¯ \ _ (ツ) _ / ¯

출력을 30으로 지시 한 후에 게임은 의미없는 작업을 수행하고 올바르게 컴파일하는 데 필요한 나머지 공간과 줄 바꿈을 얻습니다.

공백에는 임의의 수의 탭과 공백을 허용하는 레이블이있는 코드 위치를 표시 / 이동하는 명령이있어서 긴 줄의 공백을 줄였습니다. 또한 줄 바꿈으로 시작하고 끝나므로 3-6 줄의 줄 바꿈 일부를 향상시키는 데 도움이되었습니다.

마지막 라인은 Retina를 중단하지 않고 라인 피드를 가질 수 없었기 때문에 명령은 임의의 수학 및 스택 조작을 수행하는 것입니다.

공백, 탭 및 줄 바꿈이 표기법으로 대체 된 전체 코드는 다음과 같습니다.

#v`16/"<"6/b.q@"(:[Space]::T):[Space][Space][Tab][Tab][Tab][Tab][Space]:(22)S#;n4"14"[LF]
#>3N6@15o|>[Tab]^*ttt*~++~~~%[LF]
#=~nJ<R"12";[Space][Tab][LF]
#[[Tab][LF]
#`<`|[LF]
print((eval("1\x2f2")and[Space](9)or(13))-(0and[Space]4)^(1)<<(65)>>62)or'(\{(\{})(\{\/+23!@}[()])}\{})(\{}\{})'#46(8+9+9+9+9+=!)=#print(17)#]#echo[Space]21#|/=1/24=x=90/[LF]
#8␛dggi2␛[Tab]`[Space]|1|6$//''25[Space][Space]#>say[Tab][Tab][Space]27#T222999"26[LF]

그리고 여기에 공백의 주석이 달린 버전이 있습니다.

Push 30 onto the stack
[space][space][space][tab][tab][tab][tab][space][LF]

Output the number at the top of the stack
[tab][LF][space][tab] 

Jump to label null if the top of the stack is negative. (it's not)
[LF][Tab][LF]

Label this location as [Space]
[LF][Space][Space][Space][LF]

Add the top two items on the stack and replace them with the result. 
[Tab][Space][Space][Space]

Store the stack.
[Tab][Tab][Space]

편집 : Hexagony는 이전의 주장과 달리 공백처럼 탭을 건너 뛰는 것으로 나타났습니다. @ ais523은 @Kenney의 Hexagonizer를 업데이트하여 문자 이스케이프 및 탭을 설명 할 수있을 정도로 친절했습니다. 탭이 no-ops로 읽히는 것에 대한 이전의 주장을 수정 .하고 문자가 다른 문자보다 넓기 때문에 16 진수가 약간 잘못 정렬되어 문자 이스케이프를 대체해야했습니다 . 여기에 링크가 있습니다.

그리고 이것은 우리의 수정 된 현재 16 진수입니다.

          # v 1 6 / " < " 6 /
         b . q @ " ( : : : T )
        : : ( 2 2 ) S # ; n 4 "
       1 4 " # > 3 N 6 @ 1 5 o |
      > ^ * t t t * ~ + + ~ ~ ~ %
     # = ~ n J < R " 1 2 " ; # [ #
    < | p r i n t ( ( e v a l ( " 1
   \ x 2 f 2 " ) a n d ( 9 ) o r ( 1
  3 ) ) - ( 0 a n d 4 ) ^ ( 1 ) < < (
 6 5 ) > > 6 2 ) o r ' ( \ { ( \ { } )
  ( \ { \ / + 2 3 ! @ } [ ( ) ] ) } \
   { } ) ( \ { } \ { } ) ' # 4 6 ( 8
    + 9 + 9 + 9 + 9 + = ! ) = # p r
     i n t ( 1 7 ) # ] # e c h o 2
      1 # | / = 1 / 2 4 = x = 9 0
       / # 8 . d g g i 2 . | 1 |
        6 $ / / ' ' 2 5 # > s a
         y 2 7 # T 2 2 2 9 9 9
          " 2 6 . . . . . . .

마지막으로 불필요한 캐릭터를 골랐는데 주로 Prelude 괄호와 Hexagony 육각형을 정렬하기 위해 추가되었습니다.

님의 코드에 돌아 echo 21에서echo 5+5+11

헥사 고니 #@46는 지금#46

Hexagony의 코드에 돌아 /+23!@=에서/+23!@

Prelude의 괄호 정렬 (9) or (13)(9)and(13)

그게 내가 가진 전부 야 모두 행운을 빌어 요!


1
나는 모든 링크를 수정하고 복사 붙여 넣기 결과 공간에 places을 추가했다고 생각합니다. SE에서 탭을 탭으로 만드는 방법을 모르면 Tio의 코드가 명확해야합니다. 또한이 답변의 지침에서 솔루션을 다시 만들어야했지만 어쨌든 2 비트가 적었습니다 ... 죄송합니다.
기회

1
설명에서 실수를 발견했습니다. 캐리지 리턴 (ASCII 13)은 줄 바꿈 (ASCII 10)과 다릅니다. 공백을 포함하여 대부분의 언어는 13이 아닌 10에 관심을 갖습니다. (PPCG 제출에서 줄 바꿈은 별도의 언급이없는 한 단일 ASCII 10이라고 가정합니다 .13은 바이트 수를 이익).

1
첫 번째 반사 후 NW가 나타날 때 e 뒤에 육각형 설명 이미지가 잘못 인쇄됩니다e23 ( 인쇄 ) ;. 위의 링크는 작동합니까 ...?
MildlyMilquetoast

1
나는 Hexagony 용 TIO가 탭 문자를 공백 / 줄 바꾸기로 취급한다는 결론에 도달했습니다. 육각형 프로그램에서 제공하는 이미지는 따를 경우 종료되지 않습니다 (또는 TIO에 넣고 탭을 .s로 대체 ). 그러나 훈련 .(실제 코드의 일부가 아님) 및 모든 remove를 제거하는 것을 제외하고 이미지의 코드를 TIO로 복사하십시오 . 23을 인쇄합니다.
MildlyMilquetoast

1
와, 감사합니다 @MistahFiggins! 나는 연역적 인 실수를 저지르고 내 설명에 전파 한 것처럼 보입니다. 나는 Hexagony 설명, 16 진수 다이어그램 및 Hexagonoizer Perl 스크립트를 수정했으며 결과를 Hexagony와 직접 비교했습니다. 이제 모든 것이 좋을 것입니다. 잘 찾아라!
기회

23

100. brainbool, 2953 바이트

#16  "?63(o?23!*# #@"/*\DZZCv;'[af2.q]PkPPX)\('#CO"14"; */
#/*0|7//```"`  [>.>.])[-'][(>77*;,68*,@,1',;# l1011)(22)S\4n;iiipsddpsdoh coding:utf8ââââ(1P''53'S^'????!?!??!??!!!!???!?!??!!?!?!!!!!?!!!!?????!????????????????????!) (qx
#>â
# 36!@â`  e++++++::@ 
#~
#y
#`<`
#<<<#>>]}}+-[.+..]+-+<[<<.>>x>-]>[
#{
#x}
#2""/*\*
#=x<R+++++[D>+++++++q   L+++<-][pPLEASE,2<-#2FAC,2SUB#1<-#52FAC,2SUB#2<-#32FACREADOUT,2PLEASEGIVEUPFACs]>@@+.---@.>][
#x%+>+=ttt Z_*.
#D>xU/-<+++L
#R+.----\   \).>]4O6O@|
#[#[(?2?20l0v01k1kMoOMoOMoOMoO MOO0l0ix0jor0h0h1d111x0eU0y0yx0moO1d0y0e0e00m1d0i0fx0g0n0n11MoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOmOoMOo0moo0n0tx0t0moO0f0t0gOOM0g0f0h0j0j0i0001k1x0vx0v0l111111^_0 )0\\
[  "]56p26q[puts 59][exit]" ,'\[999'];#/s\\/;print"24";exit}}__DATA__/
###x<$+@+-@@@@=>+<@@@=>+<?#d>+.--.<!\
'(wWWWwWWWWwvwWWwWWWwvwWWWw WWWWWWWWwWW/"78"oo@WWwWWWWWWWwWWWWWWWWwwwwvwWWWwWWWWwvwWWwWWWwvwWWwWWWwvwWWwWWWw              (([5]{})))â\';';print((eval("1\x2f 2")and 9or 13<< (65)>>65or 68)-(0and 4)^1<<(65)>>62)or"'x"or' {}{}{}{}({}<(((((()()())){}{})){}{})>)(({})5){}x{(x<(<()>)({})({}<{}>({}){})>){({}[()])}}({}){}({}()<()()()>)wWW no no no no no no no no no no no no no no no no no no no no no no no no no no no no no no os sp '#}#(prin 45)(bye)46(8+9+9+9+9+=!)((("3'3)))"'a'[[@*3*74[?]*]*(<*.*\>]xxxxxxxxxxxxx)'# \\
__DATA__=1#"'x"
#.;R"12"'
###;console.log 39;'(******* **********819+*+@[*99[?]*]***|!)'
#\\
""""#\
' ( <><        (          )>  ){ ({}[()]  )}{\';      a=$(printf \\x00    );b=${#a};#\\
" }"';           ((   ( (';case "{"$ar[1]"}"${b} in *1)echo 54;;*4)echo 78;; *1*)echo 50;;*)echo 58;;esac;exit;# (((('))))#\
=begin
#p             +555/2+55x%6E2x
;set print "-";print 89;exit#ss 9
utpb now 70 dollar off!
utpb has been selling out worldwide!
#9999 9 seeeemPaeueewuuweeeeeeeeeeCis:ajjappppppp😆😨😒😨💬95💬👥➡
👋🔢🌚🌝🌝🌚🌚🌚🌚🌚

set ! 57
set ! 51
More 91 of thiset of re9
How much is it*/
#if 0
.int 2298589328,898451655,12,178790,1018168591,84934449, 12597
#endif//*
#1"" //*
#include<stdio.h> 
#defineâ x(d)â#d
#define u8 "38\0 "
main ( ) {puts( sizeof (0,u8)-5?u8"67":*u8""?"37":     x( 0'0  "'\"")[9]?"75":'??-'&1? "79":"77");"eg5""6 27""e ' Zing  ";}//*/
#if 0
#endif//* --... ...--
/*/
p=sizeof("9( 999 99\"    ); print'(''72'')';end!"            );main( ){puts(  "92");return(9-9+9 -9);}
#if 0â
#endif//* rk:start | print: "69" rk:end<(9    >5b*:,1-,@
print 61
#}
disp 49 ;9;
#{
}{}<>
$'main'3
#-3o4o#$$$
#<T>"3"O.</+++++++>/+++<-\>+++.---.
#<<<#>>> /
reg end="";print(85);reg s#++++++++++++++++++++++++++++++++++++++++++++++++++++++++.-.
=end
;"""#"#xxxxxxxy"78"\++++>/<~#class P{        function:Main(a:String[] )~Nil{83->Print();} }
#}pS9^7^8^MUOUOF@:8:8\\
#s|)o51~nJ;#:p'34'3  \=#print(17)#>27.say#]# print(47) #]#echo 21#fwwwwwWWWwWWWWWwWWWWWWWwWWWWWWWWWwWWWWWWWWWWWWWWWwWWWWWWWWWWWWwvm>++++
#s8âdggi2âM`|$//''  1$6~-<~-<~-<<<~-COprint ("65")#asss^_^_#
#9 "25"  +/ *///X222999686#

VIP 점수 ( Versatile Integer Printer ) : .002953 (개선하려면 다음 항목은 3042 바이트를 넘지 않아야 함)

개요

이 프로그램을 인쇄 파이썬 3에 2 V IN / 빔, 3 Minkolang에서, 4 에서> <> 5 파이썬 2에서 6 SMBF에서 7 JAPT에서 8 망막, 9 펄 5에서 10 Befunge-에서 93 11 비 펀지-98에서 12 분열에서 13 루비, 14 Turtlèd에서 15 덤에서 16 Pyth에서 17 줄리아에서 18 카디날에서 19 Reng에서 20 서곡에서 21님에서 22 저 부하에서 23 Hexagony에서 24 Thutu에서 25 핍에서 26 05AB1E에서 27 펄 6, 28 뇌 플랙에서 29 트리거에서 30 공백에서 31 모듈러 SNUSP에서 32 소용돌이에 , 33 사건에서 34 레일, 35 INTERCAL에서 36 미로, 37 의 C ++ 03, 38 C99에서 39 커피 스크립트에서 40 최소한도 2d에서 41 브레인 퍽에, 사악한 42 , 망상 43 , Alphuck 44 , PicoLisp 45 , Cubix 46 , Lily 47 , Deadfish 48 ~, Octave 49 , Bash 50 , 어셈블리 51 , COW 52 , Shove 53 , 54 zsh을에 55 뇌 플랙 클래식, 56 DC에서 57 와이즈에서 58 ksh을, 59 은 Tcl에서 60 있는 Moorhens에서 61 사일로, 62 잔디에서 63브라이언 및 척에서 64 통증, 65 ALGOL 68에서 66 표면, 67 C11에서 68 파이썬 1에서 69 RK-LANG에서 70 상용에서 71 어떤에서 72 포트란, 73 모스에서 74 아치에서 75 C ++ 11, 76 Trefunge-98, 77 C ++ 14, 78 대시, 79 C ++ 17에서 80 클라인 (201)에서 81 클라인 (100)에서 82 뇌 Flueue에서, Objeck에서 83 , 84 클라인 001에서 85 ZKL에서 86 Miniflak에서 87 앨리스, 88 핑퐁에서 89 의 gnuplot에서 90 RunR에서 91 Cood에서 92 . brainbool에서 100C89에서 93 , 세트에서 94 , Emotinomicon에서 94 , Emoji에서 95 , EmojiCoder에서 96 , Cubically에서 97 , Archway2에서 98 , 99 에서 99

확인

온라인으로 사용해보십시오! TIO에서 사용할 수없는 언어 :

설명

나는 우리가 그것을 100 개의 언어로 만들었다는 것을 믿을 수 없다. 시간을내어이 과정에 참여한 모든 사람에게 감사의 말씀을 전합니다. 그것은 즐거운 타기 였고 나는 너희들과 100을 더 추가하기를 희망합니다.

Brainbool은 한동안 내 눈에있었습니다. 그러나 이후 brainbool 할 수있는 유일한 출력이 개 번호, 10 지금까지 추가 할 수 없었다 (I 10, 11 주변에 없었다).

Brainbool은 256으로 줄 바꿈하는 대신 2로 줄 바꿈한다는 점을 제외하면 brainfuck과 같습니다. Brainbool은와 -중복되므로 a가 없습니다 +. 100을 출력하는 우리의 brainbool 코드는 매우 간단합니다.

+.+..

brainfuck에 대한 출력을 숨기려면 루프와 빼기를 추가합니다.

+-[.+..]

이제 필요한 것은 코드가 갈 곳을 찾는 것입니다. 선택의 내 장소는 처음 +에 대체 할 수 라인 (8)에 브레인 퍽 코드의 최상위 수준에서 플러스 우리는 우리의 코드와 추가 +-+A와 역할 +브레인 퍽과 brainbool에서 무 조작에 있습니다.

+-[.+..]+-+

큐빅스

Cubix 캡슐 앞에 코드를 넣으면 미러가 포인터의 경로로 이동합니다. 이 문제를 해결하기 위해 캡슐을 문제의 거울 앞에서 몇 걸음 앞으로 옮겼습니다.

놀랍게도 악명 높은 사건조차도 파산하지 않았습니다.


실제로 brainbool은 aribtrary text를 출력 할 수 있습니다. -b인수 를 전달하면 1과 0을 바이트로 빌드 한 다음 문자로 출력합니다.
Pavel

1
@WheatWizard Archway2에서 작동한다는 것을 확인했습니다.
stasoid

1
축하합니다! VIP 점수도 0.003 이하로 떨어졌습니다.
Ørjan Johansen

1
100/101에 이것을 추가하는 것에 대해 처음 게시했을 때 고백해야합니다. 실제로 우리가 여기에 올 것이라고 생각하지 않았습니다. 이것은 꽤 멋지다.
SnoringFrog

1
@stasoid TIO에서 Archway를 얻는 중입니다.
MD XF

21

27. Perl 6 , 235 바이트

#v`16/"<"6/b.q@"(::):::  (22)S#;n4"14"
#>3N6@15o|> ^*ttt*~++~~~%
#=~nJ<R"12";
#[
#`<`|
print((eval("1\x2f2")and 9 or 13)-(0and 4)^1<<65>>62)#@46(8+9+9+9+9+=!)=#print(17)#3]#echo 21#===2|/=1/24=x=90/
#8␛dggi2␛` |1|6$//''25  #>say 27#"26

␛는 평소와 같이 리터럴 ESC 문자를 나타냅니다.

이 프로그램은 출력 27 펄 6 , 26 05AB1E에서 , 25 핍에서 , 24 Thutu에서 , 23 Hexagony에서 , (22) 저 부하에서 , 21 님에 , 20 서곡에서 , 19 (시험 Reng에서 여기 ) (18) 추기경 , 17 년 Julia , Pyth 16 , Haystack 15 , Turtlèd 14 , Ruby 13 ,12 분열에서., 11 비 펀지-98 , 10 비 펀지-93 , 9 펄 5 , 8 망막 , 7 JAPT에서 , 6 SMBF에서 , 5 파이썬 2 , 4 에서> <> , 3 Minkolang에서 , 2 빔 / V의 , Python 3 에서는 1 , 크리스마스 에는 배나무a partridge 에서

이 답변에 대해 Stack Exchange가 생성하는 구문 강조는 완전히 잘못되었습니다. #`<는 Perl 6의 여러 줄 주석 표시 자 중 하나이며로 끝납니다 #>. 따라서 실제로 Perl 6에서 실행되는 유일한 코드는 매우 간단 say 27합니다. <>대부분의 언어에서 일치하는 쌍이 아니기 때문에이 특정 주석 마커를 선택했습니다.< 하지 않는 Retina와 같은 언어는 구문 분석을 시도하지 않습니다.

나는 Hexagony가 더 이상 어떻게 작동하는지 완전히 확신하지 못합니다. 부러 졌을 때, 나는 사용중인 문자 중 하나 +를 a 에서 a 로 변경하여 0적중했는지 확인했습니다. 그것은 그것이 프로그램으로 밝혀졌지만 밝혀진 이유는 확실하지 않습니다 (왜 #실행 라인 으로 인해 고장 제거하는 이유는 확실하지 않습니다+ 수정 사항을 ). (문제의 캐릭터도 Thutu에 의해 파싱되지만, 운 좋게도 프로그램의 시점에서``앞에없는``를 Thutu 프로그램의 기능과 차이가 없습니다.= 것은 문자 그대로 작업에 복사됩니다. string.) 0and+4이전 줄에서0and 4헥사 고니의 관점에서 한 문자를 더 짧게 만들려면 (헥사 고니에는 공백이 표시되지 않습니다); 이것은 #|이전 행 보완하기위한 것 입니다.#`<`|, 이것은 Hexagony의 관점에서 한 문자 더 깁니다 (역 인용 부호도 없기 때문에). 코드는 이제 Hexagony 측면 길이를 확장하고 현재 Hexagony 코드에 대한 모든 것을 깨는 데 5 바이트 밖에 걸리지 않습니다. 어쨌든 이것을하고 코드의 Hexagony 섹션을 다시 실행하는 것이 좋습니다. 확장 후 모든 것을 맞추는 것이 더 어렵지 않고 쉬울 것입니다.

다른 언어들도 변경되었는데, 대부분 마지막 줄에 임의의 코드를 넣을 수있는 충분한 견고성을 추가했습니다. $//Japt의 주석 마커는 나중에 줄에 공백을 허용하여 추가 된 프로그램을 Japt에서 덜 취약하게 만듭니다 ( //이후 줄에 닫는 괄호가 있으면 중단되고 공간은 Japt의 닫는 괄호입니다). 한 쌍의 공백은 Pip의 주석 표식입니다. 여기서 Pip 코드를 크게 단순화 할 수 있습니다. 이것은 또한 우리가 05AB1E를 사소한 것으로 단순화 할 수 있음을 의미합니다 "26. Retina는 다섯 번째 줄이 일치하는 것을 잘하는 법적인 정규식이어야합니다 (후행|따라서 레티 나에 대한 것입니다); 이전 항목의 해당 행과 다르게 구문 분석되지만 적절한 방식으로 구문 분석됩니다. 추기경은 이전 항목보다 약간 간단하지만 모든 것이 수직으로 정렬되는 방식과 완전히 일치하며 변경 사항은 아무것도하지 않은 코드로 변경됩니다.

Hexagony를 다시 실행한다고 가정하면 (아마도 필요할 것입니다) 마지막 세 줄 모두에 코드를 추가 할 수있는 안전한 장소가 있습니다. 3in #3]#은 Hexagony 전용이며 쉽게 변경됩니다. 마지막 줄 #"마지막 줄 사이의 공백은 대부분의 언어에서 무시됩니다. 레티 나 이외의 다섯 번째 줄의 끝을 파싱하는 것은 없습니다. (코드를 추가 할 수있는 다른 곳도 많이 있지만 가장 편리한 곳일 것입니다.)


1
이 답변을 실수로 다운 보트하고 내 담당자가 1 씩 줄어든 것을 보았을 때 다운 보트를 보았습니다. : D
betseg

4
@betseg : 나는 당신을 위해 Hexagony에 대해 조금 더 토론했습니다.

2
현상금을 축하합니다! 나는이 포스트를 다시 움직이고 싶었다. : P
FlipTack

나는 여러 해 동안 그것을 계속할 계획이었고, 단지 시간을 찾으려고 노력한 경우였습니다. (실제로 체인의 초반에 Perl 6에서 실제로 실패한 시도를했지만 작동하지 않아 게시하지 않았습니다. 운 좋게도 실수를 통해 배웠으며 이번에는 작동합니다.)

21

31. 모듈 식 SNUSP , 326 바이트

프로그램

#v`16/"<"6/b.q@"(: ::T):  ␉␉␉␉ :(22)S#;n4"14"
#>3N6@15o|>␉^*ttt*~++~~~%
#=~nJ<R"12"; ␉
#[␉
#`<`|
print((eval("1\x2f2")and (9)or(13))-(0and 4)^(1)<<(65)>>62)or'(\{(\{})(\{}[()])}\{})(\{}\{})'#46(8+9+9+9+9+=!)=#print(17)#]#echo 21#|/=1/24=x=9[<$+@+-@@@@=>+<@@@=>+<?#>+.--.]/
#8␛dggi2␛␉` |1|6$//''25  #>say␉␉ 27#T222999+/+23!@"26

평소와 같이 리터럴 ESC 문자이며 리터럴 탭입니다.

개요

이 프로그램은 인쇄 (31)를 모듈 형 SNUSP에서 30 공백에서 29 트리거에서 28 뇌 플랙에서 27 펄 6에 26 05AB1E에서 25 핍에서 24 Thutu에서 23 Hexagony에서 22 저 부하에서, 21 님에 , 20 서곡에서 19 Reng에서 18 카디날에서 17 줄리아에서 16 Pyth에서 15 덤에서 14 Turtlèd에서 13 루비에서 12 분열에서,11비 펀지-98에 10 비 펀지-93에서 9 펄 5에서 8 망막, 7 JAPT에서 6 SMBF에서 5 파이썬 2에서 4 > <>에서 3 Minkolang에서 2 V / 정력 및 파이썬 3에서 1 입니다.

확인

런 다운에 링크가없는 이유는 무엇입니까? 테스트를 훨씬 쉽게하기 위해 노력하고 있기 때문에 여기에 나열된 대부분의 언어로 프로그램을 실행하고 결과를 인쇄하는 테스트 드라이버입니다. 이를 통해 향후 언어를 폴리 글롯에 훨씬 쉽게 추가 할 수있을 것입니다. 다음 TIO 링크 (Bash, Perl 및 A Pear Tree를 혼합하여 작성된 테스트 드라이버)를 실행하여 31 개 언어 중 28 개 언어로이 프로그램의 결과를 얻을 수 있습니다.

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

이 링크는 또한 위에 표시된 / 형식의 코드 블록을 생성하고 코드를 육각형으로 형식화합니다.

          # v 1 6 / " < " 6 / b
         . q @ " ( : : : T ) : :
        ( 2 2 ) S # ; n 4 " 1 4 "
       # > 3 N 6 @ 1 5 o | > ^ * t
      t t * ~ + + ~ ~ ~ % # = ~ n J
     < R " 1 2 " ; # [ # < | p r i n
    t ( ( e v a l ( " 1 \ x 2 f 2 " )
   a n d ( 9 ) o r ( 1 3 ) ) - ( 0 a n
  d 4 ) ^ ( 1 ) < < ( 6 5 ) > > 6 2 ) o
 r ' ( \ { ( \ { } ) ( \ { } [ ( ) ] ) }
\ { } ) ( \ { } \ { } ) ' # 4 6 ( 8 + 9 +
 9 + 9 + 9 + = ! ) = # p r i n t ( 1 7 )
  # ] # e c h o 2 1 # | / = 1 / 2 4 = x
   = 9 [ < $ + @ + - @ @ @ @ = > + < @
    @ @ = > + < ? # > + . - - . ] / #
     8 . d g g i 2 . | 1 | 6 $ / / '
      ' 2 5 # > s a y 2 7 # T 2 2 2
       9 9 9 + / + 2 3 ! @ " 2 6 .
        . . . . . . . . . . . . .
         . . . . . . . . . . . .
          . . . . . . . . . . .

세 가지 언어가 누락되었습니다. V가 너무 느리고 Reng 및 Modular SNUSP가 TIO에 설치되어 있지 않습니다. 운 좋게도 세 사람 모두 온라인 통역사가 있습니다.

  • V / Vim (의도 한 출력 : 2) 에서 프로그램을 테스트 할 수 있습니다. TIO합니다.
  • 온라인 Reng 인터프리터가있다 (구성 출력 : 19) 여기 .
  • 온라인 모듈 식 SNUSP 인터프리터 (의도 한 출력 : 31)가 있습니다 . (이것은 SNUSP 인터프리터로만 광고되지만 모듈 SNUSP는 실제로 @페이지에서 사용 되는 부호 로 볼 수있는 방언 입니다.)

세 가지 모두 의도 된 출력을 생성하므로 31 개 프로그램 모두가 올바르게 테스트됩니다. (나에게 약간의 관심이있는 것은 공백 프로그램이 올바르게 종료되는지 여부에 관한 것입니다. 그러나 여기의 공백은 이전 제출과 동일하므로 둘 다 맞거나 틀립니다. 프로그램이 실제로 종료되는 것으로 판명되면 잘못하면 두 프로그램 모두 같은 방식으로 고칠 수 있습니다.)

설명

우선, Hexagony는 항상 변화가 필요한 것 같습니다. 실제로 이전보다 훨씬 간단합니다. 나는 Hexagony 코드를 Trigger 코드 바로 다음으로 옮겼습니다. 이는 프로그램의 끝 부분에 가깝다는 것을 의미하며 23을 인쇄하고 종료하는 Hexagony "캡슐"은 거의 즉시 실행됩니다. 마지막 줄은 일반적으로 캡슐을 넣을 수있는 좋은 장소처럼 보입니다. 왜냐하면 Hexagony가 실행될 수있는 명령이 적기 때문입니다.

다른 모든 변경 사항은 모듈 식 SNUSP 코드 추가와 관련이 있습니다. 가장 먼저 알아 두어야 할 것은 SNUSP $는 프로그램 의 첫 번째 문자에서 실행을 시작 하고 프로그램의 가장자리를 벗어난 후 종료되는 2D 언어이며 SNUSP 프로그램을 긴 줄의 끝에 배치합니다 (내부) Thutu 코드는 Thutu가 거의 모든 것을 수용하는 지점에서) SNUSP가 다른 언어의 코드를 보지 못하게 할 수 있으며 대부분의 다른 언어는 SNUSP에 신경 쓰지 않습니다. 하나 개의 언어 관리는 꺾쇠 괄호 구문 분석 펄 6이었다; 나는 <행복을 유지하기 위해 SNUSP 코드 바로 앞에 배치했습니다 (괄호가 자연스럽게 거의 일치했기 때문에). 관심있는 다른 언어는 SMBF입니다..SMBF와 SNUSP의 출력을 모두 제공하므로 추가 출력을 생성하고 싶지 않습니다. 운 좋게도 SMBF에서 볼 수 있듯이이 프로그램 가<.>>[…] SNUSP 코드가 뒤에옵니다. 즉, 현재 테이프 요소는 0입니다. 따라서 SNUSP 코드를 대괄호로 묶으면 SMBF의 관점에서 "설명"됩니다.

코드 자체는 많은 "시작 프로 시저"명령을 행으로 작성하고 일종의 기본 피보나치 수를 효과적으로 만드는 모듈 식 SNUSP에서 상수를 작성하는 데 잘 알려진 트릭을 사용합니다. 기본 아이디어는 +숫자 1 을 인코딩하는 것입니다 . @그 뒤에 코드로 표시되는 숫자와 그 뒤의 코드에서 첫 문자를 뺀 숫자를 더합니다. 그리고 =no-op입니다 (따라서 @=숫자를 오른쪽으로 두 배로 늘릴 것입니다). 이 시스템에서 나는 @@@@=+@@@=+#숫자 48의 표현으로 선택 했습니다.

그러나 여기에는 문제가 있습니다. SNUSP에서 상수를 작성하는 표준 방법은 프로그램 시작 뒤에 제어 흐름을 남겨두고 oneliner (명백한 이유로 여기에 작성하고 싶음)를 사용하면 IP를 어떤 방향으로도 가리 키도록 변경할 수있는 방법이 없습니다. 즉, 프로그램이 종료되지 않고 ( #정상적으로 수행되는) 전체 상수 정의를 통과하고 계속 오른쪽으로 계속 IP를 가져와야한다는 것을 의미 합니다. 이 문제를 해결하기 위해 +항상 앞에 오는 숫자의 정의를 신중하게 사용 했습니다 =. 이것은을 통해 두 번째 셀을 48 로 설정하는 코드를 작성할 수 있다는 것을 의미합니다 @@@@=>+<@@@=>+<#.> 명령가 건너 뛴되지 않습니다@명령 (따라서 우리는 테이프 포인터를 제어합니다). 또한 우리는 final #에서 첫 번째 테이프 셀이 여전히 초기 값을 가짐 을 알고 있습니다. 따라서 첫 번째 테이프 셀을 마커로 사용하여 프로 시저 정의에서 돌아올 것인지 또는 오른쪽으로 계속할 것인지를 알 수 있습니다 (우리는이를 수행 할 때 많은 수의 프로 시저에 속하지만 중요하지 않습니다).

따라서 최종 SNUSP 코드는 $+@+-@@@@=>+<@@@=>+<?#>+.--.입니다. $마크 프로그램의 시작. +@+-첫 번째 테이프 요소를 1 ( ++-로 설정하지만 프로 시저가 @리턴으로 시작되면 코드를 -계속 실행하기 시작 하여 테이프 요소를 다시 0으로 설정합니다 ?#. 첫 번째 테이프 요소가 0이 아닌 경우에만 프로 시저를 종료합니다. 우리는 결국 #두 번째 테이프 요소를 50 (정수 정의에서 48 >+<, 오른쪽으로 갈 때 발생 하는 두에서 2 )으로 설정 한 다음 >+.--.ASCII 코드 51 ( 3) 을 출력하기 만하면됩니다. 49 ( 1), 프로그램 가장자리 ]에서 벗어남 (SNUSP에서 no-op이며, /프로그램의 상단 가장자리를 벗어나도록 제어 흐름을 수직으로 반영합니다. 이 비트는 brainfuck과 동일하게 작동합니다.


20

11. 98 , 102 바이트를 Befunge

#v;2^0;7||"<+0+0+0+<;n4
#v0#_q@
#>3N.
#|\w*
#8  ^1b0<
#|
#M`
print(None and 9or 1/2and 1or 5)
#jd5ki2

인쇄물:

솔직히 말해서, Vim 코드가 출력하는데 1 분이 걸리는 이유는 전혀 없습니다. 또한 Retina의 작동 방식에 대한 실마리는 없습니다.

설명:

#v          Skips the v, which would send the IP down
  ;         Unlike '93, where ; is a no-op, '98 skips to the next ;
            and doesn't execute anything in between
   2^0;     Not executed, unlike Befunge 93
       7|   Pushes 7 onto the stack, and then sends the IP up, because 7 is not 0
n0b1        n clears the stack, and #s are pushed until the stack is [0, 11, 1
    *.      multiplies the top 2 values of the stack to give 11, and prints it (yay!)
      _     Sends the IP right, because the top value of the stack is 0
       q    Ends the program (no-op for '93, which continues to @)

참고 사항 :

  • 0받는 다음은 b코드의 현재 상태에서 꼭 필요한 것은, 스택이 삭제되었습니다. 필요한 경우 제거 할 수 있지만 향후 가능한 프로그램의 일부로 미리 다른 스택 조작을 허용합니다.
  • _q@(그것은 왜 나 한테 물어하지 않는, 그것 없이는 작동하지 않습니다) 망막의 일부로서 존재한다. 의 추가 q도는 실행 '98 코드 수 t(망막 프로그램 인쇄 (8)을 대신 7과 함께) IP를 분할 작업을,
  • _간단하지 않습니다 >그 혼란 SMBF 부분을 위로하기 때문.

편집 : 방금 프로그램을보다 유연하게 만들려면 _q@아마도 @00(0은 ~ 문자 일 수 있음) 이어야한다는 것을 깨달았습니다 . 나는 지금 모든 링크를 변경하기에는 너무 게으르고 피곤하다. 결국 그것에 도착할 것입니다 ...

편집 2 : 나는 이것에 대해 6 가지 대답을 더 빨리 기대하지 않았습니다. 나는 그것이 그대로 머무르고 있다고 생각합니다. 모두 잘하셨습니다!


Heh, 나는 11 번째 답변을 썼는데, 그것이 이미 게시되었다는 것을 깨닫기 위해서만, 이제 12 번째 답변으로 변경했습니다 :)
Cows quack

Vim을 실행하는 데 시간이 오래 걸리는 이유가 있습니까?
MildlyMilquetoast

@MistahFiggins 코드가 키 입력으로 변환되어야하기 때문일 것입니다. 그러나 그 외에는 아무런 단서가 없습니다
Cows quack

나는 그 vim 통역사를 썼는데 왜 그렇게 오래 걸리는지 전혀 모른다. 이전에는 많은 성능 문제를 발견하지 못했지만 V / Vim 응답의 대부분이 40 바이트 미만이기 때문입니다. 무엇이 원인인지 확실하지 않지만 많은 사람들 이이 스레드에서 그것에 대해 불평하고 있습니다.
DJMcMayhem

20

35. INTERCAL (C-INTERCAL), 631 바이트

#v`16/"<"6/b.q@"(: ::Q):  ␉␉␉␉ :(22)S#;n4"14"
#>3N6@15o|>␉^*ttt*~++~~~%
#= >␉1#v#v0l0mx01k1k0l0ix0jx0h0h1d111P0eU0bx0b0o1d0b0e0e00x1d0i0fx0g0n0n11x0o0n0cx0c0o0f0c0gx0g0f0h0j0j0i0001k10mx0m0l11111100(^_)
#[␉
#`<`|
print((eval(" 1\x2f2")and(9)or(13))-(0and 4)^1<<(65)>>(62))or' (\{(\{})(\{}[()])}\{}\{}\{})'#46(8+9+9+9+9+=!)#1111|=/=1/24=x=9[<$+@+-@@@@=>+<@@@=>+<?#>+.--.]/
__DATA__=1#//
#.\."12"␉*
""""#//
=begin␉//
$'main'//
#-3o4o#␉
=end   #//
"""#"#//
#0]#echo 21#/ (\[FAC,1<-#2FAC,1SUB#1<-#52FAC,1SUB#2<-#32FACLEGEREEX,1PLEASEGIVEUPPLEASE) a
#   +/Jn~
#8␛dggi2␛`␉|1|6$//''25  >>>#>27.say# =#print(17)#$nd^_^_.]Q222999/+23!@1#"26

리터럴 탭, 리터럴 ESC 문자입니다. 그렇지 않으면 스택 익스체인지가 프로그램을 혼란시킬 것입니다. 작업하려면 아래 TIO 링크의 "입력"상자에서 프로그램을 복사하는 것이 좋습니다.

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

개요

이 프로그램은 출력 35 INTERCAL에서 34 레일, 33 사건에서, 32 소용돌이에서 31 모듈러 SNUSP에서 30 공백에서 29 트리거에서 28 뇌 플랙에서 27 펄 6에 26 05AB1E에서 25 를 PIP , 24 Thutu에서 23 Hexagony에서 22 저 부하에서 21 님에서 20 서곡에서 19 Reng에서 18 카디날에서 17 줄리아에서 16 Pyth에서,15 덤에서 14 Turtlèd에서 13 루비에서 12 분열에서 11 비 펀지-98, 10 비 펀지-93에서 9 펄 5, 8 망막, 7 JAPT에서 6 SMBF에서 5 파이썬 2, 4 > <>에서 3 Minkolang에서 2 V / 빔, 그리고 1 파이썬 3인치

확인

대부분의 언어는 위에 표시된 테스트 드라이버로 테스트됩니다. 당신은 Reng 테스트 할 수 있습니다 여기에 모듈 형 SNUSP을 여기 ; 필요에 따라 19와 31을 각각 출력합니다. 공식 통역사를 사용하여 자체 시스템에서 로컬로 사건을 테스트했습니다.

숨겨진 문자를 쉽게 찾을 수 있도록 테스트 드라이버에 몇 가지 변경 사항을 추가했습니다. 다양한 NUL 바이트가 특정 언어로 프로그램의 출력에 영향을 미쳤습니다. 나는 a) 광범위한 제출이 그것을하고 있었고 b) Befunge 인터프리터가 프로그램에 아무것도 암시하지 않더라도 여분의 NUL 바이트를 추가하는 것처럼 보이기 때문에 이것이 문제가되지 않기로 결정했습니다. 무언가를 놓쳤습니다), 그래서 그것은 오랫동안 계속되어 왔을 것이며 아마도 통역사가 작동하는 방식의 일부일 것입니다. (여전히 NUL 바이트를 출력하는 언어 인 Befunges와 Minkolang은이 제출을 위해 코드를 변경하지 않았습니다.)

이전 Rail 제출은 크래쉬를 통해 종료되지만 허용되지 않지만 #레일 프로그램의 끝에 a 를 추가 하고 Hexagony를 일치하도록 조정하면 쉽게 해결할 수 있으므로 큰 문제로 생각하지 않았습니다. 이 솔루션의 Rail이 올바르게 종료됩니다.

설명

INTERCAL 코드 작동 방식

INTERCAL은 전체 프로그램을 구문 분석합니다. 그러나 구문 오류는 컴파일 타임이 아닌 INTERCAL의 런타임 문제이며 종종 주석을 작성하는 데 사용됩니다. (구문 오류가 실행을 시도하면 Wikipedia가 잘못 주장하는 것과 달리 오류 ICL000I로 프로그램이 중단됩니다. 그러나 실행을 막을 수 있다면 INTERCAL은 명령 실행을 막는 방법 이 많이 있습니다. 문제를 일으키지 않으면서도 행복하게 실행되지 않습니다.)

따라서 프로그램을 명시 적으로 먼저 종료하여 파일이 끝날 때 가비지를 방지 할 수 있습니다 (명시적인 종료 명령없이 프로그램 끝에 도달하면 INTERCAL이 충돌하기 때문에 어쨌든 필요한 것). 프로그램의 시작을 다루는 것이 더 흥미롭고 파서 버그를 이용합니다. 20 % 확률 DO %20 READ OUT #8로 출력 VIII하는 것과 같은 것을 작성할 수 있습니다 (그렇지 않으면 아무것도하지 않음). 내가 알 수있는 한 C-INTERCAL은 두 번째 줄의 고독 %를 첫 번째 명령이 실행될 확률 0 %를 나타내는 것으로 구문 분석하므로 매번 실행되지 않는 결과를 얻습니다. ( 그런 식으로 구문 분석 하는지 확실하지 않지만 컴파일 된 코드를 보면 임의의 숫자를 생성하고 0과 비교하는 것을 보여줍니다.)

다음은 INTERCAL 프로그램이 나머지 폴리 글롯 주위에 피팅되기 전에 어떻게 보이는지 보여줍니다.

DO,1<-#2
DO,1SUB#1<-#52
DO,1SUB#2<-#32
DOREADOUT,1
PLEASEGIVEUP

이것은 매우 간단합니다. 2 요소 배열을 인스턴스화합니다. 요소를 각각 52와 32 (10 진수)로 설정합니다 (INTERCAL의 문자열 인코딩은 언급되지 않은 것이 가장 좋습니다. 작동 방식을 잊어 버렸으며이 숫자가 인코딩 되는 이유를 알아 내기 위해 다양한 실험을 수행해야했습니다 35). 표준 출력으로 읽습니다. 프로그램을 종료하십시오. 나는 공손한 대화를 위해 허용 가능한 범위를 유지하면서 프로그램 끝에 쓰레기에 대한 새로운 진술을 시작하면서 GIVE UP 진술을 끝내기 위해 마지막에 추가 PLEASE를 추가했습니다. 물론, INTERCAL은 완성 된 제품에서 그렇게 보이지 않습니다. 나는 우리가가는 이유를 설명 할 것이다.

Ses 의 부하로 매장

INTERCAL 프로그램의 가장 명백한 문제는 문자가 포함되어 있다는 것 S입니다. 문제의 문자를 사용하지 않고 배열을 색인 할 수있는 방법이 없으므로 피할 수 없습니다. 그러나 SUnderload의 출력 명령이므로 전체 프로그램을 구문 분석하는 것을 막을 방법이 없습니다. 유일한 해결책은 INTERCAL 코드를 괄호 안에 넣는 것입니다. Underload는 문자열 리터럴과 동일하므로 즉시 실행되지 않습니다.

그러나 ^프로그램의 끝에 두 개의 문자 가 있는데 ,이 코드는 언더로드 코드를 실행합니다. S우리가 그것에 대해 무언가를하지 않으면 그 es는 어쨌든 처형 될 것입니다. 다른 문자로 바꿀 수는 있지만 코드를 보호하는 것이 더 쉬워서 의미가 없게되었다고 결정했습니다. aUnderload에서 문자열을 이스케이프합니다 (즉 ^, 문자열을 실행할 때 유해한 부작용을 일으키지 않고 단순히 다시 이스케이프하지 않음). 우리는 이미 하나가 a의를say (코드의 배열로 인해 관련없는 변화에 실제로 충분하다) 펄 (6) 코드에 사용합니다. 그러나 사람들이 그것에 의존 할 필요가 없도록 다른 것을 추가했습니다.a줄 끝에서 (어쨌든 후행 공백을 보이게하고 Hexagony는 그대로 패딩이 필요했기 때문에 캐릭터가 필요했습니다 .Hexagony는이 프로그램에서 수정하기가 쉬웠으며 실제로는 그렇지 않습니다. 별도의 토론이 필요합니다). 따라서 언더로드 코드는 이전보다 약간 덜 취약합니다.

많은 작업과 혼란에 대한 서막

아, 전주곡. 일반적으로 가장 어려운 언어는 아니지만 이번에는 분명히 그렇습니다. 두 가지 실제 문제가 있습니다. 하나는 훨씬 긴 줄에 괄호를 추가하면 Prelude 프로그램의 제어 흐름을 방해 할 위험이 있으며 ( while루프에 해당하는 것처럼 ), 하나는 단순히 안감을 막는 문제입니다. 수직으로 (이것은 줄에서 공백의 임의의 이동을 담당합니다). 공백도 나에게 약간의 어려움을 주었지만,이 프로그램은 공백의 관점에서 이전 프로그램과 동일하므로 "공백을 깨지 않고 Prelude를 수정하십시오."

Prelude가 실제로 어떻게 작동하는지 잘 모르겠습니다. 왼쪽 하단 모서리 근처의 0과 같은 몇 가지 수정 사항이 있지만 의도 한 방식으로 분명히 작동하지 않습니다. (줄리아 코드는 그 print문장 의 괄호 가 실제로 다루기가 어려웠 기 때문에 줄의 맨 아래로 이동하게 되었습니다.) 아마도 우리는 그것을 미스터리로 남겨 두어야 할 것입니다.

핵분열 원자로의 고장

위의 변경 사항은 수정하기 어려운 미묘한 문제에 대한 것이지만 훨씬 더 분명한 문제가 있습니다. DOREADOUT는 정규식과 일치 R...O하므로 Fission이 네 번째주기에서 원치 않는 출력을 생성하게되어 의도 된 출력을 출력 할 시간이 충분하지 않습니다 12. 그리고 INTERCAL에는 출력을 생성하지 않는 한 출력을 생성하는 명령이 하나만 있습니다. 이에 대한 하나의 수정은 READand 사이에 공백을 추가 OUT하여 출력을 가로 챌 시간을 주려고하지만 공백을 화나게하는 것입니다. 그래서 잠시 동안이 프로그램이 불가능하다고 생각했습니다. R, L, U, 및 D모든 진입 점은 핵분열에, 잠재적으로 실행 문제가 코드를 모두 할 수있는, 그리고 INTERCAL 키워드는 대문자 여야합니다.

그러나 수정 사항과 상당히 놀라운 수정 사항이 있습니다. 국제화 노력의 일환으로 C-INTERCAL은 실제로 영어와 라틴어를 모두 지원하여 여러 언어로 된 키워드를 허용합니다. 우리는 이것을 피할 수 S없었지만 피할 있습니다O . FAC대한 완벽하게 좋은 대용품이다 DO, 마찬가지로 LEGERE EX같은 일을 의미합니다 READ OUT. (따라서 프로그램은 영어와 라틴어가 혼합되어 있지만 괜찮습니다. 읽기가 거의 불가능합니다.) 따라서 오른쪽 하단에서 Fission을 화나게 만들 수 있습니다. 산출. 실제 핵분열 코드가 *아닌 끝으로 변경 될 수 있습니다;하나의 스레드가 아닌 전체 프로그램을 종료합니다. 이 코드는 상당히 빠르게 실행되므로, 모든 길 잃은 진입 점이 손상을 입기 전에 프로그램을 종료합니다.

니트 6, 펄 6

다음 문제 : Perl 6 주석은 <과 를 일치 시켜 작동합니다 >. INTERCAL의 할당 연산자는 <-입니다. 운좋게도, 이것은 여는 괄호를 추가하기 때문에 프로그램의 구문 분석되지 않은 위치 에서이 괄호를 취소하기 위해 닫는 괄호를 추가 할 수 있습니다 (이 경우 Pip 코드 직후).

그러나 프로그램의 공백 예산을 변경하고 싶지 않았지만 Julia 코드 (Prelude 용)를 이동하면 마지막 줄에 여분의 공간이 추가되었습니다. 어딘가에서 하나를 제거해야했습니다. 이중 공간은 Pip의 주석 마커이므로 거의 변경할 수 없습니다. 나머지 옵션은의 공백입니다 say 27. Perl 5 골퍼는 즉시 "그냥 say+27잘해라"(단일 +은 편리하게 자주 사용합니다!) 라고 생각 하지만 불행히도 이것은 유효한 Perl 6 구문이 아닙니다.

그러나 우리가 할 수있는 것은 say함수 구문에서 메소드 구문 으로 변경 하는 것입니다. 정수 리터럴에는 인쇄 방법을 포함하여 많은 메소드 27.say가 있으므로 길이가 동일한 완벽하게 유효한 프로그램입니다.

정사각형입니까? 거기 가지마

다음 문제는 .프로그램에 추가 기능 을 추가했다는 것 입니다. SMBF 사용자는 해당 언어에서 문제가 발생하여 스트레이 출력 (이 경우 NUL 바이트)을 생성한다는 것을 알게 될 것입니다. 이 있었다 이미. 생산 부유 출력은 마지막 프로그램은,하지만 나는 그것을 해결하기 위해 기회를 안 것을 의미하지 않는다.

여기서 기본 아이디어는 SMBF 루프를 작성하여 문제가되는 지침을 주석 처리하는 것입니다. 이것은 대괄호를 움직입니다. 나는 SNUSP 코드 주위에서 그것들을 가져 와서 (어쨌든 인시던트를 위해 거기에 있었고 인시던트는 프로그램의 위치 에 신경 쓰지 않기 때문에) INTERCAL 코드의 시작 부분에 여는 괄호를 두었습니다. 트리거 바로 앞에 닫는 괄호 (따라서 두 .s 를 깔끔하게 숨기십시오 ).

불행히도, 대괄호는 Retina에게 의미가 있습니다. 그것은보고 […<-#…와 "그 때문에, 그 범위를 만들 수 없습니다 이해되지 않는다 말한다 <전에 오지 않는다 #." 다행히도 전략적으로 배치 된 백 슬래시로 쉽게 해결할 수 있습니다.

프로그램 중심 사건

이것은 마지막 대답이었으며 앞으로도 계속 반복 될 것입니다. 다양한 문자열이 무작위로 세 번 발생하고 사건의 관점에서 프로그램 중심 주위로 이동했습니다.

처리해야 할 가장 긴급한 토큰은입니다 1#. 이는 세 #= >␉1#번째 줄의 시작 부분에서 __DATA__=1#, 및을 순진하게 변경하면 세 번 나타납니다 echo 21#. 이것이 왜 문제입니까? 때문에 1#세 번째 줄에이 겹치는 #v그냥 후, 2 개 개의 중복 토큰은 그들 중 어느 쪽이 계산됩니다. 그리고 #v사건 프로그램이 나오기 전에 코드에 주석을 달기 위해 사용한 토큰입니다! 나는 1#프로그램의 끝 부분에 여분으로 몰래 들어가서 이것을 고쳤다 . 프로그램의 해당 부분을 구문 분석하는 언어는 아무것도하지 않습니다.

처리해야 할 다른 문제가있는 다양한 토큰이있었습니다. 부부는 한 글자 P였으며 U; 나는 인시던트 코드의 필러 없음을 두 번 또는 각각 변경하여 네 번째 사본을 제공하여 이러한 문제를 해결 x했습니다 . 핵분열 코드의 변경 은 토큰으로 남지만, 이는 일반적으로 사고와 두 번 나타나고 그 이후에는 한 번만 나타납니다. 그것을 제거하는 대신에, 나는 그것을 새로운 균형의 일부로 사용했습니다PU*LE INTERCAL 코드에 표시된 토큰의 . 그것은 프로그램의 중심을0o토큰. 물론, 프로그램의 변경은 이것을 방해 할 가능성이 높습니다. (TIO에 사건을 얻을 나의 시도가 사용할 수없는 libdivsufsort으로 인해 실패, 그래서 온라인으로 실행할 수 있도록 우리가 특히 자바 스크립트에 새로운 인터프리터 혜택을 누릴 수있는 것 같습니다. 당신이 관심이 있다면, 한 번 봐 가지고 이 질문 .)


1
와우,이 도전은 놀랍도록 먼 길을 왔습니다. 잘 했어!
MildlyMilquetoast

라틴어?! 와, 정말 대단해! 나는 코드가 '제발 포기하십시오'라고 말하는 것을 좋아합니다. 마치 대담하게 끝내주는 것과 같습니다.
기회

19

1. 파이썬 3 (8 바이트)

print(1)

이 프로그램 은 Python 3에서 1 을 인쇄합니다 .

파이썬 3으로 시작하면 폴리 글 로트에 좋으며 여러 방향으로 나올 수 있다는 것을 알기 때문에 (첫 번째 답변은 폴리 글 로트하기 어려운 터무니없는 esolang이 아닌 상대적으로 일반적인 언어로되어 있기를 원했습니다. 와).


> <>가 제 2 언어에 적합한 선택입니까 (2d 공간을 시작하도록)?
Cows quack

따라서 다음 답변은 9 바이트를 초과 할 수 없다는 것을 의미합니까? 다른 것을 생각해 내기가 정말 어려울 것입니다.
DJMcMayhem

1
@DJMcMayhem는 각각의 대답은 더 이상 (더 큰 쪽) 20 % 또는 20 바이트보다 더 이상 없어야합니다
소 돌팔이가

19

10. Befunge , 95 바이트

#v02^0;7||"<+0+0+0+<;n4
#v0#@00
#>3N.
#|\w*
#8
#|
#M`
print(None and 9or 1/2and 1or 5)
#jd5ki2

사이 리터럴 ESC 문자가 jd마지막 줄 (GRR, @의 ais523)에가. 이 코드에는 포함되어 있지 않습니다. 실제 코드를 얻으려면 Try it online링크 로 이동 하십시오.

이 출력 1 파이썬 3에 2 빔에서 3 Minkolang에서, 4 에서, <> < 5 파이썬 2에서 6 SMBF에서 7 JAPT에서 8 망막, 9 펄, 및 10 비 펀지있다.

이 코드는 공유 * Retina 및 .Minkolang 및 SMBF와 공유합니다.

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

설명

실제 프로그램

#v02^
    @
    .
    *



    t
    5
#v02^

마지막 행은 명확성을 위해 작성되었습니다 ( Befunge 놀이터는 주기적입니다).

#

트램펄린, 건너 뛰기 v

02^

밀어 02스택의 최대 이동합니다.

5t*.@

푸시 5어떠한 조합은 스택의 두 요소 (곱하지 2하고 5), 인쇄 종료 프로그램.


1
이것은 SMBF가 처음에 널 바이트를 인쇄하게합니다 ..
PurkkaKoodari

@ Pietu1998 고정!
JungHwan Min

가장 중요한 명령 중 많은 것이 인쇄 할 수없는 문자 인 언어를 사용하기로 선택한 사람은 아닙니다… 다른 언어들 : 나는 당신이 한 방식을 좋아하지만, 더 적합하게 수정해야 할 수도 있습니다.)

@ ais523이 코드를 수정하는 것이 어려울 수 있다는 데 동의합니다. 이를 완화하기 위해 일부 0문자를 사용하여 해당 문자가 무엇이든 될 수 있고 ( "<+0+0+0+<;n4부분 제외 ) Befunge 코드 의 일부가 움직일 수 있음 을 나타냅니다 . 다음 사람을위한 팁 : 대부분의 문자는 Befunge에서 작동하지 않으므로 더 많은 행을 추가해도 Befunge 코드에 영향을 미치지 않습니다.
JungHwan Min

그들은 befunge-98 (또는 다른 유사한 funge) 제출을 생각하고 있는데, 왜냐하면 그들은 '93 년 규칙에 맞지 않는 상당한 양의 작업을 추가하기 때문입니다. 그래도 적응하기 어려울 수 있으며, 다른 모든 언어가 어떻게 작동하는지 알아 내야 해결할 수 있습니다.
MildlyMilquetoast

19

21. (161 바이트)

#v`16/"<"6/b.q@#;n4"14""
#>3N6@15o|> ^*ttt*~++ %
#=~nJ<R"12";
#[

print((1/2and 9 or 13)-(0and+4)^1<<65>>62)#46(89999+++++!)=#print(17)#]#echo 21
#8dggi2` |1|6

<ESC>사이 8d와 사이에 2 개2`마지막 줄 에 . 오늘 아침에 일어 났고 더 많은 돈을 벌 수 있다는 것을 깨달았 기 때문에 이전의 골프가 급하게 골프를 쳤다는 것을 알 수 있습니다. 나는 152 바이트를 가지고 있었지만 Perl 5.24.0에서만 작동하는 것처럼 보이므로 TIO와의 호환성을 위해 원래 표현을 유지했습니다.

Python 3에서 1, V에서 2, Minkolang에서 3,> <>에서 4, Python 2에서 5, SMBF에서 6, Japt에서 7, Retina에서 8, Perl에서 9, Befunge-93에서 11, Befunge에서 11을 인쇄합니다. 서곡에서 분열, 루비 13 Turtléd 14, 덤 15, 16 Pyth 줄리아 17, 기본적인 18, Reng -98에서 19, 12, 20, 님 21 .

ideone.com의 Nim은 0.11.2 버전을 사용합니다.이 프로그램은 #[ ... ]#2016 년 초에 추가 된 여러 줄 주석에 의존하기 때문에 너무 오래된 버전 입니다.

카디널의 Windows 인터프리터 덕분에 이제 워크 플로는 두 개의 랩톱과 http.server사이에 있는 Python 으로 구성됩니다 .


편집-힌트 더 :

  • 8마지막 줄의 시작은 망막 출력 것없이 달리, 처음 8 경기에 망막의 한계를 설정하는 것입니다 2. 이것은 최종 라인 정규 표현식이 정확히 8과는 대조적으로 지금 마지막 두 번째 라인에서 최소 8 번 일치해야한다는 것을 의미합니다. .
  • 첫 번째 줄의 끝에서 일치하지 않는 인용 부호는 Pyth가 나머지 코드에 대해 유효하지 않은 구문에 대해 불평하지 않도록합니다.
  • 두 번째 줄을 수정하면 6@Minkolang for 를 변경해야 할 수 있습니다 .^ .
  • 현재 쌍이 []있으므로 SMBF가에 도달하기 전에 0 개의 셀에 [있어야하거나 내부가 셀을 지워야합니다.

아마도 골프에 더 많은 것이있을 것입니다 (지금도 %추기경 전에는 길을 잃은 공간이 보입니다 ). 그러나 아침의 바쁜 시간에는 골프를 멈추어야합니다.


1
TIO 지금 추기경 지원
MildlyMilquetoast

19

51. 어셈블리 (x64, Linux, AS) , 1086 바이트

#16  "(}23!@)(" 3//*v\D@;'[af2.qc]'#)"14";n4
#/*` PkPPZ (22)S"[!(>7 7*,;68*,@;'1,@␉␉␉␉ q
#>␉
# >36!@␉
#`<`
#<]+<[.>-]>[
#{
#z}
#
#=x<R+++++[D>+++++++EAL+++<-][pPLEASE,2<-#2DO,2SUB#1<-#52PLEASE,2SUB#2<-#32DOREADOUT,2DOGIVEUPDOiiipsddsdoh]>+.-- -. >][
#x%+>+=+~tt .
#D>xU/-<+++L
#R+.----\).>]|
#[#[(}2}20l0v01k1kx0l0ix0jor0h0h1d111x0eU0bx0b0o1d0b0e0e0@O6O4/0m1d0i0fx0g0n0n11x0o0n0cx0c0o0f0c0gx0g0f0h0j0j0i0001k10vx0v0l111111^_)  0046(8+9+9+9+9+=!)
###|
'\';echo 50;exit;';print((eval("1\x2f2")and(9)or(13))-(0and 4)^1<<(65)>>(62))or"'x"or'({({1})({1}[(0)])}{1}\{1})'#}#(prin 45)(bye)|/=1/24=x<$+@+-@@@@=>+<@@@=>+<?#d>+.--./
__DATA__=1#"'x"//
#.\."12"__*'
###;console.log 39
""""#//
=begin //
#sseemeePaeueewuuweeeeeeeeeeCisajjap*///;.int 2298589328,898451655,12,178790,1018168591,84934449,12597/*
#define p sizeof'p'-1?"38":"37"
#include<stdio.h>
main ( )/*/
#
#"`#"\'*/{puts (p);}/*'"`"
/*
<>{#65}//
#}
disp 49#//
#{
1}<>//
$'main'//
#-3o4o#$$$
#<R>"3"O.
=end #//
"""#"#//
#}
#s|o51~nJ;#:p'34'\=#print (17)#>27.say#]#print(47)#]#echo  21
#sss8␛dggi2␛ `|1|6$//''25  16*///89^_^_Z222999"26

리터럴 탭, 리터럴 ESC 문자입니다. 그렇지 않으면 스택 익스체인지가 프로그램을 혼란시킬 것입니다. 작업하려면 아래 TIO 링크의 "입력"상자에서 프로그램을 복사하는 것이 좋습니다.

자세한 내용을 원하십니까? polygot 채팅을 보십시오 !

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

VIP 점수 ( Versatile Integer Printer ) : .008186 (개선하려면 다음 항목은 1151 바이트를 넘지 않아야 함)

이 프로그램 은 어셈블리 51 , 배쉬 50 , 옥타브 49 , 데드 피쉬 48 , 릴리 47 , 큐빅스 46 , 피코 리스프 45 , 알프 룩 44 , 망상 43 , 악 42 , 뇌 41 , 40 최소한도 2d에서 39 커피 스크립트에서 38 C에서 37 C ++에서 36 미로, 35 INTERCAL에서 34 레일, 33 사건에서, 32 소용돌이에,모듈 식 SNUSP 31 , 공백 30 , 트리거 29 , Brain-Flak 28 , Perl 6 27 , 05AB1E 26 , Pip 25 , Thutu 24 , Hexagony 23 , Underload 22 , Nim 21 , 20 in 서곡, 19 Reng에서 18 카디날에서 17 줄리아에서 16 Pyth에서 15 덤에서 14 Turtlèd에서 13 루비에서 12 분열에서 11 비 펀지-98,10 비 펀지-93에서9 펄 5에서 8 망막, 7 JAPT에서 6 SMBF에서 5 파이썬 2에서 4 에> <> 3 Minkolang에서 2 V / 빔, 그리고 1 파이썬 3인치

확인

대부분의 언어는 위에 표시된 테스트 드라이버로 테스트됩니다.

  • Reng은 여기서 출력 19로 테스트 할 수 있습니다 .

  • 모듈 형 SNUSP는 여기서 출력 31로 테스트 할 수 있습니다 .

  • Cubix의 큐브 모양은 볼 여기

  • 사건은 이전 답변에서 설명한대로 토큰의 균형을 유지하여 확인합니다.

  • Deadfish ~ 들어, 출력 48로 테스트 할 수 있습니다 이와 함께 . Deadfish ~는 표준 입력에 폴리 글롯을 공급하지만 >>Deadfish ~ 프로그램을 실행하면 피할 수없는 많은 결과를 표준 출력으로 인쇄합니다 .

  • 여기서 출력 51로 어셈블리 테스트 가능

감사와 축하

@ ais523의 50-in-1k 답변이 2 주 전에 떨어졌을 때, 눈물이 뺨을 굴렀습니다. 너무 아름다웠다. 그리고 그것은 Bash에있었습니다. 너무 완벽했습니다.

나는 아내에게 눈물을 흘렸다.

그녀는 나를보고 눈을 돌리고 잠시 멈췄다. 이제 쓰레기를 꺼내십시오.”

그녀의 의미는 그녀와 저의 인터넷 친구들에게 깊은 기쁨을 느꼈다는 것입니다. 모두에게 감사와 축하를 전합니다.

조립 설명

그 후로, 내 마음은 Bash를 게시하기 직전에 폴리 글 로트 채팅에서 @ ais523이 말한 내용으로 되돌아 갔다. 그는 몇 가지 맛의 어셈블리는 #라인 주석과/* 블록 주석이 . 다음 2 주 동안 천천히 내 마음을 잃을만큼 충분했습니다.

폴리 글 로트에는 합법적 인 언어를 포함시키기위한 암시적인 도전이 있습니다. 나는 여기에 합법적이라는 용어를 매우 느슨하게 사용하고 있지만, 내가 얻는 것을 모두 파악할 수 있다고 생각합니다. Brainf ***를 포함시키는 것은 한 가지 일이지만 Mathlab 또는 R과 같은 것을 포함하는 것은 또 다른 일입니다. Assembly는 확실히 후자 범주에 속하며 내 마음은 그것을 놓을 수 없었습니다. 그러나 나는 의회에 대해 아무것도 몰랐기 때문에 이것은 오르막길이었습니다.

어셈블리와 C / C ++가 공존 할 방법을 찾기 위해 잠시 동안 문제에 대해 머리를 두드리고 나서 이것이 GNU 어셈블러에 대한 문서라는 것을 알았습니다.

과거 어셈블러와 호환되도록 '#'으로 시작하는 행에는 특별한 해석이 있습니다. '#'다음에는 절대 표현식이어야합니다 (식 참조) : 다음 행의 논리 행 번호. 그런 다음 문자열 (문자열 참조)이 허용됩니다. 존재하는 경우 새 논리 파일 이름입니다. 줄의 나머지 부분은 공백이어야합니다.

이것은 폴리 글 로트의 1 행에있는 C / C ++에 대한 사전 프로세서 지시문과 매우 유사한 것으로 나타났습니다. 시행 착오 후에 나는 그것을 발견했다.#1 “bla” 1//* 어셈블리에 대해서만 블록 주석을 입력 .

그래서 폴리 글롯이 만들어졌습니다.

가장 큰 블로킹 문제가 해결되면서 저는이 Hello World 예제를 골프로 시작했습니다.

.intel_syntax noprefix
.section .data
     msg: .asciz "51"
.section .text
.global _start
_start:
    # write syscall
    mov     rax, 1
    # file descriptor, standard output
    mov     rdi, 1
    # message address
    mov     rsi, OFFSET FLAT:msg
    # length of message
    mov     rdx, 14
    # call write syscall
    syscall
    #End the Program
    mov    rax, 60
    mov    rdi, 0
    syscall

기본 저자의 크레딧

사실 나는 1 분 전에 거짓말을했습니다. 제가 사용한 어셈블리 코드의 첫 번째 버전은 어셈블리의 두 가지 구문 중 하나 인 AT & T 구문이었습니다. AT & T 구문의 주요 요소 중 하나는 레지스터 참조가 %접두사를 사용한다는 것 입니다. 이것이 폴리 글롯에 문제가됩니다. 카디널은 %포인터 원점으로 사용하기 때문에 우리가 많은 것을 흩 %뜨리면 두 번째 핵분열 반응과 같습니다.

%레지스터 접두사로 사용하지 않는 다른 구문 분기를 Intel 구문이라고합니다. 폴리 글롯에서 첫 줄을 넘어 블록 주석을 입력하기 위해 사용하는 익스플로잇은 GNU 어셈블러 (GAS 또는 AS)에 있습니다. AS는 두 가지 구문 분기를 모두 허용하는 행복한 기능을 가지고 있습니다. 어셈블리 코드의 1 행에서 발생하는 Intel 구문을 사용한다고 선언하기 만하면됩니다.

어셈블리는 액세스 속도를 위해 문자 그대로 CPU에 위치한 적은 수의 메모리 위치 인 레지스터를 사용합니다. 이것은 사용이 개발자의 관심사에서 추상화되지 않았다는 것 외에는 어셈블리에 고유하지 않습니다.

다른 목적으로 사용되는 다양한 종류의 레지스터가 있습니다. Wikipedia에서 :

• AX 곱하기 / 나누기, 문자열로드 및 저장

• 문자열 연산 및 시프트에 대한 CX ​​수

• IN 및 OUT 용 DX 포트 주소

• MOVE 용 BX 인덱스 레지스터

• SP가 스택의 상단을 가리킴

• BP는 스택 프레임의베이스를 가리 킵니다.

• SI는 스트림 작업에서 소스를 가리킴

• DI는 스트림 작업에서 대상을 가리 킵니다.

AX는 여기서 _start 함수 라인에 사용됩니다 mov rax, 1. r에서이 rax메모리는 64 비트임을 나타낸다. 이것을 이것을로 바꾸면 e32 비트 메모리를 나타내며 64 비트 프로세서와 함께 사용할 수 있습니다. 우리는 사용 가능한 메모리의 상위 절반을 사용하지 않을 것입니다. 16 비트 메모리를 나타내려면을 사용하면 ax정수를 인쇄하기 때문에 좋습니다. 따라서 모든 레지스터 참조를 16 비트로 변경하여 몇 바이트를 골프화 할 수 있습니다.

좋아, 모든 레지스터 참조가을 삭제할 수있는 것은 아닙니다 r. mov rsi, OFFSET FLAT:msg. Assembly에 익숙하지만이 문장에 익숙하지 않은 경우 이는 AS에 반 고유하기 때문입니다. 적어도, 내가 이것 에서 모은 것은 저에게 그 진술을 금으로 내리는 데 도움이되었습니다 lea rsi,m.

이 후, 나는 경험적으로 나는 노크 수 있다는 것을 발견 _start:단지 아래로 _p절단 .global _start발행 경고 만 전적으로. 둘째, msg:하나의 문자 변수로 축소되었습니다 p:. Alphuck의 이익을 위해 추가 된 p일부 s어셈블리 를 상쇄 하기 위해 문자열 변수와 시작 기능을 모두 선택했습니다 .

그런 다음 ;명령을 모두 한 줄에 넣으려면 명령을 구분하십시오. 이것은 주로 #//Thutu의 이익을 위해 각 줄에 과도한 흔적 을 피하기 위한 것입니다. 또한 어셈블러가 대소 문자를 구분하지 않는 것으로 나타 났으므로 인시던트 불균형을 피하기 위해 다양한 문자를 대문자 또는 소문자로만 표시했습니다.

이 골프는 우리에게

.intel_syntax noprefix;.text;mov ax,1;mov di,1;lea rsi,m;mov dx,2;syscall;mov ax,60;mov di,0;syscall;m:.asciz "51"

이 후, Japt와 Underload는이 답변에서 유일한 문제가 된 어린이였습니다. Japt은 *1 행에 쇠고기를 추가했지만 puts(p);C ++ 답변에서 해당 라인 으로 되돌려 고정 된 것으로 보입니다 . 나는 (이 라인에도을 던지고 Octive 라인에서 닫았습니다. 이것은 Underload가 sefaulting을 중지 할 수 있도록하기위한 것입니다. *거기 에 추가하기 위해 유사한 처리가 라인 1에서 이루어 졌다.

이것은이 과제의 바이트 요구 사항을 충족시키기에 충분했습니다. 사실 저는 이 버전 의 폴리 글 로트를 만들어서 이것을 확인했습니다 . 그러나 가능하면 VIP 점수를 높이려고 노력했습니다. 그리고 도전 과제의 모든 요구 사항을 충족했기 때문에 코드를 골프화하기 위해 협력하는 것이 좋습니다. 그래서 나는 골프를 치기 위해 폴리 글롯 채팅에 들렀습니다.

우리는 더 깊이 가야한다

@ ais523은이 명령문을 사용하여 명령어를 기계어 코드로 어셈블러에 전달하는 기술을 보여주었습니다.

.text;.long 2298589328,898451655,12,178790,1018168591,84934449,12597 머신 코드는 CPU에서 직접 실행하는 일련의 숫자 명령으로 10 진수, 16 진수 또는 8 진수로 표시 할 수 있습니다. 우리의 목적을 위해 십진수는 가장 짧은 것입니다 (16 진수는 대표 0x를 나타냅니다). .long여기에 나오는 내용은 다음에 나오는 일련의 10 진수 기계 코드 명령어임을 선언합니다.

글쎄, 나는 어셈블러가 무엇을 허용하는지 알기 위해이 문장을 찌르고 몇 가지를 변경했다. 첫째, .text;경고 문제만으로 모두 함께 제거 할 수 있음을 발견했습니다 . 이는 판매량이 많은 바이트 절약이었습니다. 그런 다음 잠시 후 AS 사양 문서 에서이 진술 을 찾았습니다.

.long은 .int와 동일

시원한. 그래서 우리는 빠른 스왑을 위해 스왑을 만들 수 있습니다. 이제 우리의 어셈블리이지만 실제로 기계 코드는 다음과 같이 축소되었습니다.

.int 2298589328,898451655,12,178790,1018168591,84934449,12597.

이것은 모두 훌륭하지만 기계 코드를 직접 사용하는 것은 매우 어렵고 적어도 모든 번역을 수행하는 방법을 알고 싶었습니다. 따라서 이상적으로 기계 코드를 어셈블리로 분해하고 싶습니다. 가장 쉬운 방법은 @ ais523이이 코드 스 니펫으로 나에게 보여준 객체 덤프를 얻는 것입니다.

다음은 코드 스 니펫입니다.

여기 의회가 있습니다.

nop
mov    $0x1,%al
mov    %eax,%edi
lea    0xc(%rip),%rsi
mov    $0x2,%dx
syscall 
mov    $0x3c,%al
xor    %edi,%edi
syscall 
.byte 0x35
xor    %eax,(%rax)

이 링크에는 각 어셈블리 라인과 함께 2 자 16 진 숫자도 표시됩니다. 그것들은 십진법에 해당합니다. 당신이 넣어 예를 들어, 2298589328 진수로 변환 진수, 당신은 얻을 8901B090다시. 그리고 자세히 살펴보면, 이는 객체 덤프에서 처음 4 개의 16 진 명령입니다 (역순).

내가 알 수 있듯이 4 개의 16 진수 세트는 항상 십진수로 변환하는 데 사용되며 여기서 사용되는 주 바이트 절약 트릭은 4 세트의 마지막 몇 16 진수가 00이되도록 어셈블리를 구조화하는 것입니다. 우리 .int가 그냥 생략 된 문장에 넣을 때 선행 0으로

이것이 12성명서 에서 일어나는 일입니다 . 오브젝트 덤프의 16 진 부분에서 이것은입니다 0c 00 00 00.

이것은 2 주 만에 의회에 대한 나의 이해가 얻은 한입니다. 충돌 코스!

사건

사건은 더 짧은 어셈블리 구현에서 더 어려운 문제였습니다. 사건 보고서는 다음과 같습니다.

  • ! 2 행에서 !

  • EAINTERCAL 라인 의 첫 번째 는 자체를 해독합니다.

  • 두 번째 행에서 마지막 행의 마지막 공간은 공간 공간 토큰을 해독합니다.

  • 85 마지막 줄에서

  • R에서 #<R>"3"O.detokenizesR

  • 65에서 <>{#65 }//토큰 화65

  • 16 마지막 줄에서 스스로를 해독합니다

  • 89 마지막 줄에 스스로를 토큰 화합니다

추기경

방금 문서화를 잊어 버린 추기경을 변경 한 것을 알았습니다. 나는 바이트를 절약 할 수있는 방법을 찾기 위해 시간을 내며 Cardinal을 배우기로 결정했습니다. 문서와 약간의 시간을 보낸 후에이 줄을 보았습니다.

= 포인터의 활성 값을 비활성 값으로 복사합니다.

이것은 폴리 글롯에서 사용되는 트릭이 아닙니다. 이전 솔루션에는 다음과 같은 지시 사항이 포함되었습니다.`++ ~ * t

++ 최대 2 개를 요구합니다.

~ 활성 스택을 변경합니다

* 스택을 추가합니다.

나는 ~*단지 =명령 으로 달성 할 수 있다는 것을 깨달았 으므로 쓸모없는 스택 스왑을 꺼내고이 작은 바이트 절약을 추가하기 위해 솔루션을 재 작업했습니다.


3
이 놀라운 단계에 어떻게 폴리 글로 팅을 유지할 수 있는지 궁금합니다. 어떻게???
Qwerp-Derp

3
이것은 진정으로 순수한 아름다움입니다.
Muzer

단항은 다음에 있어야 함
Christopher

아니요, VIP 점수를 살해 할 수 있습니다 (코드가 3 바이트 이하인 경우 제외)
CalculatorFeline

19

6. SMBF , 45 바이트

#v<++++<;n4
#>3N.
print('1'if 1/2else'5')
#i2

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

이 프로그램을 인쇄 파이썬 3에 2 V에서 3 Minkolang의 v0.15에서 4 에서> <> 5 파이썬 2 및 6 SMBF있다.

SMBF (일명 자체 수정 Brainfuck)는을 사용합니다 <++++<>.. 포인터가 소스 코드의 마지막 문자로 왼쪽으로 이동하고 셀이 4 번 증가한 후 인쇄됩니다.


17

13. 루비 (129 바이트)

#v;2^0;7||"<+0+0+0+<*!2'!1'L;n4
#v0#_q@
#>3N.
#|\w*
#8  ^1b0<
#|
#M`
print ((0 and'13')or(None and 9 or 1/2 and 1 or 5))
#jd5ki2

문자 그대로주의 Esc사이의 마지막 줄에 문자 jd당, ais523 의 펄 대답.

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

이 출력 1 파이썬 3에 2 빔에서 3 Minkolang에서, 4 에서, <> < 5 파이썬 2에서 6 SMBF에서 7 JAPT에서 8 망막, 9 펄, 10 비 펀지에서 11 Befunge-에 98, 12 은 Fission, 13 은 Ruby입니다.

루비에서 진실 print이라는 사실을 남용 하기 위해 기존 진술을 약간만 수정했습니다 0. 다른 구문에 공백을 추가하여 올바르게 구문 분석해야했습니다.


17

15. 건초 더미 (141 바이트)

#v;2^0;7||"<+0+0+0+<*!2'!1'L#'1r'4;n4
#v0#_q@
#>3N.15o|1
#|\w*
#8  ^1b0<
#|
#M`
print ((0 and'13')or(None and 9 or 1/2 and 1 or 5))
#jd5ki2

참고 :이 ESCo세 번째 줄에 후에 j마지막 줄에

이 출력 1 파이썬 3 , 2 빔에서 3 Minkolang에서, 4 에서, <> < 5 파이썬 2 , 6 SMBF에서 7 JAPT에서 8 망막, 9 펄, 10 비 펀지에서 11 Befunge-에 98 , 12 , 핵분열에서 13 , 루비에서 13 , 거북이에서 14 , 건초 더미에서 15 .

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

설명

#v                           go down
 v
 >                           go right
  3N.                        does nothing important
     15o|                    outputs 15 and ends program
                             there is an <ESC> after 'o' since 'o' in Vim enters insert mode
         1                   I added this to satisfy Retina

감사합니다. Haystack을 확인해 주셔서 감사합니다! :)
Kade

@Kade 그것은 좋은 2D 언어입니다, 온라인 인터프리터가 더 도움이 될 것입니다 (파이썬 인터프리터를 이미 다운로드했지만) :)
Cows quack

@Kade 건초 더미에 대한 TIO 링크가 있습니다!
Cows quack

@MistahFiggins 링크는 나를 위해 작동 15 개 출력
소 돌팔이

@MistahFiggins 캐시? 그것이 아무런 문제 나 오류 메시지없이 나를 위해 작동하기 때문에
Cows quack

17

9. Perl, 84 바이트

#v;7||"<+0+0+0+<;n4
#>3N.
#|\w*
#8
#|

#M`
print(None and 9or 1/2and 1or 5)
#j␛d5ki2

사이의 실제 코드에서 리터럴 ESC 문자있다 jd; 여기에서 가시성을 위해 ␛로 대체되었습니다.

이 출력 1 파이썬 3 , 2 빔을 (국부적으로 테스트하지만 여기에 상기 매우 유사한 언어 V에 대한 링크) 3 Minkolang에서 , 4 <> <에서 , 5 파이썬 2 , 6 SMBF에서 , 7 JAPT에서 , 8 Retina 에서는 9 , Perl 에서는 9 입니다 .

언어에 따라 다르게 작동하는 학대 연산을 통해 좀 더 이국적인 언어를 봅시다. ( None펄 파이썬에서 falsey하지만 truthy이며, and/ or체인 두 언어에서 동일한 방식으로 작동합니다.)

파이썬 외에도 vim 코드를 변경해야했습니다. 일련의 no-ops로 만들지 않고 정크를 삽입 한 다음 결국 정크를 삭제했습니다.


4
진심이야? 문자 ESC를 입력하면 다른 사람이 답변을 작성하는 것이 매우 어려워집니다. 코드를 테스트 할 수 있어야합니다.
mbomb007

1
자신의 답변에 리터럴 ESC를 포함시킬 필요는 없습니다. 방금 이것을 작성하는 가장 쉬운 방법이라는 것을 알았습니다. (또한 Firefox 및 로컬 테스트에서 제대로 작동합니다. 포스트에 넣을 수 없도록 차단하는 유일한 것은 SE에 사용하는 Chromium이 입력 상자에 넣고 싶지

1
또한 Vim을 로컬에서 테스트 할 수 없습니다. 언어는 사용되는 인터프리터에 의해 정의됩니다. 우리가 지금까지 가지고 있었던 것은 실제로 V입니다.
mbomb007

1
Err, vimVim의 통역이 아닌가요? (그것은 모두에서 작동 vim하지만, 및 V.)

4
@ ais523 아마도 0x1B 바이트를 나타 내기 위해 ␛을 넣을 수 있습니까?
betseg

17

36. 미로 , 647 바이트

#v`16/"<"6/b.q@"(: ::Q):  ␉␉␉␉ :(22)S#;n4"14"
#>3N36!@@15o|>␉^?.*ttt*~++~~~%
#= >␉1#v#v0l0mx01k1k0l0ix0jx0h0h1d111P0eU0bx0b0o1d0b0e0e00x1d0i0fx0g0n0n11x0o0n0cx0c0o0f0c0gx0g0f0h0j0j0i0001k10mx0m0l11111100(^_)
#[␉
#`<`|
print((eval(" 1\x2f2")and(9)or(13))-(0and 4)^1<<(65)>>(62))or' (\{(\{})(\{}[()])}\{}\{}\{})'#46(8+9+9+9+9+=!)#1111|=/=1/24=x=9[<$+@+-@@@@=>+<@@@=>+<?#>+.--.]/
__DATA__=1#//
#.\."12"␉*
""""#//
=begin␉//
$'main'//
#-3o4o#␉
=end   #//
"""#"#//
#0]#echo 21#/ (\[FAC,1<-#2FAC,1SUB#1<-#52FAC,1SUB#2<-#32FACLEGEREEX,1PLEASEGIVEUPPLEASE) a
#   +/Jn~
#0␛dggi2␛`␉|1|6$//''25  >>>#>27.say# =#print(17)#$nd^_^_.]Q2229991#;abcd!fghij/+23!@"26

리터럴 탭, 리터럴 ESC 문자입니다. 그렇지 않으면 스택 익스체인지가 프로그램을 혼란시킬 것입니다. 작업하려면 아래 TIO 링크의 "입력"상자에서 프로그램을 복사하는 것이 좋습니다.

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

개요

이 프로그램은 Labyrinth에서 36, INTERCAL에서 35, Rail에서 34, Incident에서 32, Whirl에서 32, Modular SNUSP에서 31, 공백에서 29, Trigger에서 28, Brain-Flak에서 28, Perl 6에서 27, 05AB1E에서 26을 인쇄합니다. , Pip 25, Thutu 24, Hexagony 23, Underload 22, Nim 21, Prelude 20, Reng 19, Cardinal 18, Julia 17, Pyth 16, Haystack 15, Turtlèd 14, 13 루비에서, 핵분열에서 12, Befunge-98에서 11, Befunge-93에서 10, Perl 5에서 9, Retina에서 8, Japt에서 6, SMBF에서 6, Python 2에서 5,> <>에서 3, Minkolang에서 3 , V / Vim에서 2, Python 3에서 1

확인

대부분의 언어는 위에 표시된 테스트 드라이버로 테스트됩니다. 당신은 Reng 테스트 할 수 있습니다 여기에 모듈 형 SNUSP을 여기 ; 그들은 각각 19와 31을 출력합니다. @ ais523은 현재 작동하는 인시던트 코드를 디버그하고 수정하는 데 도움이되었습니다.

미로의 작동 방식

미로는 소스의 일부 열을 조금씩 움직이기 시작하지만 몇 단계 후에 포인터가 N두 번째 줄의 위치에 도달합니다 (처음에는 포인터가 도착할 때 더 이상 N존재 하지 않음 ). 스택 맨 위에 0이 있습니다. 그런 다음 간단히 36을 밀어 인쇄하고36!@

내가 한 것들

나는 내가 아는 몇 가지 esolang 중 하나이기 때문에 Labyrinth를 추가하고 싶다는 것을 알았습니다. 디버거를 사용하면 마지막 줄에서 8을 0으로 변경하면 Labyrinth가 무한 루프에 빠지지 않고 이상하게도 깨지는 것 같지 않습니다. 거기에서 나는 방금 원시 36과 출력 명령을 버렸고, 그것들은 편리하게 일을 끝내도록 이끌었습니다 @.

그런 다음 Minkolang, Cardinal 및 Hexagony : 내가 부러진 것을 수리해야했습니다.

!Minko이 종료하는 데 필요한 다음 문자를 생략하고, 그래서 난 그냥 여분의 추가 @. 여태까지는 그런대로 잘됐다.

두 번째 줄의 길이가 변경되어 카디널은 출력 설명을 놓쳤습니다. .Prelude가 첫 번째 줄에 여분의 것을 추가하려고 시도하면 Prelude가 마음을 잃게되었습니다 (왜 그런지 실마리는 없습니다), 나는 다른 방법을 사용하여 두 번째 줄에 떨어 뜨 렸습니다. 그것은 실수로 제 3의 추기경 포인터를 낳았 기 때문에 ?(필요한 선택은 아니며, 내가 처음 발견 한 것은 핵분열과 추기경 둘 다 고정 된) 것들로 채워 졌습니다.

Hexagony는 불행히도 비교적 간단한 수정이었습니다. 포인터가 코드를 찾도록 문자열을 던졌습니다. 나는 알파벳이 전에 나타나서는 안되며 사건에 문제를 일으키지 않아야한다고 생각했습니다. 이것은 내가 사건을 테스트하지 않았다는 것을 깨달았을 때입니다. @ ai523 덕분에 추가 느낌표가 필요하다는 것을 알았으므로 e알파벳 문자열의가로 변경되었습니다 !.

다용도 정수 프린터의 점수

질문에 대한 @Stewie Griffin의 의견에 대한 발 차기 및 중단을 위해, "Verstatile Integer Printer"에 입력 된 각 답변의 점수를 보여주는 스 니펫이 있습니다.


1
이것은 사건에 약간의 문제 만 야기하는 것처럼 보입니다. 정확히 3 개의 느낌표가있어 프로그램이 중심에서 벗어나지 만 필러 문자를 네 번째 느낌표로 변경하면 쉽게 해결할 수 있습니다. e느낌표에 추가 한 알파벳을 변경했습니다 . 작동하는 것 같습니다.

1
좋은! 나는 비밀스럽게 미로를 기다리고 있었다. 별도의 메모에서 지금까지 코드의 가장 중요한 부분은 "PLEASEGIVEUPPLEASE"메시지이며, 시도를 중단하라는 메시지입니다. ;)
MildlyMilquetoast

17

41. 브레인 , 916 바이트

#  4"16" 3//v\(@#/;\D"14"<;n4
#/*`3 afaaZ">;[77*,68*,@;'1,'1,q)(22)S#   ␉␉␉␉ (
#yy␉;36!@
#`<` ␉
#=␉x
#<]+<[.>-]>[
#␉<
###xR+++++[D>+++++++L+++<-][<<<]>+.---.>][
#px%>~~~+␉+~*ttt*.x
#D>xU/-<+++L)
#R+.----.R␉>]|
#[#yy#yy0l0mx01k1k0l0ix0jx0h0h1d111P0eU0bx0b0o1d0b0e0e00x1d0i0fx0g0n0n11x0o0n0cx0c0o0f0c0gx0g0f0h0j0j0i0001k10mx0m0l11111100(^_)
#|␉
print((eval("1\x2f2")and(9)or(13   ) )-(0and 4)^1<<(65)>>(62))or'(\{(\{})(\{}[()])}\{}\{}\{})'#46(8+9+9+9+9+=!)#1111|=/=1/24=x=9[<$+@+-@@@@=>+<@@@=>+<?#>+.--.]/
__DATA__=1#//
#.\."12"␉*
###; console.log  39
""""#//
=begin␉//
#*/
#define␉z  sizeof 'c'-1?"38":"37"
#include<stdio.h>
int main()  /*/
#()`#`\'*/{puts(z);}/*'``
$'main'␉//
#-3o4o#$$$
<>"3"O.<␉>//
#
=end   #//
"""#"#//
#0]#echo 21#/(\[FAC,1<-#2FAC,1SUB#1<-#52FAC,1SUB#2<-#32FACLEGEREEX,1PLEASEGIVEUPPLEASE)  a>>>
#>27.say# /7Jn~15o|  
#8␛dggi2␛`␉|1|6$//''25  =#print(17) ###^_^_LEintnd"3"z!]/}23!@/*///Z222999"26

리터럴 탭, 리터럴 ESC 문자입니다. 그렇지 않으면 스택 익스체인지가 프로그램을 혼란시킬 것입니다. 작업하려면 아래 TIO 링크의 "입력"상자에서 프로그램을 복사하는 것이 좋습니다.

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

VIP 점수 (Veratile Integer Printer) : 0.01329

개요

이 프로그램은 인쇄 41 brainf에서 *** 40 최소한도 2d에서 39 커피 스크립트에서 38 C에서 37 C ++에서 36 미로, 35 INTERCAL에서 34 레일, 33 사건에서, 32 소용돌이에, 31 에서 모듈러 SNUSP, 30 공백에서 29 트리거에서 28 뇌 플랙에서 27 펄 6, 26 05AB1E에서 25 핍에서 24 Thutu에서 23 Hexagony에서 22 저 부하에서, (21)님에서 20 파이썬 3인치서곡에서 19 Reng에서 18 카디날에서 17 줄리아에서 16 Pyth에서 15 덤에서 14 Turtlèd에서 13 루비에서 12 분열에서 11 비 펀지-98, 10 비 펀지-93, 9 펄 5, 8 망막에서 7 JAPT에서 6 SMBF에서 5 파이썬 2에서 4 > <>에서 3 Minkolang에서 2 V / 정력과 1

확인

대부분의 언어는 위에 표시된 테스트 드라이버로 테스트됩니다. 당신은 Reng 테스트 할 수 있습니다 여기에 모듈 형 SNUSP을 여기 ; 필요에 따라 19와 31을 각각 출력합니다.

테스트 드라이버가 마지막으로 토큰 화기를 포함하도록 업데이트되었습니다. 모든 C 코드는 Bash Script의 관점에서 인수로 저장됩니다. 또한 세로로 출력하는 대신 각 토큰 뒤에 후행으로 가로로 감싸도록 출력을 변경했습니다. 이것은 공백 출력과 일치시키기 위해 내가 선호하는 것입니다. 그러나 너무 혼란스러워하는 사람은 누구나 변경할 수 있습니다.

또한 런 다운에서 Turtlèd의 UFT8 문자에 대한 열 간격을 처리하기 위해 테스트 드라이버를 조정했습니다. 그 잘못된 정렬은 나를 미치게했다! “수정”은 è를 찾고 해당 경우의 열 너비를 변경하기 때문에 해킹하기가 쉽지만 작업이 완료됩니다.

설명

먼저, 마지막 게시물 의 @SnoringFrog의 다목적 정수 프린터 점수 런 다운 코드 스 니펫 이 얼마나 멋진 지 말하고 싶습니다 . 나는 잠시 동안 게시하기 전에 답변을 계산 해 왔으며, 작게 유지하도록 영감을주었습니다. @ sp3000의 대답을 결국 이길 수 있다고 생각합니다.

그래서 나는 내가 할 수있는 것을 골라 내려고 노력함으로써이 답을 연구하기 시작했고 나는 꽤 성공했다. 총 바이트 수가 40보다 작은 다른 언어로 답변을 받았습니다. 그러나 Minimal-2D로 골프를 치려고 시도하면서 BF를 배워야 파생 상품을 더 잘 사용할 수 있었고 프로세스에서 @Primo의 기록을 깨뜨린 Hello, World! . 나는 우아함을 사랑에 빠졌다.

Minimal-2D는 @Primo가 사용한 테이프 초기화 기술을 충분히 활용할 수는 없었지만, 어쨌든 바이트가 너무 무거울 것이라는 의견이 있습니다. 우리는 결국 정수를 인쇄하려고합니다. 그러나 @Primo는 BF를 곱하는 방법을 배우기위한 길을 보냈습니다. 이는 Minimal-2D의 코드로 가져 왔습니다.

그런 다음 BF를 포함하는 방법에 대한 @SnoringFrog의 의견을 다시 읽고 BF를 포함 할 수있을뿐만 아니라 BF 답변에서 골프를 쳤던 Minimal-2D 코드를 많이 사용할 수 있음을 깨달았습니다. 그래서 나는 BF로 대답하기 위해 파헤 쳤다. 그리고 우리는 여기에있다.

세부 사항에 들어가기 전에 한 가지 더. 골프 이외의 이유로 몇 가지 변경 사항이있었습니다. 먼저, @SnoringFrog에 추가 된 코드의 대부분을 2D 언어 바로 아래에 여러 행으로 옮겼습니다. 나에게 2D 랭귀지가 폴리 글 로트 중심을 가로 지르는 것을 막기 위해 가능한 장기적인 전략적 움직임이다. 이 이동에 대한 바이트 적중률이 낮아서 진행했습니다.

둘째, 다양한 리팩터링 과정에서 나는 Begunges와 Minkolang이 숫자 출력 후에 후행 공백을 출력한다는 것을 알았습니다. 이것은 우리가 이러한 언어에 대해 테스트 드라이버에서 보았던 null 바이트의 원인이라는 것을 알았습니다. 스택 값을 값 대신 아스키 코드 (후행 공백 기능은 포함하지 않음)로 출력하여 문제를 해결했습니다. 이 변경에도 작은 바이트 적중이 있었지만 이제 테스트 드라이버의 출력이 너무 균일합니다. 내가 어떻게 할 수 없습니까?

SM / BF

기본 사항을 빠르게 살펴 보겠습니다. 다음은 SMBF 및 BF에 유효한 명령입니다.

>   Move the pointer to the right
<   Move the pointer to the left
+   Increment the memory cell under the pointer
-   Decrement the memory cell under the pointer
.   Output the character signified by the cell at the pointer
,   Input a character and store it in the cell at the pointer
[   Jump past the matching ] if the cell under the pointer is 0
]   Jump back to the matching [ if the cell under the pointer is nonzero

두 언어 모두 값이 저장되고 변경되는 메모리 테이프를 가지고 있습니다. SMBF의 유일한 차이점은 실행중인 코드가 시작 지점 왼쪽의 메모리 테이프에도 저장된다는 것입니다. @SnoringFrog이 지적했듯이 SMBF와 BF가 다른 결과를 생성하도록하면 메모리 포인터를 원점의 왼쪽으로 이동하는 데 달려 있습니다. Tio의 BF 인터프리터에서 메모리 포인터는 원점에서 왼쪽으로 이동할 수 있으며 SMBF가 보는 Polyglot의 ASCII 코드 대신 0을 찾습니다. 이리 은 SMBF와 BF에서 실행할 수있는 차이를 보여주는 예입니다.

폴리 글롯이 시작될 때 Befunges >는 두 번째 행에서 실행을 완료해야하고 Perl6은 모든 >앞에.가 있어야합니다 <. 따라서 SM / BF <>는 메모리 포인터를 원점으로 두는 것으로 시작하여 [두 언어에 대한 공격적인 문자를 ]6 행으로 뛰어 넘 습니다 .

다음으로 두 언어의 원점 메모리 셀을 증가시키고를 사용하여 메모리 포인터를 왼쪽으로 이동합니다 +<. (대화 규약을 위해, 원점 메모리 셀을 셀 0으로, 셀을 원점 1, 2의 오른쪽에, 셀을 왼쪽에 -1, -2,…로 부를 것입니다). 셀 -1에는 SMBF의 폴리 글 로트에있는 마지막 문자의 ASCII 코드와 BF의 0이 포함되어 있으므로 다음 문자 [가 발생하면 ]SMBF가 코드로 전달되는 동안 BF 만 다음 문자로 점프 합니다.

SMBF를 통과 [.>-]할 때 폴리 글 로트 끝에있는 6을 인쇄 한 다음 메모리 포인터를 셀 0으로 다시 이동하고 값을 다시 0으로 설정 하여을 종료합니다 ]. 검토를 위해이 파인트의 테이프는 다음과 같습니다. SMBF의 네거티브 셀은 폴리 글 로트를 보유하고, 0이며 포지티브 셀은 0을 보유합니다. BF의 음성 및 양성 세포는 0을 유지하고 기원 세포는 1을 유지합니다.

다음 >으로 SMBF를 셀 1로 이동하고 BF를 다시 셀 0으로 이동하여 BF가 개인 코드 블록을 입력 할 수 있도록합니다 (BF가 [<+++++[>++++++++++<-][<<<]>+.---.>]아닌 문자를 제거했습니다). 여기서 우리는 다시 셀 -1로 이동하여 루프 제어 변수 (셀 -1)를 5의 값으로 초기화합니다. 그런 다음 루프를 종료하기 전에 셀 0에 10을 더하고 셀 -1을 다섯 번 감소시키는 루프를 입력합니다. 우리는 값이 0 인 셀 -1을 가리킬 것입니다.

다음으로 우리 [<<<]는 0을 가리킬 때 직면 하므로 BF는 이것을 통과하지 않습니다. Perl6가 오류가 발생하지 않도록 여러 개의 균형 >을 선행과 균형을 맞추는 <것입니다.

이 시점에서 셀 0의 값은 51입니다. 4의 아스키 값은 52이므로 포인터를 셀 0에 1을 더한 다음 값을 인쇄합니다. 마지막으로, 우리는 셀 0을 아스키 문자 1로 다시 감소시키고 메모리 포인터를 셀 1 (값 0)로 설정하기 전에를 지나서 종료합니다 ].

SMBF와 BF는 모두 [8 행 에서 마지막 에 도달 한 반면 0은 0입니다. 따라서 두 ]번째 줄이 11 번 줄에 [도달 할 때까지 나머지 Minimal-2D 코드를 뛰어 넘습니다 . 그러나 12 번 줄이 다른 줄로 시작하기 때문에 수명이 짧습니다 .

리 팩터

최소 2D

Minimal-2D의 재기록은 대부분 BF의 곱셈 트릭과 유사한 방식으로 일부 바이트를 절약하는 것이 었습니다. 그러나 최소 2D에는 루프 제어를위한 []문자 가 없습니다 . 대신 다음 명령이 있습니다.

/   Skips next instruction if the data pointer is set to 0.
U   Tells the program to switch to the up direction of processing instructions.
D   Tells the program to switch to the down direction of processing instructions.
L   Tells the program to switch to the left direction of processing instructions.
R   Tells the program to switch to the right direction of processing instructions.

BF와 2D 방식으로 동일한 논리 구조를 생성하는 데 사용할 수 있습니다. 예를 들어, BF의가 ++++++[>++++++<-]>.에 해당 최소-2D한다.

다음 은 폴리 글롯에있는 Minimal-2D 코드의 단순화 된 버전입니다. 모든 관련없는 코드가 제거되고 문자가있는 모든 자리가로 대체되었습니다 #.

###################D
###R+++++[D>+++++++L
###>
D>#U/-<+++L)
R+.----.R

D라인 (1)에서 상기 명령 포인터를 전송 L왼쪽에있는 포인터를 전송 수개 라인 8. 여기에서는 루프 제어 변수 (셀 0)를 7로 설정하고 메모리 포인터를 셀 1로 이동하고 루프를 입력합니다. 루프에서는 셀 1에 3을 추가하고 셀 0을 줄인 다음 셀 0의 값이 아직 0인지 확인합니다. 그렇지 않은 경우 셀 1에 다른 8을 추가 한 다음 감소시키고 다시 확인합니다. 이 루프의 결과는 셀 1의 값이 루프 끝에서 51로 설정됩니다 (6 * 8 + 3).

을 호핑하고 U메모리 포인터를 셀 1로 이동 한 다음 폴리 글롯의 11 행에서 오른쪽으로 이동 하여 루프를 종료합니다 . 마지막으로, 우리는 4의 아스키 값까지 증가한 다음 프로그램을 끝내기 위해 오른쪽으로 뛰기 전에 0의 아스키 값으로 감소합니다.

망막

Retina에는 모든 BF 파생 상품에 대해 작업하기 어려운 많은 요구 사항이있었습니다. 그것은 연속 좋아하지 않는다 +일치하지 않는 또는 's을 (를) ()[]. 그러나 이것들은 실제로 다른 모든 라인에 대한 요구 사항이므로 BF, SMBF 및 Minimal-2D에 대한 많은 작업은 많은 수의 코드를 짝수 라인에 배치하는 것과 관련이 있습니다.

Retina에게만 커밋 된 1 바이트는 |11 행의 마지막에 있습니다. @ ais523 인용 "@로 끝나는 대부분의 정규 표현식 | 무엇이든 일치합니다”. 이것이 없으면 Retina는 0을 반환합니다. 이것이 수정되는 이유는 모르겠습니다. 나는 긴 선을 피하고 있었기 때문에 Retina를 너무 많이 파고 들지 않았습니다. 그러나 Prelude와 마찬가지로 디버깅 방법을 이해해야 할 때까지 이해할 필요가 없다는 것을 알았습니다.이 경우 대부분 줄을 찾을 때까지 줄을 삭제 (2의 배수)로 구성했습니다. 그것이 고장의 원인이됩니다. @ ais523의 의견을 바탕 으로이 수정 사항을 추측하고 보상했습니다. 나는 학교가 너무 시원하다고 생각합니다.

추기경

나는 Cardinal의 코드와 관련하여 @SnoringFrog의 Minimal-2D 배치를 좋아했습니다. 추기경이 Retina를 화나게하지 않는다는 점을 고려할 때 좋은 위치이며 Minimal-2D와의 상호 직조가 가능해 보입니다. 그래서 Minimal-2D를 2D 땅까지 이식하기 시작했을 때, 나는 추기경을 타고 왔습니다. 그러나 추기경에는 몇 가지 외관상의 변화가있었습니다. 먼저, Minimal-2D가 루프 내에서 메모리 포인터를 변경하기 위해 >명령문의 시작 부분 근처에서 던졌습니다. #p x%>~~~+ +~*ttt*.x둘째, 모든 문자를 오른쪽으로 이동하여 Minimal-2D 공간을 우아하게 루프에서 나갈 수 있도록했습니다. p이 고통에서이 문자 패딩입니다.

베 펀지 / 98

C ++ 리 팩터가이 코드를 제외한 다른 2D 언어 코드를 모두 변경했기 때문에 Befunges는 실제로 폴리 글 로트를 다운시키기 시작했습니다. 이 코드에서 WTF가 진행되고 있음을 알기 위해 Begunge 설명서에서 이것을 발견했습니다.

.명령은 스택에서 값을 가져 와서 십진 정수로 출력 한 다음 Forth와 비슷한 공백을 출력합니다 . ,값을 팝하여 문자의 ASCII 값으로 해석하여 해당 문자를 출력합니다 ( 공백이 뒤 따르지 않음 ).

이런 몰리! 출력에서 널 바이트를 정리할 수 있습니다. 그 후, 더 큰 ASCII 값을 입력하고 코드를 분리하는 방법을 알아내는 것이 전부였습니다. Befunge-98에는 in ;을 건너 뛰라고 알려주 는 점프 코드 가있어 분리가되었습니다.[77*,68*,@;[77*,68*,@;'1,'1,q

Befunge-98 '에는 다음 문자의 ASCII 코드를 가져 오는 명령 ( )이 있습니다. 따라서 '1,문자의 코드 1ASCII 코드를 가져 와서 스택에 넣은 다음로 스택의 최상위 값에 대한 ASCII 문자를로 인쇄합니다 ,. 11을 인쇄하기 위해 이것을 두 번해야하고 a q를 삭제하여 정상적으로 종료하십시오.

적절한 사랑은 조금 덜 편리하지만 단지 단지. 여기서 원하는 코드를 스택에 배치하기 위해 계산을 수행해야합니다. 다행히도, 우리의 코드에는 동일한 출력 명령 전에 7 * 7 및 6 * 8이 쉽게 곱해졌습니다 ,. 그런 다음 @형의 코드가 출력물을 오염시키기 전에 Befunge를 종료했습니다 .

민 콜랑

Befunge의 후행 공백에 대한 픽스를 찾은 후 Minkolang 픽스도 찾는다는 아이디어에 꽤 흥분했습니다 .Minkolang의 문서에 따르면이 시점까지 사용 된 출력 명령은 Befunge 통역사와 같은 방식으로 작동했습니다. O이 시작 기능을 공유하는 것으로 설명되지 않은 다른 출력 명령으로 문서화되었으므로 어둠 속에서 총을 맞아 문자열을 출력하려고했습니다 "3". 완벽한 승리.

> <>

Minimal-2D 코드를 이동할 때 가장 먼저 살펴본 것 중 하나는> <>와 함께 이동할 수 있는지 확인하는 것이 었습니다. 2D 폴리 글 로트 횡단주의를 다루려고한다면 모든 범죄를 다룰 것입니다. 나는 기본적으로 ;n4 1 행의 끝 부분 에 넣고 1 \D행으로 다시 옮기는 해결책에 행운을 빕니다 . . 나중에 다른 유사한 언어에서> <>를 분기하는 데 사용할 수 있다고 생각합니다.

펄 6

<>이 답변의 다른 곳에서 Perl6의 균형 문제에 대해 이야기 했으므로 다시 다루지 않겠습니다. 그러나 나는 #>27.say#두 번째 줄에서 마지막 줄로 옮겼 음을 지적하고 싶습니다 . 이것은이 답변에서 기능적 목적을 가지고 있지 않습니다. 나는 실제로이 라운드를 사용하지 않은 다른 대답을 만족시키기 위해이 움직임을 만들었습니다. 다음 기회에 답변을 게시 할 계획이므로 그대로두기로 결정했으며 실행 취소 및 재 실행을 귀찮게하고 싶지 않았습니다.

버그 수정

05as1e

05as1e는 이전 버전만큼 새로운 Begunge 코드를 좋아하지 않았습니다. 나는 그것이 ,유일한 혁명적 인 인물이기 때문에 그것이 s 라고 가정합니다 . 어쨌든, 나는 "공격적인 명령을 숨기기 위해 두 번째 줄로 다시 이동해야했으며 , "이후 "두 언어 모두에서 Befunge 코드 경로보다 먼저 가야 한다는 것을 알았습니다 . (나는 yes-op와 같은 용어를 만들 수 있습니까?) Line 2의 2-dimentionality는 매우 엄격하지만 <Begunge의 코드 경로 이전과 를 대체 할 수있었습니다 ". 는 <그러나 Perl6의 요구 사항이었다. (이는 <모든 것을 선행 해야한다 >.) 나는 <05ab1e와 Perl6의 의견 불일치를 해결하는 본능과 예지력으로 신성한 위치에 인라인 을 떨어 뜨릴 수 있었다 .

회전

2 행의 Befunge 변경으로 1인시던트 / 월행 이전 에 폴리 글 로트가 추가되었습니다 . 이로 1인해 Whirl이 휠의 잘못된 지침을 가리 키기 시작했습니다. 1C / C ++의 전 처리기 지시문에서 첫 번째 는 코드의 행 번호 참조 일 뿐이며 다른 행 번호와 마찬가지로 쉽게 할 수 있으므로 4Whirl을 만족시키기 위해 임의로 변경했습니다 .

사건

이 시점에서 폴리 글 로트 끝에있는 해독 문자열이 잘 알려져 있으므로 다루지 않겠습니다. 문자열에서 가능한 것을 제거하고 필요한 새로운 토큰을 추가했습니다. 이 문자열에없는 2 개의 해독 문자가 있지만 지적해야합니다. 첫째, 두 번째 입력 R#R+.----.R >]|Fusion 시작점이기 때문에 여기에 필요하며 이미 동일한 방향으로 Fusion 시작점이 향하고 있기 때문에이 라인에서 더 안전합니다. 둘째, x의는 #= xA의 관련 토큰 제거하는 것입니다 ␉␊#더 일반적이되었다 패턴을.

기타

Hexagony, Whitespace 및 Prelude는 일반적으로 약간의 조정이 있었지만 말할 가치가 없습니다.

마지막 생각들

이것이이 답변에 대한 전부입니다. 다음 답변에서 출발점을 찾는 사람들에게는 악을 제안 할 것입니다. 비록 그것을 면밀히 살펴 보지는 않았지만 실행 가능한 것처럼 보이지만 통합하기가 너무 어렵다고 생각하지는 않습니다. 나는 많은 폴리 ​​글 로트를 건너 뛰는 데 도움이되는 점프 명령이 있다는 것을 알고 있습니다. 행운을 빕니다.


인시던트 실패 (인쇄 3333후 입력 대기), 쉽게 고칠 수 있습니다. 문제는 당신이 토큰을 (삽입 한 것입니다 -]) ^- 이전에 프로그램의 끝으로 이동하는 데 사용 된 토큰입니다. 다른 두 가지 용도 -]는 연속적이므로… xx… x… 패턴을 형성하여 뒤로 점프합니다. 그러나 -]조금 더 일찍 (또는 ^_나중에 나중에 또는 둘 다) 이동하는 것은 상당히 쉽습니다.

@ ais523 감사합니다. 이것이 글을 쓰는 동안 골프를 위해 얻는 것입니다. 인시던트 어린이를 항상 확인하십시오. 다행히도이 빼기를 사용 하여이 문제를 해결할 수 있었으므로 전반적인 승리라고 생각합니다.
Chance

1
V를 -v(자세한 경우)로 실행하면 리터럴 이스케이프 문자를로 대체 <esc>하여 나중에 코드 작업을 좀 더 쉽게 할 수 있습니다. (생각합니다)
Pavel

와! 현상금에 대한 @ ais523 감사합니다. 월요일 아침에 시작하는 좋은 방법입니다!
Chance

Befunge-98이 Befunge-93보다 오래된가요?
CalculatorFeline

17

183. Intel 8080 부팅 이미지 (ZEMU), 9870 바이트

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

설명

기계 코드를 추가하는 아이디어에 대한 Potato44 덕분에이 답변을 만드는 것이 매우 재미있었습니다.

CP / M COM 파일은 폴리 글롯의 크기를 약 60KB로 제한하므로 피하고 싶습니다. 부팅 이미지는 ZEMU가 기본적으로 6 번째 섹터 (1 기반, 128 바이트 논리 섹터)에서 부트 섹터를로드하므로 polyglot의 시작을 실행할 필요가 없기 때문에 COM보다 훨씬 쉬운 것으로 나타났습니다. 부트 코드는 폴리 글롯에서 오프셋 0x280 ((6-1) * 128)에 있어야합니다.

이 페이지 에서 링크 된 ZEMU 에뮬레이터를 사용 합니다 . ZEMU에서 폴리 글롯을 실행하려면 :

  • 디스크> A : 폴리 글롯 파일 선택
  • 옵션> 명령어 세트 I8080
  • 부팅 버튼을 누릅니다

한 문자를 콘솔 ( cns$ot)에 인쇄하는 기능 은 ZEMU 배포의 BIOS22Dv221.ASM에서 복사되었습니다. 두 가지 변경 사항이 있습니다. 매개 변수를 제어하기 때문에 문자가 7 비트 ASCII로 마스킹 되지 않고 Intel 8080에 존재하지 않는 Zilog Z80 명령 이기 때문에 (0으로 점프하는 경우) jrz cns$ot로 바뀝니다 .jz cns$otjrz

초기 프로그램 ( Intel 구문 , 여기 에서 링크 된 어셈블러 ) :

    org 3120h    ; chosen so that cns$ot == 0x3131, easier to generate
                 ; this program will be generated at this offset
                 ; to run it directly specify org 0100h

    mvi c,31h    ; '1'
    call cns$ot
    mvi c,38h    ; '8'
    call cns$ot
    db 38h       ; for answer 188, NOP in I8080
    mvi c,33h    ; '3'
    call cns$ot
    hlt          ; halt processor

;;;;;;;;; copied from BIOS22Dv221.ASM
cno$sp equ 7dh
cno$sb equ 01h
cno$si equ 00h
cno$dp equ 7ch

; print char to console, receives char in c register
cns$ot:
    in cno$sp    ; in status
    xri cno$si   ; adjust polarity
    ani cno$sb   ; mask status bit
    jz cns$ot    ; repeat until ready
    mov a,c      ; get character in a
    out cno$dp   ; out character
    ret

이 프로그램에는 폴리 글롯에서 직접 사용할 수없는 문자가 포함되어 있습니다. 대부분의 ASCII 제어 문자 (코드 <0x20)는 Simula에서 금지되며 ASCII가 아닌 문자 (코드> = 0x80)는 파일이 유효한 UTF-8이어야하므로 단독으로 나타날 수 없습니다. 따라서 위의 프로그램은 유효한 UTF-8 인 다른 프로그램에 의해 생성됩니다.

다음 프로그램은 필요한 코드를 생성하여 점프합니다. ld (hl),a잔디 ( 'w'==0x77) 때문에 사용할 수 없습니다 . sub h(0x94) 및 xor a(0xAF)는 UTF-8 연속 바이트이므로 UTF-8 리드 바이트를 앞에 추가해야합니다. 명령어 ret nc(= 0xD0, 캐리하지 않은 경우 반환)는 UTF-8 리드 바이트로 사용됩니다. 아무것도하지 않게하기 위해서는 scf명령 (set carry flag) 이 선행됩니다 . ','DOBELA의 경우 (0x2C) 및 '.'(0x2E) 도 피 하십시오. org 0100h지시어는 사용 된 어셈블러가 이해하지 못하기 때문에 사용되지 않습니다 (org에서 GUI로 설정 됨). 이 프로그램은 어쨌든 위치 독립적입니다. Zilog 니모닉을 더 좋아하기 때문에 더 긴 프로그램에 사용했습니다.

Zilog 구문 , 어셈블러여기 에서 연결 됩니다 .

  ; generate: 0E 31 CD 31 31 0E 38 CD 31 31 38 0E 33 CD 31 31 76 DB 7D EE 00 E6 01 CA 31 31 79 D3 7C C9

  ld hl,3120h

  ld a,3Fh
  scf       ; set carry flag so that ret nc does nothing
  ret nc    ; utf8 lead byte for next insn
  sub h     ; a -= h; a = 0Eh;  utf8 cont byte (opcode 0x94)
  ld c,a

  ld (hl),c ; 0Eh    ; not using ld (hl),a because it is 'w'
  inc hl

  ld (hl),h ; 31h
  inc hl

  ld a,32h
  cpl       ; a = ~a; a = 0xCD
  ld d,a
  ld (hl),d ; CDh
  inc hl

  ld (hl),h ; 31h
  inc hl
  ld (hl),h ; 31h
  inc hl

  ld (hl),c ; 0Eh
  inc hl
  ld (hl),38h ; 38h
  inc hl

  ld (hl),d ; CDh
  inc hl
  ld (hl),h ; 31h
  inc hl
  ld (hl),h ; 31h
  inc hl

  ld (hl),38h ; 38h
  inc hl

  ld (hl),c ; 0Eh
  inc hl
  ld (hl),33h ; 33h
  inc hl

  ld (hl),d ; CDh
  inc hl
  ld (hl),h ; 31h
  inc hl
  ld (hl),h ; 31h
  inc hl

  ld (hl),76h ; 76h
  inc hl

  ld a,23h  ; not using ld a,24h because it has '$' (breaks SNUSP)
  inc a
  cpl       ; a = ~a; a = 0xDB
  ld d,a
  ld (hl),d ; DBh
  inc hl

  ld (hl),7Dh ; 7Dh
  inc hl

  ld a,c    ; a = 0Eh
  cpl       ; a = F1h
  dec a
  dec a
  dec a     ; a = EEh
  ld d,a
  ld (hl),d ; EEh
  inc hl

  scf
  ret nc
  xor a     ; a ^= a; a = 0; utf8 cont byte
  ld c,a
  ld (hl),c ; 00h
  inc hl

  ld a,4Ah
  scf
  ret nc
  sub h     ; a -= h; a = 0x19;  utf8 cont byte
  cpl       ; a = ~a; a = 0xE6
  ld d,a
  ld (hl),d ; E6h
  inc hl

  ld a,c
  inc a
  ld d,a
  ld (hl),d ; 01h
  inc hl

  ld a,35h
  cpl       ; a = 0xCA
  ld d,a
  ld (hl),d ; CAh
  inc hl
  ld (hl),h ; 31h
  inc hl
  ld (hl),h ; 31h
  inc hl

  ld (hl),79h ; 79h
  inc hl

  ld a,2Dh  ; not using ld a,2Ch because it has ','
  dec a
  cpl       ; a = 0xD3
  ld d,a
  ld (hl),d ; D3h
  inc hl

  ld (hl),7Ch ; 7Ch
  inc hl

  ld a,36h
  cpl       ; a = 0xC9
  ld d,a
  ld (hl),d ; C9h

  ld sp,3232h  ; set up stack for generated program

  ld hl,3120h  ; not using ld l,20h because it has '.'
  jp (hl)      ; go to generated program 
               ; confusing mnemonic - actually it is jp hl, ie. PC = HL
               ; opcode 0xE9, utf8 lead byte (0xE9 = 0b11101001), must be followed by 2 cont bytes
  db 80h,80h

이 프로그램은 다음과 같이 구성됩니다.

! 1>?7ДOq#t#>2/Wr#t#t#q#68#r#t#t#68#q#63#r#t#t#6v#>#</Wr#6}#y/===Wr#7ЯOq#>J7Д/Wr#y<Wr#>5/Wr#t#t#6y#>-=/Wr#6|#>6/Wr122! 1退

폴리 글롯에서 오프셋 0x280에 있어야합니다 (2 행 참조). 테스트 드라이버의 추상화 테스트에서이를 확인합니다.

리팩토링

포탄

껍질을 가장 긴 줄로 다시 옮겼습니다. 파렌이 다른 언어와 정렬되지 않기 때문에이 레이아웃이 더 좋습니다. 껍질 앞에 Moorhenses와 Flaks를 움직여서 껍질을 바꿀 때 파손되지 않습니다. 가장 긴 줄은 이제이 레이아웃을 갖습니다 :

Grass  Moorhenses  Flaks  Shells  Rubies/Pythons/Perl5  PicoLisp  Prelude  Klein001

새로운 쉘 코드 :

a=$(printf \\x00)
b=$(echo -n $a | wc -c)
case $b[1] in 1*)echo 54;; 4*)echo 78;; 8*)echo 166;; *1*)echo 50;; *)echo 58;; esac
exit

오래된 껍질 코드 :

a=$(printf \\x00)
b=${#a}
case "{"$ar[1]"}"${b} in *1)echo 54;; *4)echo $((19629227668178112600/ 118248359446856100));; *1*)echo 50;; *)echo 58;; esac
exit

길이는 지금부터 $a계산됩니다 $(echo -n $a | wc -c)( 여기서 ). 처음에는 이것을 제거하기 위해 이것을 사용 #했지만 이제는 더 짧은 코드 때문에 사용됩니다. #Flaks가 쉘보다 앞에 있기 때문에 쉘에 포함될 수 있습니다 .

Yash (166)는 기본적으로 옵션을 지원하지 않는 내장 에코 명령을 사용하므로 "-n"과 줄 바꿈은 출력의 일부가되어 추가로 4 바이트를 제공합니다. ECHO_STYLE기본값을로 설정하지 않으면 SYSV( -n옵션은 허용되지 않습니다).

이 TIO 링크 는 모든 쉘에서 코드를 테스트합니다.

추가 사전 (((((쉘은 언더로드 및 망막을 수정합니다. 58Prelude 에서 숨기려면 한 쌍의 Parens가 추가됩니다 ( #)after로 닫힘 exit). {전에는 ((((((Japt 용입니다. Japt가 없으면 중단됩니다.

플라스크

Flaks 시작 코드의 재배치로 인해 단순화 될 수 있습니다 ([]).

     line 21      (Grass(([5]{})))    scripting langs                  clear stack     Flaks main code                                                                                      begin skip code      the rest of polyglot   end skip code   print(85)
old: []{}[][][]   ((([]{})))          ((()()<<()>>)((()([])))<<()>>)   {}{}{}{}{}{}{}  ({}<(((((()()())){}{})){}{})>)(({})){}{(<(<()>)({})({}<{}>({}){})>){({}[()])}}({}){}({}()<()()()>)   (<><()>){({}[()])}{           ...           }{}<>              ()
new: []{}[][][]     ([]  )                                                             ({}<(((((()()())){}{})){}{})>)(({})){}{(<(<()>)({})({}<{}>({}){})>){({}[()])}}({}){}({}()<()()()>)   (<><()>){({}[()])}{           ...           }{}<>              ()

이 TIO 링크 는 모든 Flaks에서 코드를 테스트합니다.

핵분열 및 추기경

핵분열이 LNUSP로 옮겨졌습니다 : R"12"R _*. 두 번째 포인터는 가능한 빨리 핵분열을 종료하는 데 사용됩니다. 3 단계에서 자세한 정보는 답변 54 를 참조하십시오.

추기경은 LNUSP로 옮겨졌습니다 : @ %"18". Fission에서와 같이 두 번째 포인터는 3 단계에서 가능한 빨리 Cardinal을 종료하는 데 사용됩니다.

마리오 랑

사용하다 ####...====...플랫폼 대신 .

여기에 이미지 설명을 입력하십시오

최소 2D

MarioLANG을 사용한 폴리 글롯 :

여기에 이미지 설명을 입력하십시오

Wierd & 1L_a

Wierd : 10 행 79 열에 공백을 사용하여 IP를 반영하십시오.
1L_a, Wierd : 9 행 79 열의 공백이 중요합니다.

여기에 이미지 설명을 입력하십시오

입방체

새로운 코드 : :1*23!/5x%6E0

:1*23!/5x%6E0
! - skip over / in Klein 201
x - destroy Cardinal pointer before it hits /

pure:
:1*23/5%6E0

faceval:
0 0
1 9
2 18
3 27
4 36
5 45

program:
:1   mem = 9
*23  mem *= 18; mem *= 27
/5   mem /= 45
%6   print mem
E0   exit

9*18*27/45 == 97 (integer division)

6 in %6 is used to print mem because 0-5 are used to print faceval (eg. %3 prints 27)
0 in E0 is not an exit code, it is present just to trigger E instruction

클라인 201/100

새로운 코드 : !|*****[[[828+*+@+*99]]]*****|!

빈 스택에서 터지는 것이 0을 제공하기 때문에 모든 곱셈 스택에는 단일 0이 포함됩니다. 이 0은 +옆에 와 함께 주 번호에 추가 됩니다 @. 이전에는으로 삭제되었습니다 .Klein 001 답변? 참조 .

클라인의 문 작동 방식 :

여기에 이미지 설명을 입력하십시오

회전

소용돌이 코드는 기본적으로 동일하지만, 주요 코드는 현재 작업이 ops.load (4)가 아니라 ops.one (2)이라고 가정한다는 것입니다.

효과적으로 Whirl은 3 가지 작업이 있다고 생각할 수 있습니다.

  • 1 한 걸음 돌리다
  • 0 회전 방향 전환
  • 00 현재 명령 및 스위치 링 실행

프로그램에 대한 추론을 단순화하기 위해 결합 된 작업 :

  • 0000 비활성 링의 현재 op가 noop이면 부작용없이 활성 링의 현재 op를 실행하십시오.
  • 11..11 n 단계 회전
  • 011..11 방향 전환 및 n 단계 회전

0000활성 링의 현재 명령을 실행하지만 부작용으로 비활성 링의 현재 명령을 실행합니다. 현재 비활성 링에 대한 지침이 무해한 경우 비활성 링으로 어떤 일이 일어나고 있는지 생각하지 않고 활성 링 작업에만 집중할 수 있습니다. 이것은 명확하게 분리되어 있기 때문에이 프로그램에서 특히 유용합니다. 먼저 숫자 32는 수학 링만 사용하여 생성 한 다음 ops 링으로 전환하고 2 개의 명령 (인쇄 및 종료)을 실행합니다.

먼저 메인 코드가 실행될 때 ops ring에서 현재 작업을 noop로 만들고 싶었습니다. 1) 주요 소용돌이 코드는 독립형으로 실행될 수 있으며 2) 수학 링으로 32 번을 만들 때 ops 링을 완전히 잊을 수 있습니다. 그러나 코드는 코드를 이전보다 길게 만들므로 주 코드는 현재 작업이 ops.one (2)이라고 가정합니다. 수학 연산의 부작용으로 ops.value가 1로 설정되어 인쇄에 사용됨을 의미합니다. 이전 코드는 ops.load 명령으로 동일한 효과를 얻었지만 ops.one을 사용하면 ops.value를 0이 아닌 값으로 설정하려는 의도를보다 명확하게 표현할 수 있습니다.

at this point current ring is ops, dir = clockwise, cur op = ops.one
00    switch to math ring
011   rotate to math.not
0000  math.not (math.val = 1)
01111 rotate to math.store
0000  math.store (mem[0] = 1)
1     rotate to math.add
0000  math.add (math.val = 2)
01    rotate to math.store
0000  math.store (mem[0] = 2)
011   rotate to math.mult
0000  math.mult (math.val = 4)
0000  math.mult (math.val = 8)
0000  math.mult (math.val = 16)
0000  math.mult (math.val = 32)
011   rotate to math.store
00    math.store (mem[0] = 32), switch to ops ring
up to this point the program is the same as before

01111 rotate to ops.intio
0000  ops.intio - print mem[0] as number
0111  rotate to ops.exit
00    ops.exit

새로운 코드는 기존 코드가 새로운 가정 때문에가 아니라 프로그램의 두 번째 부분에 이중 방향 스위치가 있기 때문에 더 짧습니다.

old: (1111) 00011000001111000010000010000011000000000000000001100 01111110000011100
new: (11)   00011000001111000010000010000011000000000000000001100   011110000011100

인시던트 / 목줄 전에 무언가를 변경할 때 소용돌이를 올바르게 유지하는 방법 :

  • 0메인 Whirl 코드 앞에 짝수가 있는지 확인하십시오.
  • 수 있도록 두 개의 연속 없습니다 0
  • 1Whirl이 다시 작동 할 때까지 충분한 s를 추가 / 제거 하십시오. n 1s를 추가 하는 것은 12-n을 제거하는 것과 같 1으며 그 반대도 마찬가지입니다.

Ropy를 추가했을 때 무의식적으로 첫 번째 규칙을 어겼습니다. 홀수의 0s 메인 코드가있는 경우 종료 명령을 중단하는 잘못된 ops 방향으로 실행을 시작합니다. 이제 라인 1 0을 보상 0하는 라인 3이 있습니다.

기타

CoffeeScript : console.log a&&39||180( 여기에서 )

INTERCAL : 37 행으로 이동
Brainfuck , Agony : 10 행에서 다른 brainfuck 파생물로 이동

xEec : 1L_a ( h#115# o#) 로 이동

CSL : 라인 80 으로 이동
Trefunge : 라인 120
Gaot ++ 로 이동 , 스톤 : 별도의 라인에 배치


4
좋습니다. 골프를 치기에는 많은 바이트입니다.
감자 44

16

16. Pyth (159 바이트)

#v\;2^0\;7||"<+0+0+0+<*!2'!1'L#'1r'4;n4
#v0#_q@
#>3N.15o|1
#|\w*
#8  ^<1b0 <
#|
#M`
print ((0 and'13')or(None and 9 or 1/2 and 1 or 5))
#"07|5//00;16 "jd5ki2

주 : 거기 인 ESC바이트 ( 0x1B애프터) o3 번째 행은 상기 후 j마지막 라인이다.

이것은 매우 재미있는 경험이었습니다. Japt와 Pyth는 모두 골프 언어이지만 Japt는 접두어이고 Pyth는 접두어이며 Pyth는 인수가 누락되면 입력을 자동 요청하고 실패합니다.

Haystack 답변 전에 나는을 사용하여 거의 작동하는 솔루션 #을 얻었습니다 .Japt에서 char 코드를 얻고 Pyth에서 loop-until-error가 발생합니다. Pyth는 공통 주석 문자가 #본질적으로 오류 사일런서로 작동 하기 때문에 폴리 글 로트에 매우 유용합니다 .

집에 도착했을 때 나는 //Japt와 Pyth의 두 부서에서 주석으로 작동하는을 사용 하여이 코드를 찾을 수 있었습니다. 그런 다음 Befunges를 올바르게 라우팅하는 것이 문제였습니다.

이것은 최적 일 가능성은 거의 없지만 지금은 충분합니다. 나는 그것들을 모두 테스트하려고 시도했지만 출력이 일치하는지 다시 확인하는 누군가에게 감사드립니다.

인쇄 파이썬 3 1 , V 2 , Minkolang 3 , 4> <> , 5 파이썬 2 , 자기 수정 브레인 퍽 6 , JAPT 7 , 망막 8 , 펄 9 , 비 펀지 (10 -93 ) , Befunge-98 에서 11, Fission 에서 12, Ruby 에서 13, Turtléd 에서 14, Haystack 에서 15 ,

Pyth에서 16 .

설명

Pyth가 보는 것은 다음과 같습니다.

#v\;2^0\;7||"string
multiline
string"07|5//00;16 "string

이것은 다음 의사 코드로 변환됩니다.

while no errors occur:
    evaluate ";"
    print 2
    print 0 to the power ";"
    print 7
    print "string\nmultiline\nstring" or 0 or 7
    print 5 or 0 divided by 0 divided by (missing)
print 16
do nothing with "string"

첫 번째 루프 ;는 유효한 표현식이 아닌 것을 평가하려고 할 때 종료됩니다 . 그런 다음 Pyth가 인쇄합니다 16.


어떤 방법으로 확장합니까? 나는 여전히 내 대답에 사용할 수있는 또 다른 5 바이트가 필요합니다.)
Alfie Goodacre

@AlfieGoodacre 게시물에 나머지 세부 사항을 추가합니다. 나는 제 정신을 유지하고 싶었으므로 누군가 내 장소를 훔치기 전에 내 코드를 게시했습니다. : D
PurkkaKoodari
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.