Alors j'écris un jeu de ciseaux de papier rock lorsque je suis arrivé à écrire cette fonction:
Ma question est la suivante: quelle est la manière la plus élégante de cette fonction peut être écrite? P > Edit: Je cherche un one-liner. P> p> A code> est le déplacement du lecteur,
B code> 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é. P>
5 Réponses :
Une matrice 3x3 serait "plus élégante", je suppose. (édité: oublié que a code> B code> a été déjà zéro origine.) p> p>
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++;
if (a == b) ties++; else if ((a - b + 3) % 3 == 1) wins++; else losses++;
Rock VS Ciseaux ne fonctionne pas: (0 - 2% 3) = -2 code>. En utilisant
javascript code>
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.
Vous pouvez le faire avec une simple formule mathématique pour obtenir le résultat, puis comparer avec une ligne si code> comme ceci:
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;
};
Comment faites-vous le faire en Java?
résultat = (comp-x)% 3; p>
À 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