> <>, Retina, Python 2: 144 127 123 ไบต์
บันทึก 1 ไบต์ด้วย @Loovjo โดยการลบช่องว่าง
บันทึก 4 ไบต์ด้วย @ mbomb007 โดยใช้input
แทน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
, และ81
82
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 ถือว่าแต่ละคู่ของสองบรรทัดเป็นคู่ของการจับคู่และการทดแทน ตัวอย่างเช่นมันพยายามที่จะแทนที่สิ่งที่ตรงกับบรรทัดแรกด้วยบรรทัดที่สอง แต่เนื่องจากบรรทัดแรกไม่เคยจับคู่มันจะไม่แทนที่มันด้วยอะไรเลยดังนั้นการคงอินพุตไว้
Python 2
ลองออนไลน์!
โปรแกรม Python ต้องการอินพุตที่จะใส่ระหว่าง"
s
สองบรรทัดแรกคือความคิดเห็นใน Python
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