그 언어를 아십니까?


34

태스크:

귀하의 과제는 이전의 제출물과 그 자체가 입력으로 주어지면 다음과 같은 형식으로 작성된 언어를 출력하는 것입니다.

첫 번째 프로그램이 Ruby에 있다고 가정하십시오. 1Ruby 1가이 과제에 사용되는 제 1 언어 이므로 출력해야합니다 . 예제 프로그램은 다음과 같습니다.

a=gets
puts 1

입력으로 주어지면을 반환합니다 1.

다음 프로그램은 Python에있을 수 있습니다. 2파이썬은 2도전에 사용되는 제 2의 언어 이므로 출력해야합니다 . 예제 프로그램은 다음과 같습니다.

print(1 if input()[0]=="a"else 2)

첫 번째 제출이 주어지면 출력 1하고 자체적으로 출력 2합니다.

이전 답변의 언어로 답변을 제출할 수는 없지만 언어를 반복 할 수는 있습니다.

예를 들어, 세 번째 프로그램이 Ruby에있는 경우 1첫 번째 프로그램과 그 자체 (루비가 1사용되는 언어이므로)가 출력되고 두 번째 프로그램이 출력되어야합니다 2.


규칙 :

  • n현재 챌린지에 답변 이있는 경우 최소한 floor(n / 3)다른 언어 가 있어야합니다 . 이 규칙을 위반하는 제출은 실격 처리됩니다.
  • 두 "이웃 답변"(예 : answer n및 answer n+1)은 동일한 언어를 사용할 수 없습니다.
  • 언어의 다른 버전은 다른 언어로 계산되지 않습니다 ( Python 2 == Python 3).
  • 답변은 입력으로 전체 제출을 완료해야합니다.
  • 첫 번째 제출물은 입력해야합니다.
  • 한 번에 여러 답변을 제출할 수 없습니다.
  • "반복 답변"(이전 제출과 동일한 코드를 가진 답변)은 허용되지 않습니다.
  • 답변은 해당 답변의 할당 된 바이트 수를 넘어갈 수 없습니다. 자세한 내용은 "할당 된 바이트 수"를 참조하십시오.

할당 된 바이트 수 :

각 답변 번호 n에 대해 해당 답변에 할당 된 바이트 수는 45 + 5n입니다.


답변 형식 :

다음과 같이 답을 형식화하십시오.

# {answer no.}, {language}
{program}
This prints:
- `1` in answer(s) {all answers using 1st language, with links}
- `2` in answer(s) {all answers using 2nd language, with links}
...
{optional explanation}

답변 목록을 보려면 다음을 수행하십시오.

- `1` in answers [1]({link to answer}), [3]({link to answer})...

채점 :

7 일 후에 유효한 제출없이 생존 한 첫 번째 답변은 승자로 선언됩니다.


1
한 명의 사용자가 연속으로 두 번 연속 제출할 수 있습니까?
— Kritixi Lithos

그래서, 그대로, 나는 아무런 변화없이 그대로 대답 할 수 있습니다. 응답 n ° 6은 대답 n ° 8이며, 그 후에 Martin은 대답하지 않을 때까지 자신의 숫자 n ° 7을 반복 할 수 있습니다 (잘못하지 않는 한). 15 임계 값에 도달하기 전에 (예 : floor(n / 3)언어). 나는 이것이 의도 된 행동이 아니라고 추측합니다.
— plannapus

@ plannapus 나는 이것도 알아 차렸다. 물론, 당신의 목표는 마지막 답변을 얻는 것이므로, 사소한 후속 조치를 취해야하기 때문에 사물을 복잡하게 만들고 싶을 수도 있습니다 (내 답변을 게시하기 전에 생각하지 않았 음).
— 마틴 엔더

3
할당 된 바이트 수는 기하 급수적으로 증가하며 코드가 너무 길어지기 때문에 언어가 부족할 때까지 이러한 문제가 해결되지 않을 수 있습니다.
— Wolfram

2
IMO의 합리적인 고정 제한 (예 : 384 또는 256 바이트)은 더 잘 작동했으며 결국 경쟁이 치열해질 것입니다.
— zeppelin

답변:


4

26. > <> (언어 12), 164 바이트

> <>의 첫 프로그램! 156 자이지만 UTF-8에서 164 바이트입니다.

^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
{:}&1+&=?v
      .&0/
v+!?='>'i41i
v+?='y'i47
v+?=' 'i12
v+?=' 'i24
v4
v6
v7
v8
v9
va
  v?(0:i
v1
n;\b1laa*)?+
/"^mwfPes{'tc"i2&01.;

인쇄합니다 :

  • 1답변 1 , 5 , 7 , 9 및 14 (Retina)와 함께.

  • 2답변 2 (Brain-Flak).

  • 3답변 3 (APL).

  • 4답변 4 , 12 및 15 (자바 스크립트)와 함께.

  • 5답변 6 과 8 (R).

  • 6답변 10 , 17 , 20 , 22 및 25 (배쉬).

  • 7답변 11 과 19 (Mathematica).

  • 8답변 13 (Python).

  • 9답변 16 (펄).

  • 10답변 18 , 21 및 23 (C / C ++).

  • 11대답 24 (Zsh)로.

  • 12 이 답변으로 (> <>).

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

설명:

첫 번째 줄은 단순히 5 번입니다. 명령 포인터를 결론으로 ​​보냅니다. /물고기를 오른쪽으로 돌리면 캐릭터 ^mwfPes{'tc가 쌓입니다. 단일 문자 입력을 읽습니다 ( i). (이 문자 C를 박람회 라고 부릅니다 .) 2는 레지스터 ( 2&)에 입력됩니다. 그런 다음 두 번째 줄의 시작 부분 (줄 1) ( 01.)으로 이동합니다.

이 줄은 C스택의 각 문자와 비교 됩니다. 복사본은 C스택 맨 아래에 보관됩니다. 위에 {있는 스택을 회전시킵니다 C. :그것을 복제; }복사본을 맨 아래로 다시 회전합니다. &1+&일치하는 것을 찾을 때까지 레지스터 ( )를 증가시킵니다 . (따라서 C"c"이면 일치하는 항목이 발견되면 레지스터는 3을 유지하고, C"t"이면 레지스터는 4를 유지하는 식입니다.) 그런 다음 레지스터에서 줄 번호의 첫 문자로 이동합니다 ( 0&.) .

3-13 행 C은 각각 c, t, ', {등일 때 수행 할 작업을 처리 합니다. 점프 할 때 명령 포인터가 뒤로 이동합니다. 주어진 줄의 첫 번째 문자에 도달하지만 점프 후 실행하기 전에 틱을 진행하여 줄 끝에서 뒤로 시작합니다. 각 줄은 스택에 적절한 언어 번호를 입력 한 다음 물고기를 n명령어 로 보내어 인쇄합니다.

^이 답변의 첫 번째 줄에 별이 없기 때문에 가장 복잡한 경우입니다. 13 행은 EOF까지 입력을 읽습니다. 그런 다음 스택의 길이 ( l)와 100 ( aa*) 을 비교하는 15 행으로 이동합니다 . 그것 (긴 경우 )?), 우리는 추가 + b와 112를 얻기 위해,이 언어; 그렇지 않으면 1은 스택 맨 위에 남아 있습니다.



12

2. Brain-Flak , 22 바이트

{<>(())(<>)}{}(<>{}())

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

스택의 상단을 확인하고 0이 아닌 경우 스택을 반대쪽 스택에 놓습니다. 그런 다음 증분하여 반대쪽 스택을 반환합니다. 이것은 빈 프로그램의 경우 1을 반환하고 다른 것은 2를 반환합니다.

Brain-Flak의 스택은 기본적으로 0으로 설정되므로 비어있는 프로그램은 스택 맨 위에 0이 있고 다른 프로그램 (널 문자로 끝나는 프로그램 제외)은 값이 큽니다. 즉, 입력 스택에서 매우 간단한 if 프로그램을 실행할 수 있습니다.

{      (<>)}{}              #If not zero
 <>(())                     #Push one to the other stack
              (<>{}())      #Switch to other stack and increment by one

이 답변을 편집 할 수 있습니까? 나는 실수로 그것을 아래로 투표했다 :)
— Conor O'Brien

9

3. APL, 7 바이트

' {'⍳⊃⍞

설명:

      ⍞  read from the keyboard
     ⊃   first item of list, or space if empty
' {'⍳    index into the string ' {', giving N+1 (=3) if not found

8

10. 배쉬 (+ coreutils) [language 6], 44, 74 바이트

고정 버전 (언어 ID를 반환 함)

expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G

참고 : 이것은 입력 프로그램 텍스트 다음에 줄 바꿈 문자가 필요합니다.


7

9. Retina (언어 1), 20 바이트

$|}\{|[:'][^]']|,\b1

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

plannapus와 마찬가지로, 나는 물건을 조금 바꿔서 다시 작성하기로 결정했으며 코드가 상당히 단축되었습니다 (plannapus의 최신 계정을 설명하기 위해 마지막 답변을 수정하면 약 32 바이트가 끝났습니다).

설명

다른 답변과 마찬가지로 이것은 다양한 정규 표현식 일치 횟수를 계산하지만 훨씬 효율적으로 진행됩니다.

  • $문자열의 끝과 일치합니다. 문자열의 끝까지 일치하는 항목이 있더라도 항상 작동하므로 1모든 입력 에 대한 기준을 제공합니다.
  • }\{두 번째 프로그램 (Brain-Flak)에서 단일 일치 항목을 찾아 카운트를 최대로 올립니다 2. 백 슬래시는 이스케이프 처리에 필요하지 않지만 정규식 의이 부분이 일치하지 않도록합니다.
  • [:'][^]']실제로 꽤 환상적입니다. 'APL 프로그램에서 2 개 (언어 3)와 :JavaScript 프로그램에서 3 개 (언어 4) 를 세는 것이 유일한 목적 이지만이 부분이 일치하지 않도록해야합니다. 그래서 우리는 또한 다음 문자가 둘 다 없는지 확인 '않으며, ](사람들은 우리가 그들 뒤에 표시하지 않기 때문에 않는 일치하기를 원하지만 그들은 여기에이 프로그램에 나타나지 않습니다).
  • '이전 부분 의 from은 이미 R 프로그램에서 하나의 일치를 유발하므로 세 개가 더 필요합니다. 하위 문자열 ,1은 둘 다 세 번 나타나며 다른 프로그램에는 나타나지 않습니다. 우리는 단어 ,\b1자체를 다시 일치시키지 않도록 사이에 단어 학적 경계를 추가하여 일치시킵니다.

흠, 이것은 1단지 기본 출력 이기 때문에 R이 전혀 답을하지 못한다는 것을 깨달았습니다 . 다음 답변으로 그것에 대해 뭔가를해야합니다.
— 마틴 엔더

7

18. C (언어 10), 121 바이트

이것이 C89 또는 C90 표준입니다. Try It Online에서 clang 또는 gcc와 함께 작동합니다.

main(n){char*v=" ^{ s ePfwm",b[999],*c;gets(b);c=strchr(v,*b);n=strlen(b);printf("%d",n?c?c-v:n>99?4:n>60?5:n>15?1:3:1);}

인쇄합니다 :

  • 1답변 1 , 5 , 7 , 9 및 14 (Retina)와 함께.

  • 2답변 2 (Brain-Flak).

  • 3답변 3 (APL).

  • 4답변 4 , 12 및 15 (자바 스크립트)와 함께.

  • 5답변 6 과 8 (R).

  • 6답변 10 과 17 (Bash).

  • 7답변 11 (Mathematica).

  • 8답변 13 (Python).

  • 9답변 16 (펄).

  • 10 이 답변 (C).

다음은 온라인 에서 사용해보십시오!

Ungolfed 동등 (646 바이트) :

#include <string.h>
#include <stdio.h>
int main(){
    char *v=" ^{ s ePfwm", b[999];
    gets(b); /* buffer overrun if more than 998 characters in the input.
                could be a problem if we get to 191 answers */
    char *c = strchr(v, b[0]); /* Find first character of input in v, or null */
    int n = strlen(b);
    if (!n) {
        printf("1");
    } else if (c) {
        printf("%d", c-v); /* Index of first character of input in v */
    } else if (n > 99) {
        printf("4");
    } else if (n > 60) {
        printf("5");
    } else if (n > 15) {
        printf("1");
    } else {
        printf("3");
    }
    return 0;
}

6

5. 레티 나 (언어 1), 23 바이트

^$|(?![⊂⍴])[⊂-⍴]|\B=|{}

온라인으로 사용해보십시오! (가능한 모든 입력을 테스트합니다.)

입력에서 다양한 항목의 일치 항목을 계산합니다.

  • ^$ 입력 문자열, 즉 첫 번째 답변을 한 번 일치시킵니다.
  • {} 두 번째 프로그램에는 두 개가 있고이 하나에는 하나가 있습니다.
  • (?![⊂⍴])[⊂-⍴]독점 코드 포인트 8834에서 9076까지의 문자와 일치하며, 이는 세 번째 프로그램에서 3 개의 일치 항목을 찾습니다. 이 프로그램에서 범위의 끝이 일치하지 않도록 네거티브 lookahead를 사용합니다.
  • \B=일치 =가 되지 않는 단어 문자로 시작합니다. 이것은 네 =번째 프로그램 중 네 개와 일치 하며이 프로그램의와 일치하지 않습니다 =.


4

4, JavaScript (ES6), 32 바이트

s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1

빈 입력에 대해서는 1을 출력하고, 입력이 a로 시작하면 2를 {, s그렇지 않으면 3 을 입력하면 3을 출력합니다.


당신은 교체 할 수 있습니다 s[0]=='{'에 의해s[0]>'z'

1
@Masterzagh 나는 또한 이것이 골프를 치는 방법에 대해 생각하고 있었지만, 아아, 이것은 코드 골프가 아닙니다 : /
— Kritixi Lithos

@KritixiLithos 글쎄, 그는 이미 골프를 쳤으므로 더 나아가고 싶다고 생각했습니다.

@Masterzagh 사람들은 a) 이후 답변, b) 현재 진행중인 답변을 무효화 할 수 있기 때문에 이와 같은 과제에서 올바른 답변을 편집하지 않아야합니다.
— Martin Ender

@MartinEnder, 당신 말이 맞아요. 따라서 편집하지 않습니다. 나는 그것이 삼항 연산자 때문에 골프처럼 보인다는 것을 알고 있지만, 의도적으로 그렇게 쓰지 않았습니다 ... 그럼에도 모든 피드백에 감사드립니다!
— Luke

4

11. 수학 [언어 7], 53 바이트

Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&

명명되지 않은 함수는 인수로 문자 목록을 가져와 양의 정수를 출력합니다. 문자열의 위치를 ​​사용하여 입력의 첫 번째 문자를 분기 "^{'sceP"하여 출력을 결정하기 만하면 됩니다. 초기의 비어있는 Retina 프로그램 과 가장 최근의 Retina 답변을 제외한 모든 이전 제출에 대한 올바른 답변을 제공합니다 . 이 두 가지 spit 오류가 있지만 /._@__->1평가되지 않은 함수를로 변환 하는 규칙에 의해 출력이 복구됩니다 1.


나는 첫 번째 캐릭터 전략
— Martin Ender

1
나는 가려고했지만, 나는 내 언어로도 정확하게 출력해야한다는 것을 기억했다. D
— Greg Martin

4

16. Perl (언어 9), 94 바이트

while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}

온라인으로 사용해보십시오! (모든 답변을 확인). "1234151516748149"출력

인쇄합니다 :

  • 1은 답변 1, 5, 7, 9 및 14 (Retina)입니다.
  • 답변 2 (Brain-Flak)가있는 2
  • 답변 3 (APL)이있는 3입니다.
  • 답변 4, 12 및 15 (자바 스크립트)가있는 4
  • 답변 6과 8 (R)을 가진 5입니다.
  • 6 답변 10 (Bash).
  • 7 답변 11 (수학).
  • 8 답변 13 (파이썬).
  • 이 답변을 가진 9 (Perl).

프로그램은 입력 길이를 확인하여 현재 언어 분포에 매핑합니다.


3

6. R (언어 5), 61 바이트

cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))

입력의 첫 문자가 무엇인지 확인하고 그에 따라 출력을 선택하십시오.

따라서 다음과 같이 인쇄됩니다.

  • 1답변 1 과 5 (Retina) 와 함께 .

  • 2답변 2 (Brain-Flak).

  • 3답변 3 (APL).

  • 4답변 4 (자바 스크립트).

  • 그리고 5이 대답과 함께.

용법:

> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))

1
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
{<>(())(<>)}{}(<>{}())
2
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
' {'⍳⊃⍞
3
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
4
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
1
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
5

REPL 외부에서이를 실행하려면 답변 8의 설명을 참조하십시오.
— plannapus

3

8. R (언어 5), 76 바이트

c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)

입력 첫 글자를 검사하고 (이 순서로)를 함유하는 벡터와 비교 빈 문자열, {, ', s및 c. 그런 다음 일치 색인을 출력합니다 (R 색인은 1을 기반으로 함). 일치하지 않으면 1을 출력합니다.

정답 n ° 6 과 같은 개념 이지만 정답 n ° 7 과 일치하지 않습니다.

인쇄합니다 :

  • 1답변 1 , 5 및 7 (Retina).

  • 2답변 2 (Brain-Flak).

  • 3답변 3 (APL).

  • 4답변 4 (자바 스크립트).

  • 및 5환불 6 이 답변 (R).

내가 실수하지 않으면이 대답의 바이트 수는 94 바이트입니다.


FYI R 온라인 인터프리터 (rfiddle, ideone 및 tryitonline)는 stdin 처리에 문제가있는 것으로 보이며 (적어도 readline () 사용) 제대로 작동하지 않습니다. 이 (및 이전 답변)을 시도하려면 설치된 버전의 R에서 로컬로 시도해야합니다.
— plannapus

^ 좋아요, REPL 외부 readline는로 교체해야합니다 readLines(file("stdin")). 이는 16 자 이상을 의미합니다. 따라서 6 번 답은 77 바이트 (79 개 중 허용)이고이 답은 92 바이트 (94 개 허용) 여야합니다. 이 변경으로 온라인 통역사에서도 작동합니다.
— plannapus

3

12. 자바 스크립트 (언어 4), 117 바이트

참고 :이 실수를 수정하기 위해 문자를 변경했습니다.

c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;

입력의 첫 글자를 확인하고, c 인 경우 입력 길이를 확인합니다.

출력 :

  • 답변 1, 5, 7, 9의 경우 1
  • 답변 2의 경우 2
  • 답변 3의 경우 3
  • 답변 4와이 답변에 대한 4
  • 답변 6, 8
  • 답변 10의 경우 6
  • 답변 11

3

13. 파이썬 (언어 8), 110 바이트

참고 : 이 답변은 OP의 권고에 따라 게시 6 시간 후에 변경되었습니다.

from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N

이것은 bash의 10 답변과 같은 아이디어이지만 Python 3에서는 (16 진수가 부족하기 전에 최대 3 개의 항목을 더 사용할 수 있습니다.)

인쇄합니다 :

  • 1답변 1 , 5 , 7 및 9 (Retina)와 함께.

  • 2답변 2 (Brain-Flak).

  • 3답변 3 (APL).

  • 4답변 4 와 12 (자바 스크립트).

  • 5답변 6 과 8 (R).

  • 6답변 10 (Bash).

  • 7답변 11 (Mathematica).

  • 8 이 답변 (Python).

온라인으로 사용해보십시오! 답변 : 답변 1 , 답변 2 , 답변 3 , 답변 4 , 답변 5 , 답변 6 , 답변 7 , 답변 8 , 답변 9 , 답변 10 , 답변 11 , 답변 12 또는 이 답변 .


현재 바이트 제한은 무엇입니까?
— Vi.

@Vi .: 글쎄요. 답 13은 149 였고 답 14는 163이었습니다. 그러나 OP는 바이트 카운트 규칙을 45 + 5n으로 변경하여 응답 13의 경우 110 바이트, 응답 14의 경우 115 바이트가되도록했습니다.
— Nick Matteo

아마도 110 바이트 솔루션을 설치해야합니다.
— clismique

@ Qwerp-Derp : 좋습니다. 바라건대 그 누구의 지속적인 작업을 중단하지 않습니다.
— Nick Matteo

바이트 제한이 Java 친화적 인 땅에 도달 할 때까지 약 60 개의 응답을 기다립니다.
— Vi.

3

24. Zsh (언어 11), 142 바이트

C의 이전 답변 # 18은 여전히 ​​모든 후속 항목 ( demo )에 대해 수정되지 않은 상태로 작동합니다 . 조금 섞어 봅시다.

typeset -A p
p=("[\$^]*|'\[*" 1 '{*' 2 "' *" 3 '?=>*' 4 'c?[wt]*' 5 'e*' 6 'P*' 7 'f*' 8 'w*' 9 'm*' 10 'ty*' 11)
echo ${p[(k)$1]:-1} #@<`w&X{

마지막 주석의 목적은 답변 21과 23의 길이와 일치하고 Ly256의 C ++ 답변에서 확인 된 문자를 사용하여 sha256 또는 sha384 해시의 단일 문자가 지금까지 모든 답에 고유하지 않도록하는 것입니다. ;-)

인쇄합니다 :

  • 1답변 1 , 5 , 7 , 9 및 14 (Retina)와 함께.

  • 2답변 2 (Brain-Flak).

  • 3답변 3 (APL).

  • 4답변 4 , 12 및 15 (자바 스크립트)와 함께.

  • 5답변 6 과 8 (R).

  • 6답변 10 , 17 , 20 및 22 (배쉬).

  • 7답변 11 과 19 (Mathematica).

  • 8답변 13 (Python).

  • 9답변 16 (펄).

  • 10답변 18 , 21 및 23 (C / C ++).

  • 11 이 답변 (Zsh)으로.

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


나는 이것이 여러 줄로 된 첫 번째 대답이라고 생각합니다 ... +1.
— clismique

2

14. Retina (언어 1), 39 바이트

'[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$

온라인으로 사용해보십시오! 모든 유효한 입력을 테스트합니다.


1
Martin에 와서 다른 언어로 게시하십시오 ... 또한 답변 서식을 지정할 수 있습니까?
— clismique

3
@ Qwerp-Derp 이것은 실제로 표준 정규식 골프에서 흥미로운 변형으로 바뀌고 있습니다. 일련의 입력을 갖고 일부를 일치시키고 다른 일부를 실패하는 대신 각 입력에 대해 특정 수의 일치를 가져와야합니다. 이 정규 표현식이 어느 시점에서 기하 급수적으로 폭발하는지 궁금합니다.
— Martin Ender 2012 년

실제로 39 바이트입니까? TIO는 37 바이트를보고합니다.
— Arnauld

1
@Arnauld TIO는 종종 1 바이트 인코딩을 사용하기 때문에 Retina의 문자 수만 세도록 하드 코딩됩니다. 이 답변에는 UTF-8이 필요합니다.
— Martin Ender

2

15. 자바 스크립트 (언어 4), 108 바이트

골프

t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1

2

17. Bash (+ coreutils + openssl) (언어 6), 103 바이트

골프

expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x

내 대답 # 10 과 동일한 기술을 사용 하지만 Hex 대신 Base64로 인코딩 된 사전을 사용 합니다.

테스트를 위해 다음 데이터 파일을 정리했습니다.

6 17 expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
9 16 while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}
4 15 t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
1 14 '[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$
8 13 from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N
4 12 c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;
7 11 Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&
6 10 expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G
1 09 $|}\{|[:'][^]']|,\b1
5 08 c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)
1 07 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5
5 06 cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
1 05 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
4 04 s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
3 03 ' {'⍳⊃⍞
2 02 {<>(())(<>)}{}(<>{}())
1 01

테스트

for i in `seq 17`
do
  echo -n `cat lchain|sed -n $i'{p;q}'|cut -c1`=\>
  cat lchain|sed -n $i'{p;q}'|cut -c6-|\
  expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
done

6=>6
9=>9
4=>4
1=>1
8=>8
4=>4
7=>7
6=>6
1=>1
5=>5
1=>1
5=>5
1=>1
4=>4
3=>3
2=>2
1=>1

2

19. Mathematica (언어 7), 96 바이트

Position[ToCharacterCode@StringSplit@";NRU$ Q B [1: =L J, 5% 3 # >",Mod[Length@#,59,33]][[1,1]]&

이름이없는 함수는 문자 목록을 입력으로 가져와 정수를 반환합니다.

  • 1답변 1 , 5 , 7 , 9 및 14 (Retina)와 함께.

  • 2답변 2 (Brain-Flak).

  • 3답변 3 (APL).

  • 4답변 4 , 12 및 15 (자바 스크립트)와 함께.

  • 5답변 6 과 8 (R).

  • 6답변 10 과 17 (Bash).

  • 7답변 11 과이 답변 (Mathematica)이 있습니다.

  • 8답변 13 (Python).

  • 9답변 16 (펄).

  • 10답변 18 (C).

지금까지 모든 대답의 길이는 고유하고 심지어 모듈로 59까지도 뚜렷합니다. 따라서 33, 34, ..., 91 범위의 정수 (mod 59)에 따라 어떤 정수를 감지 할 수 있습니다. 이것들은 모두 인쇄 가능한 ASCII 문자이며 문자열로 인코딩됩니다 ";NRU$ Q B [1: =L J, 5% 3 # >". using ToCharacterCode@StringSplit@은이 문자열을 해당 범위 Position[...,Mod[Length@#,59,33]][[1,1]]에있는 10 개의 정수 목록으로 바꾸고 10 개의 하위 목록 중 수정 된 입력 길이와 일치하는 항목을 찾습니다.


1

20. Bash (+ coreutils + openssl) (언어 6), 121 바이트

골프

expr substr 67A69418476151514321 $(expr index 7042PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1| dc -e16i?p #u

내 답변 # 17 과 동일한 방법 (원래 답변 # 10 기반 ).

현재 10 개의 고유 한 언어가 있으므로 16 진수 위치 인코딩으로 전환했습니다.

데이터

6 20 expr substr 67A69418476151514321 $(expr index 7042PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1| dc -e16i?p #u
7 19 Position[ToCharacterCode@StringSplit@";NRU$ Q B [1: =L J, 5% 3 # >",Mod[Length@#,59,33]][[1,1]]&
A 18 main(n){char*v=" ^{ s ePfwm",b[999],*c;gets(b);c=strchr(v,*b);n=strlen(b);printf("%d",n?c?c-v:n>99?4:n>60?5:n>15?1:3:1);}
6 17 expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
9 16 while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}
4 15 t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
1 14 '[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$
8 13 from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N
4 12 c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;
7 11 Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&
6 10 expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G
1 09 $|}\{|[:'][^]']|,\b1
5 08 c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)
1 07 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5
5 06 cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
1 05 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
4 04 s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
3 03 ' {'⍳⊃⍞
2 02 {<>(())(<>)}{}(<>{}())
1 01

테스트 (출력)

./test
6=>6
7=>7
A=>10
6=>6
9=>9
4=>4
1=>1
8=>8
4=>4
7=>7
6=>6
1=>1
5=>5
1=>1
5=>5
1=>1
4=>4
3=>3
2=>2

1

23. C (gcc) (언어 10), 142 바이트

main(c){int d[256]={0};while((c=getchar())!=EOF)d[c]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}

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

  • 1답변 1 , 5 , 7 , 9 및 14 (Retina)와 함께.

  • 2답변 2 (Brain-Flak).

  • 3답변 3 (APL).

  • 4답변 4 , 12 및 15 (자바 스크립트)와 함께.

  • 5답변 6 과 8 (R).

  • 6답변 10 , 17 , 20 및 22 (배쉬).

  • 7답변 11 과 19 (Mathematica).

  • 8답변 13 (Python).

  • 9답변 16 (펄).

  • 10답변 18 , 21 및이 답변 (C).

이 프로그램은 여러 문자 (ASCII에서 다중 바이트 UTF-8 문자가 여러 항목으로 분할 됨)를 계산 한 다음이 문자 또는 해당 문자의 발생 횟수에 따라 신중하게 설계된 의사 결정 트리를 따릅니다.

의사 결정 트리는 # 21에서 변경되지 않았습니다 (예!). 정확히 동일한 코드를 게시 할 수 없으므로 약간의 수정만으로 순수한 C로 돌아갑니다.


0

21. C ++ (gcc) (C의 변형으로 언어 10), 142 바이트

main(){int K,d[256]{0};while((K=getchar())!=EOF)d[K]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}

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

  • 1답변 1 , 5 , 7 , 9 및 14 (Retina)와 함께.

  • 2답변 2 (Brain-Flak).

  • 3답변 3 (APL).

  • 4답변 4 , 12 및 15 (자바 스크립트)와 함께.

  • 5답변 6 과 8 (R).

  • 6답변 10 , 17 및 20 (Bash).

  • 7답변 11 과 19 (Mathematica).

  • 8답변 13 (Python).

  • 9답변 16 (펄).

  • 10 대답 18 과이 답변 (C)가 있습니다.

이 프로그램은 여러 문자 (ASCII에서 다중 바이트 UTF-8 문자가 여러 항목으로 분할 됨)를 계산 한 다음이 문자 또는 해당 문자의 발생 횟수에 따라 신중하게 설계된 의사 결정 트리를 따릅니다.

퀴즈 : 편지 K는이 항목까지 사용되지 않았습니다. 문자 I, E, Y, j, k, q, z는 사용되지 않습니다.


C ++ 언어 11을 고려할 수있는 옵션이 있습니다. 몇 바이트 만 들어
— 갑니다

0

22. 배쉬 (+ coreutils) [language 6], 123131 바이트

편집 : 처음에 잘못된 버전을 게시, 지금 수정해야합니다.

골프

expr substr 6A67A69418476151514321 $(expr index i3xFepQsAalyIvtqPY7ZN+ \\`openssl sha256 -binary|base64|cut -c10`) 1| dc -e16i?p #L

내 답변 # 20, # 17 및 # 10 과 동일한 기술 입니다.

데이터

6 22 expr substr 6A67A69418476151514321 $(expr index i3xFepQsAalyIvtqPY7ZN+ \\`openssl sha256 -binary|base64|cut -c10`) 1| dc -e16i?p #L
A 21 main(){int K,d[256]{0};while((K=getchar())!=EOF)d[K]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}
6 20 expr substr 67A69418476151514321 $(expr index 7042PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1| dc -e16i?p #u
7 19 Position[ToCharacterCode@StringSplit@";NRU$ Q B [1: =L J, 5% 3 # >",Mod[Length@#,59,33]][[1,1]]&
A 18 main(n){char*v=" ^{ s ePfwm",b[999],*c;gets(b);c=strchr(v,*b);n=strlen(b);printf("%d",n?c?c-v:n>99?4:n>60?5:n>15?1:3:1);}
6 17 expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
9 16 while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}
4 15 t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
1 14 '[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$
8 13 from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N
4 12 c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;
7 11 Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&
6 10 expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G
1 09 $|}\{|[:'][^]']|,\b1
5 08 c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)
1 07 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5
5 06 cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
1 05 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
4 04 s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
3 03 ' {'⍳⊃⍞
2 02 {<>(())(<>)}{}(<>{}())
1 01

시운전

./test
6=>6
A=>10
6=>6
7=>7
A=>10
6=>6
9=>9
4=>4
1=>1
8=>8
4=>4
7=>7
6=>6
1=>1
5=>5
1=>1
5=>5
1=>1
4=>4
3=>3
2=>2
1=>1

무엇입니까 44?
— clismique

22 * 2? 󠀠󠀠󠀠󠀠󠀠
— Vi.

@ Qwerp-Derp, 오타
— Zeppelin

어서, 당신의 대답은 지금 지루해지고 있습니다-당신의 다음 대답이 이와 같으면, 나는 downvoting을 고려하고 있습니다 (흥미롭지 않습니까?)
— clismique

1
여기에 문제가 있습니다. 해시 문자 (3PgT 등)에는 20 개의 항목 만 있습니다. 빈 입력의 경우 오류가 발생하고 답변 # 2의 경우 "4"가 표시됩니다 (둘 다 답변 20과 올바르게 작동 함)
— Nick Matteo

0

25. Bash (언어 6), 169 바이트

내 답변 # 22, # 20, # 17 및 # 10 과 동일한 기술 입니다.

미안 @ Qwerp-Derp! ;) 나는 이것이 마지막 것이라고 약속한다 :)

골프

{ echo -n 'addsomesalt?';cat; }|expr substr 6BA6A67A69418476151514321 $(expr index 1W0TC4YrKwRGAJupDqn7Xlcog \\`openssl sha256 -binary|base64|cut -c40`) 1| dc -e16i?p #8

데이터

줄 바꿈은 답변 # 24에 대해 \ n으로 인코딩됩니다.

6 25 { echo -n 'addsomesalt?';cat; }|expr substr 6BA6A67A69418476151514321 $(expr index 1W0TC4YrKwRGAJupDqn7Xlcog \\`openssl sha256 -binary|base64|cut -c40`) 1| dc -e16i?p #8
B 24 typeset -A p\np=("[\$^]*|'\[*" 1 '{*' 2 "' *" 3 '?=>*' 4 'c?[wt]*' 5 'e*' 6 'P*' 7 'f*' 8 'w*' 9 'm*' 10 'ty*' 11)\necho ${p[(k)$1]:-1} #@<`w&X{
A 23 main(c){int d[256]={0};while((c=getchar())!=EOF)d[c]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}
6 22 expr substr 6A67A69418476151514321 $(expr index i3xFepQsAalyIvtqPY7ZN+ \\`openssl sha256 -binary|base64|cut -c10`) 1| dc -e16i?p #L
A 21 main(){int K,d[256]{0};while((K=getchar())!=EOF)d[K]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}
6 20 expr substr 67A69418476151514321 $(expr index 7042PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1| dc -e16i?p #u
7 19 Position[ToCharacterCode@StringSplit@";NRU$ Q B [1: =L J, 5% 3 # >",Mod[Length@#,59,33]][[1,1]]&
A 18 main(n){char*v=" ^{ s ePfwm",b[999],*c;gets(b);c=strchr(v,*b);n=strlen(b);printf("%d",n?c?c-v:n>99?4:n>60?5:n>15?1:3:1);}
6 17 expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
9 16 while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}
4 15 t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
1 14 '[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$
8 13 from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N
4 12 c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;
7 11 Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&
6 10 expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G
1 09 $|}\{|[:'][^]']|,\b1
5 08 c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)
1 07 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5
5 06 cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
1 05 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
4 04 s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
3 03 ' {'⍳⊃⍞
2 02 {<>(())(<>)}{}(<>{}())
1 01

테스트 출력

6=>6
B=>11
A=>10
6=>6
A=>10
6=>6
7=>7
A=>10
6=>6
9=>9
4=>4
1=>1
8=>8
4=>4
7=>7
6=>6
1=>1
5=>5
1=>1
5=>5
1=>1
4=>4
3=>3
2=>2
1=>1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.