7
votes

Pierre papier ciseaux. Déterminez la victoire / la perte / la cravate en utilisant les mathématiques?

Alors j'écris un jeu de ciseaux de papier rock lorsque je suis arrivé à écrire cette fonction:

A est le déplacement du lecteur, B est le déplacement du joueur deux. Tout ce dont j'ai besoin pour comprendre, c'est si le joueur on gagné, perdu ou égalné. xxx

Ma question est la suivante: quelle est la manière la plus élégante de cette fonction peut être écrite?

Edit: Je cherche un one-liner.


2 commentaires

À la recherche de code correct lisible, c'est beaucoup mieux que de rechercher des doublures.


Regardez ma réponse à une question similaire: Stackoverflow.com/a/9553712/1207152


5 Réponses :


8
votes

Une matrice 3x3 serait "plus élégante", je suppose. xxx

(édité: oublié que a B a été déjà zéro origine.)


0 commentaires

2
votes

Je suppose que vous pouvez utiliser l'opérateur ternaire comme celui-ci -

if (b==0) a==1? wins++ : loss++;

if (b==1) a==1? loss++ : wins++;

if (b==2) a==1? loss++ : wins++;


0 commentaires

18
votes
if (a == b) ties++;
else if ((a - b + 3) % 3 == 1) wins++;
else losses++;

2 commentaires

Rock VS Ciseaux ne fonctionne pas: (0 - 2% 3) = -2 . En utilisant javascript


On dirait qu'il manque une paire de parenthèses: ((a-b)% 3 == 1). Dans C opérateurs, Modulo est plus élevé dans l'ordre des opérations que la soustraction.



2
votes

Vous pouvez le faire avec une simple formule mathématique pour obtenir le résultat, puis comparer avec si code> comme ceci: xxx pré>

jsfiddle Demo p>


une ligne ProcessMove code> fonction sans retour: p>

var processMove = function (a, b) {
  ((3 + b - a) % 3) ? 1 == ((3 + b - a) % 3) ? ++result.losses : ++result.wins : ++result.ties;
};


0 commentaires

1
votes

Comment faites-vous le faire en Java?

résultat = (comp-x)% 3; xxx


0 commentaires