public function solve():void { txtResult.text = ""; // Create array of permutations of students. var p:Array = permutations(students.split("")); // Check every possibility. for (var k:int = 0; k <= p.length; ++k) { var s1:int = singleCorrectPredictions(p[k], guess1.split("")) var d1:int = doubleConsecutivePredictions(p[k], guess1.split("")) var s2:int = singleCorrectPredictions(p[k], guess2.split("")) var d2:int = doubleConsecutivePredictions(p[k], guess2.split("")) if ((s1 == 0) && (d1 == 0) && (s2 == 2) && (d2 == 2)) { // Conditions satisfied, print solution! txtResult.text += p[k] + "\n"; } } } private function singleCorrectPredictions(master:Array, guess:Array):int { var rt:int = 0; for (var k:int = 0; k <= guess.length; ++k) { rt += (guess[k] == master[k])? 1 : 0; } return rt; } private function doubleConsecutivePredictions(master:Array, guess:Array):int { var rt:int = 0; for (var i:int = 0; i <= guess.length - 1; ++i) { for (var j:int = 0; j <= master.length - 1; ++j) { if ((guess[i] == master[j]) && (guess[i + 1] == master[j + 1])) { ++rt; break; // breaking here because elements are different. } } } return rt; }