DojoDeveloppement/KataMasterMindevalue d'un module d'arbitrage de Master Mind, qui étant données une combinaison secrète à découvrir et une proposition, retourne le nombre de pions bien placés et le nombre de pions mal placés - par exemple pour l'utiliser ensuite dans un jeu en ligne comme http://www.irt.org/games/js/mind/.
Entrées :
secret, une liste de pions de couleur composant la combinaison à trouver
proposition, une liste de pions de couleur constituant un essai
Sortie :
résultat, une liste à deux éléments.
Une variante amusante : /GrandMasterMind
class ArbitreTest < Test::Unit::TestCase
def assert_evalue attendu, secret, proposition
assert_equal attendu, evalue(secret, proposition)
end
def testToutFaux
assert_evalue [0, 0], [:bleu], [:rouge]
end
def testToutJustePourCombinaisonUnSeulElement
assert_evalue [1, 0], [:bleu], [:bleu]
assert_evalue [1, 0], [:rouge], [:rouge]
end
def testPremiersJustesSurCombinaisonAPlusieursElements
assert_evalue [2, 0], [:bleu, :rouge, :vert], [:bleu, :rouge, :jaune]
end
def testMalPlacesParmiPlusieurs
assert_evalue [0, 1], [:bleu, :bleu, :noir], [:noir, :vert, :vert]
assert_evalue [0, 2], [:bleu, :bleu, :noir, :noir], [:noir, :noir, :vert, :vert]
end
def testUnMalPlaceNeDoitPasEtreComptePlusieursFois
assert_evalue [0, 1], [:bleu, :bleu, :noir], [:noir, :noir, :vert]
end
def testVertPeutAussiEtreMalPlace
assert_evalue [0, 1], [:bleu, :bleu, :vert], [:vert, :vert, :noir]
end
def testRougePeutAussiEtreMalPlace
assert_evalue [0, 1], [:bleu, :bleu, :rouge], [:rouge, :rouge, :noir]
end
def testToutesLesCouleursPeuventEtreMalPlacees
assert_evalue [0, 5], [:bleu, :rouge, :vert, :jaune, :noir], [:rouge, :vert, :jaune, :noir, :bleu]
end
def testQuelquesCasAvecDesDoublons
assert_evalue [0, 1], [:bleu, :jaune, :rouge, :vert], [:noir, :bleu, :bleu, :noir]
assert_evalue [0, 1], [:bleu, :jaune, :bleu, :vert], [:noir, :bleu, :noir, :noir]
assert_evalue [1, 1], [:bleu, :jaune, :bleu, :vert], [:noir, :bleu, :bleu, :noir]
assert_evalue [2, 2], [:bleu, :jaune, :bleu, :jaune], [:bleu, :bleu, :jaune, :jaune]
assert_evalue [0, 2], [:jaune, :jaune, :bleu], [:bleu, :bleu, :jaune]
end
end