가위, 바위, 가위


68

가위 바위 보를 연주하는 3 개 언어로 된 폴리 글 로트 프로그램을 작성하십시오 .

모든 버전의 프로그램에 대한 입력은 항상 문자열 중 하나 rock이거나 paper또는 scissors입니다.

모국어로 프로그램은 입력을 능가하는 가위 바위 보 선택을 출력해야합니다.

Input     Output
rock      paper
paper     scissors
scissors  rock

두 번째 언어로 프로그램은 입력을 묶는 가위 바위 보 선택을 출력해야합니다.

Input     Output
rock      rock
paper     paper
scissors  scissors

세 번째 언어로 프로그램은 입력 값을 잃은 가위 바위 보 선택을 출력해야합니다.

Input     Output
rock      scissors
paper     rock
scissors  paper

바이트 단위의 가장 짧은 코드가 이깁니다. Tiebreaker는 투표율이 높은 답변입니다.

입력 및 / 또는 출력에는 선택적으로 후행 줄 바꿈이있을 수 있지만 그렇지 않으면 일반 rock/ paper/ scissors문자열 이어야합니다 . 당신은 대문자로 사용할 수 있습니다 ROCK, PAPER, SCISSORS원하는 경우.

동일한 언어의 다른 버전을 사용할 수 없습니다 (예 : Python 2 및 3).


언어 오류가 종료 될 수 있습니까?
Kritixi Lithos

2
@KritixiLithos 메타 컨센서스로 가십시오 . "STDOUT에 스트레이 출력을 생성하지 않는 한, 오류나 catch되지 않은 예외로 종료하는 것이 좋습니다."
Calvin 's Hobbies

2
폴리 글 로트에 대해 확신이없는 경우, 다른 언어로 다른 방식으로 입력 할 수 있습니까?
Jonathan Allan

3
@JonathanAllan 괜찮습니다. 특정 형식의 입력 만있는 일부 언어 세트의 경우 필요합니다.
Calvin 's Hobbies

도마뱀은 어떻게 되었습니까, 스팍? bigbangtheory.wikia.com/wiki/Rock_Paper_Scissors_Lizard_Spock
Ole Tange

답변:


60

Python, brainfuck 및 JavaScript, 103 99 바이트 Yay 100 바이트 미만!

0,[.5,];p=["rock","scissors","paper"]
1//1;lambda x:p[p.index(x)-1];"""
x=>p[-~p.indexOf(x)%3]//"""

파이썬에서 이것은 입력을 능가하는 함수를 정의합니다. brainfuck에서는 단순한 고양이 프로그램 일 뿐이며 JavaScript에서는 손실됩니다. 다음은 함수에 이름을 부여하고 fJavaScript 및 Python 3에서 입력하라는 프롬프트를 표시 하는 버전입니다 .

0,[.5,];p=["rock","scissors","paper"]
1//1;f=lambda x:p[p.index(x)-1];"""
f=x=>p[-~p.indexOf(x)%3]//"""

1//1;"""
console.log(f(prompt())) // JavaScript
1//1"""; print(f(input())) # Python

온라인으로 사용해보십시오 (이전 버전) : Python , brainfuck , JavaScript

설명:

Python에서는 여러 """..."""줄로 된 문자열로 모든 토큰으로 사용할 수 있습니다. 독립형으로 배치하면 전혀 작동하지 않습니다. 파이썬에서 JavaScript 코드를 "숨기기"위해 이것을 사용합니다. (0,[.5,])비트도 마찬가지입니다.의 a 0및 목록을 포함하는 튜플 일뿐 아니라 파이썬 51//1일부 //는 정수 나누기이지만 JavaScript에서 주석을 시작합니다. 다음은 이러한 토큰이 제거 된 코드입니다.

p=["rock","scissors","paper"]
lambda x:p[p.index(x)-1]

첫 번째 줄은 매우 자명 한 것으로, p가위 바위 보에서 다른 선택을 포함하도록 목록 을 정의합니다 . 두 번째 줄은 이름없는 함수를 정의합니다.이 함수는 하나의 인수를 취하고 x이길 수있는 선택을 다시 제공합니다 x(예 :의 이전 요소 p).


JavaScript에서 //한 줄 주석을 나타냅니다. 파이썬과 마찬가지로 단일 토큰은 무시되므로 이러한 토큰에서 제거 된 코드는 다음과 같습니다.

p=["rock","scissors","paper"]
x=>p[-~p.indexOf(x)%3]

이것은 p선택을 포함하도록 목록 을 설정 한 다음 잃어버린 선택을 제공하는 익명 함수를 정의 함으로써 Python과 유사하게 작동 합니다. 나는 parens를 건너 뛸 수 있도록 우선 순위가 높지만 -~x동일 x+1합니다.


brainfuck에서 다음을 제외한 모든 문자 +-,.[]<>가 제거되어 다음과 같이 남습니다.

,[.,][,,]
[.-]
>[-.]

이 명령 ,은 1 바이트의 입력을 읽고 .인쇄 한 [...]후 값이 0이 아닌 동안 반복합니다. 이 프로그램은 입력을 읽고 문자 \0를 찾을 때까지 한 번에 한 문자 씩 인쇄합니다 . 코드에 포함되어 있지 않기 때문에 나머지 프로그램은 무시해도됩니다. 실제로, 이것은 사용자가 입력 한 내용을 에코하여 효과적으로 묶습니다.


A의 일하는 매우 유사한 솔루션 그러나 당신이 그것에 나를 이길 :). Javascript TIO 링크 btw를 업데이트해야합니다. 다른 두 링크와 다릅니다.
DimP

2
x=>p[p.indexOf(x)+1]||"rock"//"""줄 수x=>p[(p.indexOf(x)+1)%3]//"""
루크

13
+1 나는 Brainfuck이 그렇게 숨겨지는 것을 본 적이 없다. 일반적으로 폴리 글롯에 BF가 포함되어 있는지는 분명합니다. 이건 아니야!
vsz

나는 당신이 한두 바이트를 절약하기 위해 BF 프로그램을 조금 움직일 수 있다고 생각합니다.1//1,[.5,];
ETHproductions

사실, []두 번째 줄 의 기존 줄을 사용하여 더 많은 바이트를 절약 할 수 있다고 생각합니다 .1//1,;lambda x:p[p.index(x,0)+-1];"""
ETHproductions

40

Python 2, 루비, 레티 나, 90 83 바이트

Value Ink 덕분에 -7 바이트

s=['rock','paper','scissors']
print s[s.index((0and gets or input()))+(0and-2or-1)]

온라인 사용해보기 : Python , Ruby , Retina

루비에서 이기고, 파이썬에서, 레티 나에서 잃습니다. 이 솔루션은 0Ruby에서는 진실이지만 Python에서는 거짓 이라는 사실을 이용합니다 . 또한 파이썬과 루비 모두에서 음수 색인을 사용합니다.


and연산자보다 우선 순위가 높 or으므로 s.index(0and STDIN.gets or input())작동합니다. 또한 Ruby gets의 별명입니다 STDIN.gets.
Value Ink

10
다른 방식으로 코드를 주석 처리하지 않는 경우 +1!
leo

@ValueInk 감사합니다! 나는이 생각 루비에서 입력을받을 수있는 더 간결한 방법이 있었는데, 거기에서 그것을가집니다
수학 마약 중독자를

21

V, Brain-flak 및 Python 2, 97, 86, 81, 77 , 75 바이트

o='rock paper scissors'.split()
lambda s:o[o.index(s)-1]#ddt.C rHd*wywVp

@ nmjcman101 덕분에 2 바이트가 절약되었습니다!

이것은 매우 재미 있었다! 이 답변은 내가 좋아하는 언어에 대한 멋진 개요이기 때문에이 답변을 많이 좋아합니다. 내가 가장 좋아하는 편집기, 내가 좋아하는 비비 언어 및 내가 쓴 언어. (기술적으로 파이썬 3이 더 좋지만 파이썬 2는 골퍼 ¯\_(ツ)_/¯입니다.)

온라인으로 사용해보십시오! 파이썬에서 (약간 수정되어 출력을 볼 수 있음) 입력에서 잃어버린 것을 인쇄합니다.

온라인으로 사용해보십시오! Brain-Flak에서 입력과 관련된 내용을 인쇄합니다.

온라인으로 사용해보십시오! V로 입력을 능가하는 것을 인쇄합니다.

V는 인쇄 할 수없는 ASCII 문자를 사용하므로 다음은 16 진 덤프입니다.

00000000: 6f3d 2772 6f63 6b20 7061 7065 7220 7363  o='rock paper sc
00000010: 6973 736f 7273 272e 7370 6c69 7428 290a  issors'.split().
00000020: 6c61 6d62 6461 2073 3a6f 5b6f 2e69 6e64  lambda s:o[o.ind
00000030: 6578 2873 292d 315d 231b 6464 742e 4320  ex(s)-1]#.ddt.C 
00000040: 720e 1b48 642a 7779 7756 70              r..Hd*wywVp

설명:

파이썬

파이썬에서 이것은 매우 간단합니다. 세 요소의 목록을 정의하고 입력 바로 앞에 요소를 반환합니다. -1back 요소를 반환 하므로 순환 적으로 작동하며 매우 간단하고 쉽습니다. 그런 다음 모든 #것은 주석입니다.

브레인 플락

이것은 뇌-플래 크 에서도 매우 간단합니다. 우리가이기거나 잃어야한다면 아마도 수백 바이트 일 것입니다. 그러나 이것은 실제로 0 바이트로 작동합니다. 프로그램 시작시 모든 입력이 스택에로드됩니다. 프로그램이 끝나면 전체 스택이 암시 적으로 인쇄됩니다.

관련없는 문자를 모두 제거하면 brain-flak가 보는 코드는

()[()]

단순히로 평가 1 + -1되지만이 값이 전혀 사용되지 않으므로 NOOP입니다.

V

여기가 조금 이상해집니다. 파이썬 목록의 이름을 지정하는 o것은 임의의 것처럼 보이지만 확실하지는 않습니다. V에서는 o줄 바꿈을 열고 삽입 모드로 만듭니다. 그때,

='rock paper scissors'.split()
lambda s:o[o.index(s)-1]#

버퍼에 삽입됩니다. 그 후 관련 코드는 다음과 같습니다.

<esc>ddxxf'C r<C-n><esc>Hd*wywVp

설명:

<esc>                          " Return to normal mode
     dd                        " Delete this line. Now the cursor is on '='
       t.                      " Move the cursor forward to the "'"
         C                     " Delete everything after the "'", and enter insert mode
           r                   " From insert mode, enter '<space>r'
            <C-n>              " Autocomplete the current word based on what is currently in the buffer
                               " Since only one word starts with 'r', this will insert 'rock'
                 <esc>         " Leave back to normal mode
                      H        " Go to the first line (where the input is)
                       d*      " Delete everything up until the next occurence of the input
                         w     " Move forward one word
                          yw   " Yank the word under the cursor
                            Vp " And paste that word over the current line, delete everything else

@WheatWizard 파이썬에서는 같은 길이가 아닌 것을 제외하고는 이유가 없습니다. 그러나 유적 모든 V.에서
DJMcMayhem의

@WheatWizard 원인 V는 정말 이상한 언어이며, 이것은 정말 이상한 작업입니다. 모든 것은 문자의 레이아웃에 크게 의존하며 .split()솔루션에 표시되는 다양한 괄호와 따옴표를 제거하는 것이 더 쉽습니다.
DJMcMayhem

미성년자이지만 나중에 어쨌든 삭제 되기 때문에 명령을 만들기 위해를 꺼내고 xxa 2로 바꿀 수 있습니다 . 편집 : 당신은 그것을 만들 수 있습니다 ? 2f'='d*t.
nmjcman101

@ nmjcman101 우오, 달콤하고 멋진 아이디어입니다. 팁 고마워!
DJMcMayhem

16

CJam , 레티 나 , PHP, 92 86 85 바이트

ECHO["rock",0,"scissors","paper"][ORD(READLINE())%4];
#];"scissors  paper rock"S/rci=

-r플래그를 사용하여 PHP에서 실행해야합니다 .

CJam에서 사용해보십시오

Retina에서 사용해보십시오

PHP로 사용해보십시오

CJam

CJam에서 모든 대문자는 사전 정의 된 변수입니다. 첫 번째 줄에서 이러한 값 중 많은 부분이 문자열 및 배열 리터럴과 함께 스택으로 푸시됩니다. 일부 증분, 감소 및 기타 작업이 수행됩니다.

그 후에 스택은 배열 ( ])에 싸여 버려 ;지므로 ( ) 다른 물건은 전혀 중요하지 않습니다. CJam의 주요 프로그램은 다음과 같습니다.

"scissors  paper rock"S/rci=

"scissors  paper rock"        e# Push this string
                      S/      e# Split it on spaces
                        r     e# Read the input
                         c    e# Cast to char (returns the first character in the string)
                          i   e# Cast to int (its codepoint)
                           =  e# Get the index of the split array (CJam has modular arrays)

망막

이것은 거의 속임수처럼 느껴집니다 ...

Retina는 ECHO["rock",0,"scissors","paper"][ORD(READLINE())%4];입력 에서 정규식과 일치하는 것을로 대체합니다 #];"scissors paper rock"S/rci=. 이 정규식과 일치 무엇이든간에, 그것은 확실히 아무것도 일치하지 않는 rock, paper또는 scissors그래서 대체가 이루어지지 않습니다. 수정되지 않은 입력은 내재적으로 출력됩니다.

PHP

두 번째 줄은 주석이므로 무시됩니다.

첫 번째 줄은 CJam 부분과 동일한 알고리즘을 사용하지만 결과의 순서는 다릅니다.


1
TIL PHP 함수는 대소 문자를 구분하지 않습니다.
gcampbell

14

C, C ++, 파이썬; 227 226 216 바이트

@Mat 덕분에 바이트를 절약했습니다!

#include<stdio.h>/*
f=lambda a:"rock"if a[0]=="r"else"paper"if a[0]=="p"else"scissors"
"""*/
int f(char*b){puts(sizeof'b'-1?*b=='r'?"paper":*b=='s'?"rock":"scissors":*b=='r'?"scissors":*b=='s'?"paper":"rock");}
//"""

f모든 언어로 기능 을 정의합니다 . C에서 이기고 Python과의 관계는 C ++에서 잃습니다. C ++처럼 항상 / s

/*와 사이의 부분은 */C와 C ++의 주석 블록이며 파이썬의 람다 함수 선언입니다. 기본적으로 함수 인수의 첫 문자를 비교하고 해당 문자로 시작하는 이동을 반환합니다.

"""s 사이의 부분은 Python의 여러 줄 문자열이며 C와 C ++의 함수 선언입니다. sizeof'b'-1현재 언어가 C ++의 C인지 알아냅니다. 크기가 1이 아닌 경우 값이 true이고, 그렇지 않으면 값이 false입니다. C 문자 리터럴은 4 바이트 길이이며 C ++에서는 단일 바이트 유형입니다. 그런 다음 언어를 알아 낸 후에는 입력의 첫 글자를보고 그에 따라 출력합니다.

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

C ++

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

파이썬

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


4
"" ""사이의 부분은 파이썬의 주석 블록입니다. "실제로 여러 줄 문자열입니다
ivzem

10

C ++, R, C; 252 240 226 220 209 바이트

#define b/*
M=function()cat(readline())
#*/
#import<stdio.h>
#define M()main(){int i=0;char t[9];char*u;char*s[]={"rock","paper","scissors"};scanf("%s",t);for(;*t-*s[i++];);puts(s[(i+=sizeof('a')==1)%3]);}
M()

문자 리터럴의 크기가 C에서는 4 바이트이고 C ++에서는 1 바이트라는 C와 C ++의 차이점을 사용합니다.

C ++ :

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

아르 자형:

결과:

> #define b/*
> M=function()cat(readline())
> #*/
> #import<stdio.h>
> #define M()main(){int i=0;char t[9];char*u;char*s[]={"rock","paper","scissors"};scanf("%s",t);for(;*t-*s[i++];);puts(s[(i+=sizeof('a')==1)%3]);}
> M()
rock
rock

씨:

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


8

개크, 레티 나, 펄; 68 바이트

{eval"\$_=uc<>"}{$_=/[Sk]/?"paper":/[Pc]/?"rock":"scissors"}{print}

(마지막 줄 바꿈)

개크 (우승자)

Perl을 위해 일부 정크를 만든 다음 a 또는 a 포함 여부에 따라 행 내용 ( 변수 가 정의되지 않았기 때문에 $_동일) 을 변경 한 다음 결과를 인쇄하십시오. 이스케이프 시퀀스에 대한 경고를 무시하십시오.$0_kc

{a_string_that_is_ignored}
{$_ = /[Sk]/ ? "paper" : /[Pc]/ ? "rock" : "scissors"}
{print}

망막 (넥타이)

기본 일몰 및 기타와 같은 트릭 : 첫 번째 줄의 일부 정규식 일치 항목을 두 번째 줄의 내용으로 바꾸려면 입력을 전달하십시오.

(로저)

줄을 읽고 대문자로 변환 한 다음 포함 된 문자를 기반으로 단어를 선택하고 결과를 인쇄하십시오. 첫 번째 단계와 마지막 단계는 evalawk에서 숨기기 위해 사용 됩니다.

$_ = uc <>;
$_ = /[Sk]/ ? "paper" : /[Pc]/ ? "rock" : "scissors";
print $_

개크, 레티 나 perl -p; 57 바이트

커맨드 라인 스위치 인 perl -p은이 사이트의 일반적인 규칙에 따라 프로그램의 일부로 간주되므로 폴리 글롯이되지 않기 때문에 이것을 보너스로 입력 하고 있습니다.

{eval"\$_=uc"}$_=/[Sk]/?"paper":/[Pc]/?"rock":"scissors"

Retina 의 마지막 개행으로 다시 . 이번에 perl -p는 출력을 자동으로 인쇄하기 때문에 펄 오버 헤드가 크게 줄어 듭니다. 할당이 awk$_ 에서 암시 적 인쇄 를 트리거 하도록 할 수 있습니다 .


각각에 대해 TIO 링크 (또는 테스트 할 유사한 온라인 컴파일러)를 추가 할 수 있습니까?
Kevin Cruijssen

@KevinCruijssen 님이 추가했습니다 TIO의 출력 perl -p이 비어 있으므로 TIO의 버그 여야합니다.
Gilles

7

> <>, 망막 파이썬 2 : 144 127 123 바이트

공백을 제거하여 @Loovjo 덕분에 1 바이트 절약

@ mbomb007 덕분에 input대신 4 바이트를 사용하여 저장raw_input

#v"PAPER"v?%4-2{"SCISSORS"v?%2:i
#>ooooo; >oooooooo<"ROCK"~<
a="KRS".index(input()[-1])
print["SCISSORS","ROCK","PAPER"][a]

도전 과제 로 TNB에 게시 된 이 언어 조합을 사용해보기로 결정했습니다.

> <>

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

IP가 오른쪽으로 움직이기 시작합니다.

#                      Reflect the IP so that it now moves left and it wraps around the grid
i:                     Take one character as input and duplicate it

입력에 사용될 수있는 문자는 PRS(프로그램이 첫 번째 문자 만 사용하기 때문에)입니다. 그들의 ASCII-값은 80, 8182.

2%                     Take the modulo 2 of the character. Yields 0, 1, 0 for P, R, S respectively
?v                     If this value is non-zero (ie the input was ROCK), go down, otherwise skip this instruction

입력이 바위라면, 이것이 일어날 것입니다 :

<                      Start moving to the left
~                      Pop the top most value on the stack (which is the original value of R and not the duplicate)
"KCOR"                 Push these characters onto the stack
<                      Move left
oooo                   Output "ROCK" as characters (in turn these characters are popped)
o                      Pop the top value on the stack and output it; but since the stack is empty, the program errors out and exits promptly.

그렇지 않으면 입력이 SCISSORS또는 PAPER인 경우 IP에서 발생하는 것입니다.

"SROSSICS"             Push these characters onto the stack
{                      Shift the stack, so the the original value of the first char of the input would come to the top
2-4%                   Subtract 2 and take modulo 4 of the ASCII-value (yields 2, 0 for P, S respectively)
?v                     If it is non-zero, go down, otherwise skip this instruction

입력이 PAPER인 경우 :

>ooooooooo             Output all characters on the stack (ie "SCISSORS")
<                      Start moving left
o                      Pop a value on the stack and output it; since the stack is empty, this gives an error and the program exits.

그렇지 않은 경우 (입력이 인 경우 SCISSORS) :

"REPAP"                Push these characters onto the stack
v>ooooo;               Output them and exit the program (without any errors).

망막

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

이 경우 Retina는 두 줄의 각 쌍을 일치 및 대체 쌍으로 간주합니다. 예를 들어 첫 번째 줄과 일치하는 것을 두 번째 줄로 바꾸려고 시도하지만 첫 번째 줄은 절대로 일치하지 않으므로 입력을 유지하지 않습니다.

파이썬 2

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

파이썬 프로그램은 "s 사이에 입력이 필요합니다 .

처음 두 줄은 파이썬의 주석입니다.

a="KRS".index(input()[-1])             # Get the index of the last character of the input in "KRS"
print["SCISSORS","ROCK","PAPER"][a]    # Print the ath index of that array

print마지막 줄 이후의 공간 이 필요 하다고 생각하지 않습니다 .
Loovjo

input()대신 사용할 수 있습니다 raw_input().
mbomb007 17

@Loovjo 팁을 주셔서 감사합니다 :)
Kritixi Lithos

@ mbomb007 작동하지 않는 것
Kritixi Lithos

파이썬 부분을 따옴표로 입력을 받아 경우 @KritixiLithos 그것을 작동
undergroundmonorail

0

루비, 클로저, 공통 리스프-251 바이트

(print(eval '(if()({(quote SCISSORS)(quote PAPER)(quote PAPER)(quote ROCK)(quote ROCK)(quote SCISSORS)}(read))(eval(quote(nth(position(read)(quote("SCISSORS""PAPER""ROCK")):test(quote string-equal))(quote(ROCK SCISSORS PAPER))))))))
;'['"'+gets+'"']))

공백이있는 더 읽기 쉬운 버전 :

(print(eval '(if() ; distinguish between CLojure and Common Lisp
    ({(quote SCISSORS)(quote PAPER)(quote PAPER)
       (quote ROCK)(quote ROCK)(quote SCISSORS)}(read)) ; use hash-map as a function
    (eval(quote(nth ; find index of the input arg in the list
       (position(read)(quote("SCISSORS""PAPER""ROCK")):test(quote string-equal))  
    (quote(ROCK SCISSORS PAPER))))))))
 ;'['"'+gets+'"'])) ; ruby indexation

클로저는 항상 이기고 루비는 항상 그리며 커먼 리스프는 항상집니다.

루비에게 's 안의 모든 것은 문자열입니다. 두 줄에 걸쳐 있습니다. 그런 다음 []문자열에 문자열 자체가 있으면 문자열 자체를 반환하는 문자열 인수와 함께 연산자를 사용 합니다. 결과가 출력되고 Ruby는 입력을 미러링합니다.

두 번째 줄은 Clojure와 Common Lisp에 대한 주석입니다. 의 무리 eval와는 quoteClojure의 모든 문자가 유효한지 확인해야하기 때문에 사용할 수 있습니다. 코드를 더 많이 재사용하는 것이 좋지만 nth기능에 따라 이러한 언어의 서명이 다릅니다. 기본적으로 Clojure의 if()경우 true로 평가되고 가능한 변형의 해시 맵이 stdin에서 읽은 인수로 호출되면 첫 번째 분기로 이동합니다. 공통 Lisp은 두 번째 분기로 이동하여 목록에서 stdin에서 인수의 위치를 ​​찾고 결과 목록에서 해당 항목을 리턴합니다.

커먼 리스프 부분이 더 골프를 칠 수있을 것 같아요.

온라인 참조 : Ruby , Common Lisp , Clojure


0

스칼라, 자바 스크립트 및 Ook, 167 바이트

s=>{var a="paper,scissors,rock".split(",")/*/**/a[-1]="rock"
return a[a.indexOf(s)-1];`*/a((a.indexOf(s)+1)%3)//`//Ook. Ook. Ook! Ook? Ook. Ook! Ook! Ook. Ook? Ook!
}

Scala에서 사용해보십시오 Javascript에서 사용해보십시오.

스칼라-승

s=>{                                                      //define an anonymous function
  var a="paper,scissors,rock".split(",")                  //generate the array
  /* /* */ a[-1]="rock"                                   //scala supports nested comments,
  return a[a.indexOf(s)-1];`                              //so this comment...
  */                                                      //...ends here
  a((a.indexOf(s)+1)%3)                                   //return the winning string
  //`//Ook. Ook. Ook! Ook? Ook. Ook! Ook! Ook. Ook? Ook!  //another comment
}

자바 스크립트-패배

s=>{                                                   //define an anonymous function
  var a="paper,scissors,rock".split(",")               //generate the array
  /*/**/                                               //a comment
  a[-1]="rock"                                         //put "rock" at index -1
  return a[a.indexOf(s)-1];                            //return the string that loses
  `*/a((a.indexOf(s)+1)%3)//`                          //a string
  //Ook. Ook. Ook! Ook? Ook. Ook! Ook! Ook. Ook? Ook!  //a comment
}

알았어! -관계

Ook 부분은 Ook로 ,[.,]번역 된 간단한 brainfuck cat 프로그램 입니다.

s=>{var a="paper,scissors,rock".split(",")/*/**/a[-1]="rock"   //random stuff
return a[a.indexOf(s)-1];`*/a((a.indexOf(s)+1)%3)//`//         //more random stuff
Ook. Ook. Ook! Ook? Ook. Ook! Ook! Ook. Ook? Ook!              //the program
}                                                              //random stuff

사용하는 a[(a.indexOf(s)+2)%3]경우을 설정할 필요가 없습니다 a[-1]="rock". 또한 JavaScript 문자열 안에 Ook 코드를 넣을 수 없습니까?
Neil
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.