그 언어를 아십니까?


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 , 914 (Retina)와 함께.

  • 2답변 2 (Brain-Flak).

  • 3답변 3 (APL).

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

  • 5답변 68 (R).

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

  • 7답변 1119 (Mathematica).

  • 8답변 13 (Python).

  • 9답변 16 (펄).

  • 10답변 18 , 2123 (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 행으로 이동합니다 . 그것 (긴 경우 )?), 우리는 추가 + b112를 얻기 위해,이 언어; 그렇지 않으면 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 , 914 (Retina)와 함께.

  • 2답변 2 (Brain-Flak).

  • 3답변 3 (APL).

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

  • 5답변 68 (R).

  • 6답변 1017 (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답변 15 (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)

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

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

인쇄합니다 :

  • 1답변 1 , 57 (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 , 79 (Retina)와 함께.

  • 2답변 2 (Brain-Flak).

  • 3답변 3 (APL).

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

  • 5답변 68 (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 , 914 (Retina)와 함께.

  • 2답변 2 (Brain-Flak).

  • 3답변 3 (APL).

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

  • 5답변 68 (R).

  • 6답변 10 , 17 , 2022 (배쉬).

  • 7답변 1119 (Mathematica).

  • 8답변 13 (Python).

  • 9답변 16 (펄).

  • 10답변 18 , 2123 (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 , 914 (Retina)와 함께.

  • 2답변 2 (Brain-Flak).

  • 3답변 3 (APL).

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

  • 5답변 68 (R).

  • 6답변 1017 (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 , 914 (Retina)와 함께.

  • 2답변 2 (Brain-Flak).

  • 3답변 3 (APL).

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

  • 5답변 68 (R).

  • 6답변 10 , 17 , 2022 (배쉬).

  • 7답변 1119 (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 , 914 (Retina)와 함께.

  • 2답변 2 (Brain-Flak).

  • 3답변 3 (APL).

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

  • 5답변 68 (R).

  • 6답변 10 , 1720 (Bash).

  • 7답변 1119 (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.