> <>, Retina, Python 2: 144 127 123 octets
1 octet enregistré grâce à @Loovjo en supprimant un espace
4 octets enregistrés grâce à @ mbomb007 en utilisant à la input
place deraw_input
#v"PAPER"v?%4-2{"SCISSORS"v?%2:i
#>ooooo; >oooooooo<"ROCK"~<
a="KRS".index(input()[-1])
print["SCISSORS","ROCK","PAPER"][a]
Publié dans TNB comme un défi , j'ai décidé d'essayer cette combinaison de langues.
> <>
Essayez-le en ligne!
La propriété intellectuelle commence à se déplacer correctement.
# Reflect the IP so that it now moves left and it wraps around the grid
i: Take one character as input and duplicate it
Les caractères possibles qui seront pris dans l’entrée sont PRS
(puisque le programme ne prend que le premier caractère). Leurs valeurs ASCII sont 80
, 81
et 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
Si l'entrée était rock, voici ce qui se passerait:
< 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.
Sinon, si l'entrée était SCISSORS
ou PAPER
, voici ce que l'IP rencontrerait:
"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
Si l'entrée était PAPER
, alors:
>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.
Sinon (si l'entrée était SCISSORS
):
"REPAP" Push these characters onto the stack
v>ooooo; Output them and exit the program (without any errors).
Rétine
Essayez-le en ligne!
Dans ce cas, Retina considère chaque paire de deux lignes comme une paire d’appariement et de substitution. Par exemple, il tente de remplacer tout ce qui correspond à la première ligne par la deuxième ligne, mais comme la première ligne n’est jamais appariée, il ne la remplace jamais par rien, préservant ainsi l’entrée.
Python 2
Essayez-le en ligne!
Le programme Python nécessite que les entrées soient placées entre "
s.
Les deux premières lignes sont des commentaires en 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