2016 Time Capsule String : 언어는 얼마나 다재다능합니까?


71

약 1 년 전에 2015 년 12 월 31 일에 다음과 같은 아이디어가있었습니다.

타임 캡슐 문자열을 만들어야합니다. 모두가 하나의 캐릭터를 추가하고 다음 새해에 우리는 그때 존재하는 esolang으로 모든 캐릭터 중에서 최고의 프로그램을 만들 수있는 사람을 보게 될 것입니다.

손잡이 기꺼이 수집 자 로부터 PPCG의 커뮤니티 1 년 안전을 유지했다.

엄청나게 74 명이 참여하여 놀랄만 한 74 개의 인쇄 가능한 ASCII 문자를 사용할 수 있습니다!

제출 된 순서대로 2016 타임 캡슐 문자열의 74 자입니다.

H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

다음은 2016 타임 캡슐 문자열의 74 자 (ASCII 순서)입니다 (앞의 공백).

 !!!!!#$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````eefmpxy{||||~~~~~~~~~

작업하기에는 많은 것이 아니지만 여기에서 우리는 도전을 좋아합니다.

도전

타임 캡슐 문자열에서 어떤 언어가 "최고"인지 판단하기 위해서는 각각에 74 개의 타임 캡슐 문자의 부분 집합을 사용해야하는 난이도가 증가하는 6 개의 (20 1 6 ) 과제가 있습니다.

6 개의 뚜렷한 도전이 있으면 더 많은 언어가 경쟁 할 수 있지만 최고의 언어 만이 모든 언어에 대답하고 높은 점수를 얻을 수 있습니다.

채점 :

  • 각 챌린지는 사용 된 문자 수에 따라 0에서 74까지의 점수를받습니다.
  • 점수가 높을수록 좋습니다.
  • 당신의 언어가 도전을 완료 할 수 없다면, 그 도전에 대한 점수는 0입니다.
  • 과제의 비어 있지 않은 부분 집합이 완료 될 수 있습니다.
  • 최종 점수는 6 가지 도전 과제의 점수 합계입니다.
  • 가능한 최고의 최종 점수는 6 × 74 또는 444 입니다.

도전 과제

1. 달리다

언어 코드가 처음에 실행될 수 없다면 아무것도 할 수 없습니다.

컴파일 타임 또는 런타임 오류없이 실행 / 실행되는 가능한 가장 긴 전체 프로그램 (74 시간 캡슐 문자 만 사용, 기억하십시오)을 작성하십시오.

프로그램이 무엇을하든 상관없이, 입력 / 출력이 있거나 무한 루프에 들어가더라도 상관없이 오류없이 실행되는 것만 중요합니다. (잘못된 사용자 입력으로 인한 오류와 마찬가지로 경고는 정상입니다.)

주석이 허용되므로 이처럼 간단 할 수 있습니다

#H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

파이썬에서 74 점을 얻었습니다.

(이것이 당신의 언어가 완수 할 수있는 유일한 도전이라면 대답을 두려워하지 말고 많은 표를 기대하지 마십시오.)

점수 = 프로그램 길이 (프로그램이 길수록 좋음)

2. I / O

입력 또는 출력 형식이없는 언어는 실행할 수없는 언어만큼이나 쓸모가 없습니다.

(0x33)에서 (0x7D)까지 의 인쇄 가능한 ASCII 문자가 주어지면 인쇄 가능한 ASCII 문자를 전후로 출력하십시오.!}

출력은 길이가 2 인 문자열 또는 목록이거나 공백 또는 줄 바꿈으로 구분 된 문자 일 수 있습니다.

예를 들어 입력이 }출력 인 경우 |~또는 ["|", "~"]또는 | ~또는 일 수 있습니다 |\n~.

마찬가지로 "위한 출력 !AC의 출력이다 B.

점수 = 74-프로그램 길이 (프로그램이 짧을수록 좋음)

3. 분기 성

조건은 종종 튜링 완전성 에 대한 요구 사항이며, 종종 유용한 언어에 대한 요구 사항입니다.

는 십진수로 종료되면, 양의 정수를 감안할 때 16다음 변경 6(A)에 7출력 결과; 그렇지 않으면 입력을 변경하지 않고 출력하십시오. 원하는 경우 입력 / 출력에 문자열을 사용할 수 있습니다.

예 :

2016 -> 2017
16 -> 17
116 -> 117
1616 -> 1617
6 -> 6
15 -> 15
17 -> 17
106 -> 106
2106 -> 2106

점수 = 74-프로그램 길이 (프로그램이 짧을수록 좋음)

4. 루프 성

루프를 수행 할 수없는 언어는 반복적 인 코드를 생성하므로 지루한 프로그래밍 작업을 잠시 수행해야합니다.

양의 정수가 주어지면, 인쇄 가능한 두 개의 ASCII 문자 사이에서 번갈아 나타나는 동심의 작은 사각형 패턴으로 채워진 측면 길이의 ASCII 아트 사각형을 출력하십시오 . 서로 다른 입력에 대해 동일한 두 문자 일 필요는 없습니다.

예를 들면 다음과 같습니다.

1    <- input
X    <- output

2
XX
XX

3
XXX
X-X
XXX

4
XXXX
X--X
X--X
XXXX

5
YYYYY
Y...Y
Y.Y.Y
Y...Y
YYYYY

6
XXXXXX
X----X
X-XX-X
X-XX-X
X----X
XXXXXX

7
ZZZZZZZ
Z-----Z
Z-ZZZ-Z
Z-Z-Z-Z
Z-ZZZ-Z
Z-----Z
ZZZZZZZ

점수 = 74-프로그램 길이 (프로그램이 짧을수록 좋음)

5. 수학

숫자와 수학에 좋지 않은 언어는 인문학 전공에도 적합 할 수 있습니다.

입력을 취하지 않고 2016 의 72 정수 제수를 양의 값과 음의 순서로 출력하십시오. 출력은 합리적인 방식으로 문자열 또는 목록으로 형식화 될 수 있습니다.

예:

-1, -2, -3, -4, -6, -7, -8, -9, -12, -14, -16, -18, -21, -24, -28, -32, -36, -42, -48, -56, -63, -72, -84, -96, -112, -126, -144, -168, -224, -252, -288, -336, -504, -672, -1008, -2016, 1, 2, 3, 4, 6, 7, 8, 9, 12, 14, 16, 18, 21, 24, 28, 32, 36, 42, 48, 56, 63, 72, 84, 96, 112, 126, 144, 168, 224, 252, 288, 336, 504, 672, 1008, 2016

점수 = 74-프로그램 길이 (프로그램이 짧을수록 좋음)

6. 밀교

(아니요, 아닙니다 .) PPCG의 우리는 난해한 것들을 좋아 합니다 . 그리고 quines 는 그 좋은 예입니다.

일반적인 quine 규칙 에 따라 가능한 가장 긴 quine을 작성하십시오 . quine은 입력을받지 않고 자체적으로 출력되는 프로그램입니다.

점수 = 프로그램 길이 (프로그램이 길수록 좋음)

특정 규칙

  • 6 가지 과제 각각에서 프로그램은 원하는 방식으로 재 배열 된 74 개의 타임 캡슐 문자의 하위 집합이어야합니다 . 빈 하위 집합이거나 부적절한 하위 집합 일 수 있으므로 각 프로그램은 0에서 74 자까지 가능합니다.
  • 일부 언어는 이것을 요구하거나 쉽게 피할 수 없기 때문에 입 / 출력 / 코드의 끝에있는 단일 후행 줄 바꿈은 아무 데나 괜찮습니다.
  • 달리 명시되지 않는 한, 각 챌린지는 기본 설정 에 따라 기능 또는 전체 프로그램으로 완료 될 수 있습니다 .
  • 모든 과제는 동일한 언어로 완료해야합니다.
  • Earth 어딘가에서 2017 년 이전에 작성된 언어 (또는 언어 버전)를 사용해야합니다 .
  • 타임 캡슐에 문자를 추가했는지 여부에 관계없이 누구나 대답 할 수 있습니다.

2016 타임 캡슐 캐릭터를 자유롭게 사용하십시오.


4
Yay : JavaScript가 잠재적으로 뛰어날 수있는 도전!
Downgoat

1
일부 솔루션에 대한 공동 작업을위한 토론 대화방
user48538

6
상당히 확실히 그 6×74 or 444것을 어떻게 든 다르게 행동 비어있는 프로그램을 의미하는 것처럼, 수 없습니다. 따라서 442가 실제 최소값이므로 3 개의 입력 프로그램 중 2 개에 문자가 있음을 의미합니다.
Destructible Lemon

7
내 언어는 Java입니다. 나는 기본적으로 잃는다 : P
Weckar E.

2
다시 해보자!
ev3commander

답변:


37

글 리포 , 74 + ( 74-36 ) = 112

1. 실행 (74 바이트)

!!#%QTQT@=A@$!!$)()*!&))+...1449:@HILOQZ\\^`````````eefmpx|||{~~~~~~y~|~ ~

2. IO (36 바이트)

!!!#!$!$4419TAHT\ee\OQQQ))*+)..)|~~~

설명

글 리포는 실제로 사용되는 캐릭터를 신경 쓰지 않기 때문에이 도전에 대한 상당히 좋은 선택처럼 보였습니다. 대신, 네 문자 그룹을보고 해당 네 문자의 반복 패턴에 따라 명령을 선택합니다. 타임 캡슐 문자열 사이에 많은 중복이 있기 때문에 우리는 18 개의 명령 (Glypho에서는 그다지 많지 않음)의 프로그램으로 제한되는 것을 제외하고 우리가 작성할 수있는 프로그램에서 상당히 유연합니다. 이렇게하면 처음 두 가지 문제를 매우 쉽게 해결할 수 있었지만 Glypho가 적은 문자로 다른 문자를 실행할 수 있을지 의심됩니다.

나는 wayback machine에서 2006-06-23에서 검색 된 Java 인터프리터를 사용하여이를 테스트 했으며, 명령에 약간 다른 매핑을 사용합니다.

0000 n
0001 i
0010 >
0011 \
0012 1
0100 <
0101 d
0102 [
0110 +
0111 o
0112 *
0120 -
0121 ]
0122 !
0123 e

실행 프로그램으로 변환 :

1d-+[...]

...번역을 방해하지 않는 정크는 어디에 있습니까 ?

1      Push 1.
d      Duplicate.
-      Turn into -1.
+      Add. Gives 0.
[...]  Skip the rest because the top of the stack is zero.

IO의 프로그램으로 변환 :

id1-+o1+o

이것이하는 일은 다음과 같습니다.

i   Read a character.
d   Duplicate.
1   Push 1.
-   Turn into -1.
+   Add to character, i.e. decrement it.
o   Output it.
1   Push another 1.
+   Add to character, i.e. increment it.
o   Output it.

24

CJam, 74 + (74 − 14) + (74 − 26) = 182 점수

1. 실행 (74 바이트)

e# !!!!!$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````efmpxy{||||~~~~~~~~~

e#전면으로 이동 하면 전체 줄을 주석 처리합니다.

2. I / O (14 바이트)

9`)ZH*+~):Q(Q)

Dennis는 8 바이트를 절약했습니다.

설명:

9`                   Push "9".
  )                  Extract character '9'.
   ZH*               Push 3 * 17 = 51.
      +              Add to get character 'l'.
       ~             Eval as CJam code. Command l reads a line.
        )            Extract the only character from the input line
         :Q(         Assign to Q and decrement
            Q)       Push Q and increment

3. 분기 성 (26 바이트)

4`)4Z|`I!`|~^~~T$AT$*%H(=+

설명:

4`)                            Push character '4'
   4Z|`                        Push 4 | 3 = 7, stringify
       I!`                     Push !18 = 0, stringify
          |~                   Setwise or and eval to get 70
            ^                  XOR to get 'r'
             ~                 Eval to read input
              ~                Eval the input as CJam code to turn
                               it into an integer
               T$              Duplicate it
                 A             Push 10
                  T$*          Duplicate that and multiply → 100
                     %         Mod the copy by 100
                      H(=      Compare to 17 - 1 = 16
                         +     Add the result (1 or 0) to the original

나는 나중에 다른 것을 볼 것이다. ( 편집 : 블록이나 문자열 리터럴이 없다면 가능할지 의심됩니다. 아마도 수학일까요?)


# 2의 경우을 사용할 수 있습니다 9`)ZH*+~):Q(Q).
Dennis

11

J, 점수 71 + (74-19) = 126

작업 1, 길이 71

AHILO=:( |T`T`Z`e`e`f`m`p`x`y|.~~%~@{|~^|Q@Q@Q+.*.449!~!~!~!!#$$&1\\~~)

이것은 동사 AHILO를 내부로 정의합니다 . 미사용 :

)))

이보다 더 길어질 방법이 없다고 생각합니다.

작업 3, 길이 19

+($#~$~4)=1e4|&%:*~

제한없이이 작업을 수행하는 방법 +16=100|]은 다음과 같습니다.

        ]  Input
    100|   mod 100
 16=       equals 16? (Evaluates to 1 or 0)
+          Add to input.

우리가 +, =그리고 여러 사본 또는 |우리의 처분에, 그리고 그것을 해결하기 위해 쉽게 ],하지만 숫자가 더 문제입니다. 다음은 입력 모듈로 100을 계산하는 첫 번째 부분입니다.

1e4|&%:*~
       *~  Input squared (multiplied with itself).
1e4        The number 10000.
   |       Perform modulo
    &      on
     %:    their square roots.

이 작업을 마치면 16을 만들어 봅시다. 쉬운 방법은 *~4(4를 곱한 것)이지만, 우리는 이미 *금지되어 있습니다. 대신 우리는 배열 조작을 할 것입니다.

($#~$~4)
    $~4   Reshape 4 to shape 4, resulting in the array 4 4 4 4.
  #~      Replicate wrt itself: replace each 4 by four 4s.
 $        Take length.

작업

2

이것은 가장 불가능합니다. 문자 값을 조작하는 유일한 방법은 a.u:입니다.

자, a대신에 사용할 수 있다면 A이것이 해결책이 될 것입니다.

Q{~(*^.4%9 1)+I.~&Q=:a.

이것을 작동시키는 데 가장 어려운 부분은 숫자 -1을 생산하는 것이 었습니다.

Q{~(*^.4%9 1)+I.~&Q=:a.
                     a.  The array of all bytes.
                  Q=:    Bind it to Q
              I.~&       and find the input's index in it.
   (        )+           Add the following array:
    *                    Signum of
     ^.                  logarithm of
       4%                4 divided by
         9 1             the array 9 1.
                         This evaluates to -1 1.
Q{~                      Index back into Q.

4

(*.1:"|~@+.)

이것은 껍질의 모양을 생성하지만 문자를 생성하는 방법을 찾지 못하는 것 같습니다. 아아.

5

분명히, 이것은 J에서 가장 쉬운 작업처럼 보입니다. 그러나, 없이는 i.매우 어려울 것입니다.

6

449캡슐 문자열에는 따옴표 나 J 문자열을 생성하는 다른 방법이 포함되어 있지 않기 때문에 가짜 quine 또는 이와 유사한 것이 없으면 불가능할 수 있습니다.


작업 2의 Q{~1+I.~&Q=:a.경우 다음 문자를 제공합니다. 알파벳 a.을에 바인딩 Q하고로 입력의 색인을 찾은 다음 I.하나를 추가하고에 색인을 추가하십시오 Q. 시도 해봐. 남아있는 유일한 문제는 생산하는 것입니다 -1...
Zgarb

또한 작업 3은 문자열 함수없이 수행 될 수 있습니다 +16=100&|. 어떻게 든 16과 100을 생산해야합니다.
Zgarb

@Zgarb (1) 예 ... (2) 아! 멋지다! 흠 너무 열심히해서는 안됩니다
코너 오브라이언

Ha, 나는 3을 얻었다 고 생각한다. +($@#~@$~4)=1e4|&%:*~우리는 각각 하나 (&=:+*와 두 개만 있기 때문에 매우 성가신 것이었다 4.
Zgarb

Aaand 여기에 2 : Q{~(*^.4%9 1)+I.~&Q=:a.로그 ^.가 0과 1 사이의 입력에 음수를 제공 한다는 것을 깨달았으며 %분수를 생성 *하고 결과를 -1과 1로
가져 가야한다는 것을 깨달았습니다

8

PowerShell- 총점 : 74

1. 경기-점수 : 74

#~= `TeQ.)`~H|$QL4yA)\*`!^O$1)!Z`!`~|\`&T@!x+e(f|Q`.|!4%.{~`:~~)m@~`@p~I9~

PowerShell에서는 이것이 매우 어렵 기 때문에 (내가 말할 수있는 한 주어진 문자로는 입력을 얻는 모든 방법이 불가능합니다) 적어도 첫 번째 과제를 무작위로 결정하여 예제를 모두 직접 복사하지는 않았습니다. 게시물에서.

다음은 랜덤 챌린지 1 답변 생성기입니다 ( #주석이있는 언어의 경우 ).

'#'+$(-join([char[]]' !!!!!$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````eefmpxy{||||~~~~~~~~~'|Get-Random -Count 73))

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


당신이 맞다고 생각합니다. 우리가 얻을 수있는 가장 가까운 $^것은 "세션에서 이전 라인의 첫 번째 토큰"입니다. 이는 매우 제한적이며 표준 I / O 규칙이 심각하게 구부러 질 가능성이 높습니다.
AdmBorkBork

@TimmyD 네, $^어쨌든 새로운 세션에서 비어 있습니다.
briantist

8

, ( 62 65 + 70) 135의 점수

1 : 실행

나는 모든 백틱 ( `)과 수학 연산자를 제거했습니다 . 모든 단항 및 이항 연산자를 만족시키기에 숫자가 충분하지 않아 충돌했습니다. 일부를 남겨서 +3 바이트가되었습니다 . 결과 프로그램 :

 !!!!!#$$%&())))...+1^4*49:=@@@AHILOQQQTTZ\\eefmpxy{||||~~~~~~~~~

나는 왜 이것이 어떻게 작동했는지 전혀 모른다. Atleast는 C # 런타임 예외를 발생시키지 않으므로 충돌하지 않습니다.

6 : 퀸

알다시피, 74 자의 어딘가에 -소문자 q가 있다면, 이것은 너무 쉬울 것입니다. 나는 I운영자에게 기쁘다 .

1/4I

이 코드는 명확하지 않습니다. 여기에 설명이 있습니다 :

1    Set object to 1 (1)
/4   Divide by 4     (0.25)
I    Set object to a fraction string. (1/4)

분수 문자열 (예 :) 1/4은 끝에 정확히 I를 표시하여 표시됩니다. I운영자는 일반적으로 쓸모없는, 내가 다른 수단을 추가하지만, 이봐,이 같은 작품!

위의 코드는 유효하지 않습니다. 바보는 74 문자에 단일 분할 연산자 인 슬래시 ( /)가 포함되어 있지 않다는 것을 알지 못했습니다 . 그래도 다른 것을 생각해 냈습니다.

True

설명:

T    Set object to "true" (bool value)
rue  None of these are valid tokens, so they don't get interpreted.

TrueC #이 Boolean.ToString()소문자가 아닌 대문자를 처리하는 방식으로 인해 출력 됩니다. 이것이 적절한 quine인지 확실하지 않지만, 나는 여전히 유효하고 정말로 적절하며 직관적 인 머리를 위해 머리를 부수고 있습니다.

I / O 및 수학 문제를 해결할 수도 있지만 74 자에 포함되지 않은 특정 토큰 (문자)이 누락되었습니다.


8

Brainfuck, 74 바이트

H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

방금해야 했어요

설명:

유효한 Brainfuck 문자가 아닌 모든 문자는 주석으로 처리됩니다. 실제로 실행되는 유일한 코드는 다음과 같습니다.

.+..

0이나 1도 ASCII로 인쇄 가능한 문자가 아니기 때문에 인쇄 가능한 출력이 생성되지 않습니다. 그러나 오류가 발생하지 않으므로 첫 번째 시도를 성공적으로 완료합니다.


3
실제로 출력을 생성합니다. 그런 캐릭터를 만들어냅니다. "인쇄 가능"하지 않을 수도 있지만 (읽기 : 표시) 그럼에도 불구하고 여전히 표준 출력으로 보내집니다.
mbomb007

7

매스 매 티카, 62 점

누군가 Mathematica에서 2-6 작업에 도전 할 수 있다면 놀랍습니다. 다음은 제가 챌린지 1에서 최선을 다한 것입니다.

A:=1.`!#&@(4`+4.`*9.`^$$H~I~L~O~Q~Q~Q~T~T||Z||e@@efmpxy%)!!!!

A상수 값 으로 꽤 바보 같은 함수 를 정의합니다 . 사용하지 않은 12 개의 문자는 다음과 같습니다.

)))\\`````{~

6

옥타브, 74 점

1. 달리다

x =@(AHILOQQQTTZeefmpy)+.1||!!!!!~~~~~~~~~4.^.4||9%#$$)))*@@\`````````{\&:

이 문자들 중 50 개는 기능의 일부이고 나머지 24 개는 그렇지 않습니다.

그것이하는 일 :

x =@(AHILOQQQTTZeefmpy)x변수 AHILOQQQTTZeefmpy를 입력으로 사용할 수 있는 함수 를 만듭니다 .

나머지를 이해하려면 :

a||b및 에서 함수 all()를 호출합니다 . 둘 중 하나 또는 모두가 true 를 반환 하면 연산자는 true를 반환합니다.ab||

!a그리고 ~a여기에 같은 일을 의미, 그들은 둘 다 not(a).

a.^b 요소 별 힘 (a(1)^b(1), a(2)^b(2) ...)

계속 설명

내가 따라갈 때마다 각 단계를 단축하겠습니다.

4.^.4||9  % This is 4 raised to the power of .4||9
          % .4||9 is true, since both .4 and 9 are true
          % true is evaluated to 1 when used in an expression
...       % 4 raised to the power of 1 is simply 4.
4         % The above expression simplified

과:

!!!!!~~~~~~~~~4  % ! and ~ are the not() operator, so this is equivalent to:
not(not(not(not(not(not(not(not(not(not(not(not(not(not(4))))))))))))))

의 짝수가 not많으므로 not(not(4))이는 true또는 1입니다.

+.1||1      % This is equivalent to all(+.1) | all(1), which returns true

나머지는 주석 처리됩니다.


6

*> <> , 총점 = 74

1. 달리고, 점수 74

f:4%*e+e14=p!Q H@~^)$.`~A|Q)~`\ZI~O.~@``#|9@)T\T`(!``|`~!y!`)Q~$x.|m~~&!L{

여기 사용해보십시오!

;캐릭터 없이는 매우 힘들었습니다 . 나는 실제로 그것이 잠시 동안 불가능할 것이라고 생각했다 %.

이것은 유효한> <> 프로그램이기도합니다.

설명 (관련이없는 부분은 생략)

f:4%*e+e14=p!Q 

f:               copy 15
  4%             pop 15, push 15%4 (3)
    *            pop 15 and 3, push 15*3 (45)
     e+          pop 45, push 45+14 (59, ascii ";")
       e         push 14
        14=      push 0
           p     replace coord (14, 0) with ";"
            !Q   skip Q (this is just filler)
              ;  end execution

직면 한 도전

나는 다른 도전을 시도 할 수 있습니다 ... 그들은 매우 힘들고 이상한 방식으로 규칙을 구부릴 수 있지만 |거울과 !트램폴린을 자유롭게 사용하면 적어도 하나 이상의 도전이 가능해야합니다.

*> <> ( on), 심지어 함수 호출 ( C), 함수 리턴 ( R) 또는 프로그램 종료 기 ( ;)가 있는 출력이 허용되지 않기 때문에 이러한 문제는 특히 어렵습니다 . i입력을 위해 누락되었지만 여전히 스택에 입력을 더할 수 있습니다. 또 다른 장점은 단일 p명령어를 얻는 것이므로 코드 상자의 명령어를 바꿀 수 있습니다. 이 방법은 여러 번 사용할 수 있지만 (실제로는 알지 못했지만) 두 개 이상의 명령어를 생성 할 수 있기 때문에 다른 프로그램을 더 가능성있게 보이기 시작합니다.


5

하스켈, 63 점

1. 다음을 실행하십시오.

(!!!!!#$$%&*+...:@@@\\^||||~~~~~~~~~)fmpxyAHILOQQQTTZ e=14`e`49

사용되지 않습니다 )))```````{. Haskell의 주석은 --또는 {- ... -}이므로 모든 주석 처리가 쉬운 버전은 없습니다.

이 코드는 !!!!!#$$%&*+...:@@@\^||||~~~~~~~~~두 개의 인수를 취하는 infix 연산자 를 정의합니다 .

  1. fmpxyAHILOQQQTTZ 이는 무시되므로 임의 유형일 수 있습니다.
  2. e두 개의 숫자를받는 함수 여야합니다.

함수 본문 e에서 `-infix 표기법을 사용하여 14와 49에 적용 됩니다.

사용 예 :

Prelude> () !!!!!#$$%&*+...:@@@\\^||||~~~~~~~~~ (*)
686

이 연산자는 ()빈 튜플에 적용되고 (*)곱셈 연산자 14*49 = 686는 계산됩니다.

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

다른 도전들

변수 이름은 대문자로 시작할 수 없기 때문에 두 번 나타날 수있는 변수 이름이 없기 때문에 다른 도전이 가능할 eeQT입니다. 물론 하나만 갖는 =것도 도움이되지 않습니다.


5

Pyth, 131 지금 (2 개의 챌린지 완료)

1. 달리기, 74

# `````````!!!)!)!)*$AOeIefLmpxQ|Q|y|Q|~~~~~~~~~()${+%&\=@@@^\:.1.4.49TTZH

이 프로그램은 입력을받지 않고 출력을 생성하지 않습니다.

이 프로그램은 $$임의 코드 실행을 허용하는 온라인을 사용하므로 온라인에서 금지되므로이 프로그램은 온라인에서 오프라인으로 실행됩니다. 컴파일 결과는 다음과 같습니다. 실제로 실행되는 내용을 확인할 수 있습니다.

while True:
 try:
  (repr(repr(repr(repr(repr(repr(repr(repr(repr(Pnot(Pnot(Pnot()))))))))))))
  imp_print(Pnot())
  imp_print(Pnot())
  imp_print(times(AOeIefLmpxQ|Q|y|Q|~~~~~~~~~(),uniquify(plus(mod(("=" and lookup(lookup(lookup(Ppow(":",.1),.4),.49),T)),T),Z))))
  imp_print(H)
 except Exception:
  break

Pyth에서 오류가 발생하지 않는 임의의 문자로 프로그램을 작성하는 것은 상당히 까다 롭습니다. 사용자 입력 없이도 프로그램을 실행해야하는 추가 과제를 해결했습니다.

첫 번째 단계는 #모든 오류를 먹는 데 사용 하는 것입니다. 다음으로 ~, I및로 인해 발생하는 오류를 피해야합니다 L. 이것은 $$출력 컴파일 안에 포함 시켜서 Pyth가 아닌 Python의 컴파일 규칙에 적용 함으로써 달성됩니다 . 마지막으로, 사용자 입력을 피하기 위해 다양한 arity 0 토큰 (변수 및 유사)이 끝에 배치되고 Qs가 $$블록 내부로 이동합니다 .

2. IO

가능하다면 이것은 매우 어려울 것입니다. 을 제외한 임의의 문자열 또는 문자를 생성하는 Pyth 함수는 없으며 .f임의의 문자를 생성하는 작업이 실제로 좋지 않습니다.

3. 분기 성 : 74-17 = 57

|&x%Q*TTye|LZ9Q+1

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

동등한 Pyth 프로그램은 다음과 같습니다.

?n%Q100 16Q+1

이 코드는 입력 모드 100을 가져 와서 16과 비교 한 다음 삼항을 사용하여 입력과 입력에 1을 더한 값을 선택합니다. 문자 제한으로 인해 몇 가지 대체 작업을 수행했습니다.

  • 대신 ?삼항, 내가 사용 |&, or다음 and입력이 0 인 경우는 나누기 것을 제외하고 동일한 기능을 가지고있는,하지만 우리는 양의 정수 입력을 보장하고 있기 때문에, 괜찮아. (이는 추가 문자없이 수정되었을 수 있지만이 방법은 더 간단합니다.)

  • 두 숫자를 직접 비교하는 대신 XOR을 x로 사용합니다. 원하는대로 같을 경우에만 0입니다.

  • 대신 작성하는 100직접, 나는 그것을 함께 생성 *TT이후 T에 초기화됩니다 10.

  • 16직접 쓰지 않고을 사용하여 생성합니다 ye|LZ9. |LZ본질적으로 범위 함수로 기능하므로을 |LZ9제공합니다 [0, 1, 2, 3, 4, 5, 6, 7, 8]. e목록의 마지막 요소를 가져 와서 제공 8합니다. 원하는대로 y제공 16합니다. 추가 +또는 추가 *로 캐릭터를 저장할 수는 있지만 다른 곳에서 더 유용합니다.

올 더!


3

루비-점수 : 74

1. 달리다

#H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

도전에서 벗어났다.


1
파이썬 같은
다니엘

3

자바 스크립트 (ES6), 점수 = 74

1. 실행, 74 바이트

Z=` !!!!!#$$%())))...1449:@@@\AHILOQQQTT^\`eefmpxy{||||~~~~~~~~~`*``+``&``

6. 밀교 (무효)

기록을 위해, 나의 제안 된 quine은 다음과 같습니다.

1.4e+49

아래 의견에서 논의했듯이 유효하지 않은 것으로 나타났습니다.


그 quine은 유효합니다.
wizzwizz4

3
quine이 유효하지 않습니다. 관련 규칙은 챌린지에 연결되어 있습니다. 특히 단일 리터럴을 기반으로하는 quine은 소스의 일부를 다른 부분 . cc @ wizzwizz4
마틴 엔더

@MartinEnder 내 브라우저에서 해당 프로그램은 소스 코드를 그대로 출력합니다. 그것은 스스로 평가하는 진술입니다. 당신이 무슨 말을하는지 잘 모르겠습니다. 소스의 다른 부분 이 없습니다 .
wizzwizz4

1
@ wizzwizz4이 커뮤니티는 "프로그램 자체 소스를 인쇄하는 것"보다 quine에 대한 요구 사항이 더 많으며, 이는 quine의 정신에 속하지 않는 다양한 종류의 부정 행위 솔루션을 허용하기 때문입니다. 링크를 참조하십시오.
Martin Ender 2012 년

1
@ wizzwizz4는 최상위 투표 답변에서 "프로그램의 다른 부분을 인코딩하는 프로그램의 섹션을 식별 할 수 있어야합니다. ("다른 부분 "은 두 부분이 다른 위치에 있음을 의미합니다.)" 큰 이익을 얻으려면 도전과 링크 된 답변이 연결된 메타 게시물보다 몇 년이 더 깁니다.
Martin Ender

3

레티 나, 74 점

1. 달리고, 점수 74

)))` !!!!!#$$%&()*.+..1449:=@@@AHILOQQQTTZ\\^````````eefmpxy{||||~~~~~~~~~

정규 표현식에서 균형을 맞추기 위해 여분의 parens를 구성으로 옮겼습니다. 또한 그 `바로 다음 으로 이동하여로 변경 +.했습니다 .+.

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

개행이 없기 때문에 다른 것들은 불가능할 것입니다. -음역 또는 d숫자 문자 클래스 도 없습니다 .


3

핍, 점수 74 + (74-19) = 129

단일 또는 이중으로 볼 수있는 따옴표가있는 너무 많은 백틱!

과제 1, 74 점

`` `\``!!!!!`#$$%&())))*+...1449:=@@@ILOQQQTTZ\^efmpx{|||~~~~~~~~~`|`yeAH`

기본적으로 백틱에 일련의 패턴 (정규식) 리터럴이 있으며 마지막 문자가 인쇄됩니다. 홀수 개의 백틱이 있으므로 그 중 하나를 백 슬래시 이스케이프 처리해야합니다 ( `\``). 경고가 생성되지 않았 음을 나타 내기 위해 -w플래그를 추가하여 온라인으로 시도하십시오 .

과제 3, 점수 55 (길이 19)

e+!!e%(1.#x.!9)=4*4

다소 이상한 입력 방법 인 다섯 번째 명령 줄 인수를 사용하면 가능합니다. 온라인으로 사용해보십시오!

                     e is 5th cmdline arg; x is empty string
       1.#x.!9       Concatenate 1, 0 (length of x), and 0 (not 9)
    e%(       )      e mod 100...
               =4*4  ... equals 16?
  !!                 Logically negate twice
e+                   Add to e (+1 if number mod 100 is 16, +0 otherwise)
                     Expression is autoprinted

다른 작업

위의 작업 3과 동일한 방법으로 작업 2에 대한 입력을 얻을 수 있습니다. 문제는 ASCII 코드로 변환 한 후 다시 문자로 변환하는 것입니다. 전자는로 수행 할 수 A있지만 후자 CPA변수를 사용 하거나 인덱싱해야 합니다. 코드를 작성하고 평가할 수 없습니다.V . 나는 그 일이 가능하다고 생각하지 않습니다.

작업 4 는 제한된 문자 집합이 없어도 문제가됩니다. 짐작할 때, 목록은 ( []구분자 또는 RL(반복 목록) 을 사용하지 않고 한 번만 사용할 수있는 AL(첨부 목록) 또는 가능성이있는 CG(좌표) 또는 MC(지도 좌표)) 목록이 필요합니다. .

작업 5 는 가능성의 가장자리에 있습니다. F또는 a 및 Map를 사용할 수 없으므로 루프가 어려울 수 있으며 범위를로 구성 할 수 없습니다 ,. T병에 걸렸을 수도 있습니다 . 증가는 x:x+1다양 할 수 있습니다 (분명히 다른 변수가 아닌 x). 분할 검사는 사용할 수 있습니다 %. 아직도, 나는 필요한 모든 것을하기에 충분한 문자들, 특히 반복되는 글자들이 있다고 생각하지 않습니다.

작업 6 은 완전히 불가능 해 보입니다. 모든 알려진 Pip quine은 그 "안에 있습니다. 그들은 또한 R(대체), RP(repr) 또는 V(eval)을 사용하는데, 어느 것도 사용할 수 없습니다.


2

실제로, 점수 (74 + 0 + 0 + 0 + 0 + 0 ) = 74

그렇습니다. 실제로 모든 오류를 해제하고 모든 오류가 NOP가되므로 캡슐 문자열은 실행과 마찬가지로 실제로 작동합니다.

H@~*^)$.~+1A|Q)p~\Z!IQ~e:O.~@#|9@)Tf\eT`=(!|~!y!) Q~$x.4|m4~~&!L{%( 온라인으로 사용해보십시오! )

그래도 문제가 발생하지만 소스는 한 번 : 3입니다.

그러나 다른 과제에 대해서도 노력하겠습니다.


1
quine 프로그램은 ops를 noops로 만들 수 있다면 (간단히) 매우 간단합니다.
wizzwizz4

1
quine 프로그램은 간단하지 않습니다. Qquining 내장이므로 전혀 사용할 수 없으며 큰 따옴표가 없으므로 문자열 형식을 지정할 수 없습니다. 나는 어제 잠시 동안 일했으며 다른 프로그램은 74 문자로만 가능하지는 않습니다.
Mego

그리고 기울임이있을 것 같지 않습니다 F ... :(
user48538


2

PHP : 74 + 74 = 148

H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

PHP 인터프리터는 소스 문자의 모든 순열이 <?부족 하기 때문에 소스 코드를 덤프합니다 <. 내장 quine 명령을 사용하는 것보다 나쁘지는 않습니다.


9
이는 quines에 대한 사양을 충족하지 않습니다 ( 여기 참조) . 자체적으로 인코딩되지는 않습니다 (즉, 실제로 인쇄되지는 않습니다. 단지 컴파일러 때문에 출력되는 것입니다)
Rɪᴋᴇʀ

@Easterly 통역사는 모든 문자를 output this char충족 할 때까지 모든 문자를 처리 합니다 <. 나는 그것이 페이로드 가능 또는 sth라고 말하는 것이 아닙니다. 단지 char 언어가있는 언어와 다르지 않습니다 output the source. 이것이 오류없이 입력을 받아들이는 언어보다 파트 1에 대한 올바른 답변이 아닌 경우에도 올바른 답변이 아닙니다. 나는 이것이 대부분의 대답보다 더 모욕적이라고 생각하지 않습니다.
Christoph

4
@Christoph 1 부에서는 유효하지만, 챌린지에 연결된 규칙에 따라 유효한 퀴네는 아닙니다. 이 커뮤니티는 코드의 다른 부분 을 인코딩하는 소스 섹션을 식별 할 수있는 경우 퀴인이 유효한 것으로 간주합니다 . 프로그램에서 모든 문자는 자기 자신 만 인코딩합니다.
Martin Ender

@MartinEnder : #! / bin / cat은 이전에 퀴네로 간주되었습니다.
Joshua

@Joshua는 사실이지만 요즘은 고양이가 프로그래밍 언어로 간주되지도 않습니다.
Martin Ender 2012 년

2

매스 매 티카, 68 점

`A : = .1 % *. 44y # +. 9 ^`H @`$ I @`L @ (`$ O ~`Q ~`Q ~`Q ~`T ~ T ~ Z ~ e ~ e | f | m | p | x) !!!!! & \

후행 줄 바꿈에 주목하십시오. Mathematica를 사용하면 다른 문제를 해결할 수 있다고 생각하지 않습니다.


2

미궁, 74 점

AH)
IL)
OQ:
`=!)~`{+4.@ !!!$$%&(*..149@@TTZ\\^```eefmpxy||||~~~~~~~~
`Q#
`Q)
``!

나는이 문자들이 다양한 Labyrinth 프로그램을 생성한다고 확신하지만 적어도 조금 더 재미있게 만들기 위해 2016숫자 단위로 인쇄합니다 . (요약 : 2스택에서 2를 누르고, 하나를 팝 / 인쇄하고, 다른 것을 보조 스택으로 이동하고, 0을 인쇄 1하고, 스택에서 2를 푸시 합니다., 팝 / 인쇄 1, 증분, 비트 단위로, 부정하지 않습니다 이 시점에서 1a 3), 2aux 스택에서 합계 , 5 * 10 + 4 = 54, ascii 값으로 인쇄, 종료)

@프로그램을 종료 할 때 대부분의 긴 줄은 무시 됩니다.

Labyrinth의 입력 명령 중 어느 것도 ( ,또는 ?) 사용할 수 없으므로 도전 2, 3 및 4는 불가능 하며 5 또는 6에 대해서는 아무것도 제시하지 않았습니다.


2

스마일 베이직, 48 포인트

도전 1 :

@LOQQQTTZ A$=H$+@efmy+@9414*!exp(!!.||!!.#||I%):

설명:

@LOQQTTZ 'label
A$= 'set value of A$ (string)
H$ 'string
+@efmy 'adds label, interpreted as string literal
+@9414 'adds label, interpreted as string literal
*!exp( 'multiplies by logical not e^x (= 0)
!!. 'not not 0.0 (= 0)
||!!.# 'or not not 0.0 converted to a float (= 0)
||I% 'or I% (integer variable)
: 'equivalent to a line break, does nothing here

다른 사람 :

사용 가능한 입력 / 출력 명령이 없으므로 나머지는 불가능합니다.

그럼에도 불구하고 주석을 사용하지 않고 실제 언어에는 나쁘지 않습니다.


정말 아름다운 +1 나는 어떻게 이것들을 할 수 있을지 궁금해했고 결코 그것을 얻을 수 없었습니다. 이것도 무엇입니까?
달팽이 _

1

MATL , 총점 74

1. 달리고, 점수 74

`4.e4 1.$!!!!!T+Zyf9.)AH^ILx@Q@Q@Qm||||~~~~~~~~~:=Tp*O%#$&()))\\````````e{

모든 것은 %실제 코드입니다. %주석 기호이므로 오른쪽의 문자는 무시됩니다.

1오류없이 프로그램이 출력 됩니다.

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


1

강타, 74 점

1 : 달리다. 우리는 모든 74를 실행할 수 있습니다

#H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

6 : 밀교 :

빈 프로그램은 bash에서 퀴네입니다.

공백 문자가 없으면 목록의 다른 어떤 것도 수행 할 수 없습니다. Ergo, 나는 승리 한 bash 엔트리를 가지고있다.


룰 노트 : 만약 누군가 비어있는 것이 유효한 퀴네가 아니며이기는 것에 도전한다면, 나는 여전히 윙이없는 승자가 있습니다. 반면에 나는 그것을 배치하지 않고 다른 사람이하고 그들이 나를 이길 도전을 이길 경우. 그래서 거기에 있습니다.
Joshua

1

펄 6 , 총점 74

1. 달리고, 점수 74

my @TOTAL=$!||(e*4...9^e)Z+1~4||!!Q`{fp)))\#\&`~Q!```HI````!~Q:x~~~$~@~@~%

의견이 없습니다.
(그냥 넣어# 모든 의견을 작성하기 위해 앞면을 도 더 재미 있습니다.)

작업

허용되는 문자 만 사용하는 Perl 6 언어의 서브 세트입니다.

상수 : e

유형 이름 : IO

함수 : exp

행동 양식:
    IO 유형 : .e .f .x
    (... 아마도 더)

연산자 : | 접두사 : | 접두사:
    ----------- + ----------------------- + ---------
    숫자 : | + * + ^ + | + & % | + + ^
    문자열 : | ~ x ~ ^ ~ | ~ & | ~
    부울 : | || ~~ | !
    접점 : | | & ^ |  
    기타 : | = : = Z .. ... |  

통사론:
    숫자 리터럴 : 1 4 9
    문자열 리터럴 : Q``Q! ! 기타
    쉘 명령 : Q : x``Q : x! ! 기타
    어떤 별 : *
    변수 : my \ $ @ &
    그룹화 : ()
    의견 : # #`()
    우주 : \

2-6 번 문제를 방지하는 즉각적인 장애물은 I / O를 수행 할 방법이없는 것입니다.

  • 우리라는 파일이있다 가정하면 f, 우리는 사용할 수 Q`f`.IO.e가있는 경우는 그것을 확인하거나 Q`f`.IO.x그것을 실행 파일인지 확인합니다. 그러나 우리는 그것을 읽거나 쓸 수 없습니다.

  • Q:x` `쉘 명령을 실행하는 데 사용할 수 있습니다 (하나의 문자를 찾은 것으로 가정). 그러나 우리는 아무것도 보간 할 수 없으므로 쓰기가 아닌 읽기에만 좋습니다.

  • 닫는 괄호가 없으므로 {1 + $_}마지막 명령문의 값을 자동으로 반환 하는 블록 람다 (예 :)를 만들 수 없습니다 .

  • 우리는 식 람다 (예를 만들기 위해 별표 (*)를 사용 1+*), 그러나 우리는, 하나 개의 인수를 취할 수 있습니다 번만이 인수를 참조 더욱 제한 우리가 사용할 수있는 구문 / 사업자에 있습니다.


정말 잘 했어요! :)
Dada

0

루아, 31 점

1. 달리기 (31/74 포인트)

AHILOQQQTTZeefmpxy=1.%4+(4.*9.)

3
당신은 공간을 놓쳤다. variable =stuff1 바이트 더 깁니다.
devRicher

0

젤리 , 74 점

1. 실행 , (74)

 ||||!!!!!$$~~~~~~~~^@=@~%449:`e@`e`QAHILOQQTTZ{\\f`m`p`x`y`&`*.#1+.()))).

다른 사람을 어떻게 해야할지 모르겠습니다.


0

/// , 점수 : 146

1. 득점 : 74

!!!!!#$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````eefmpxy{||||~~~~~~~~~

6. Quine, 점수 : 72

!!!!!#$$%&())))*+...1449:=@@@AHILOQQQTTZ^`````````eefmpxy{||||~~~~~~~~~

코드에 슬래시가 없으면 그 자체 만 인쇄됩니다.

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