// Bulls and Cows - Written in Frink println["Welcome to Bulls and Cows!"] // Put 4 random digits into target array digits = array[1 to 9] target = new array for i = 0 to 3 target@i = digits.removeRandom[] // Game variables guessCount = 0 solved = false while solved == false { // Round variables bulls = 0 cows = 0 // Input guess from player guess = input["Guess a 4 digit number with numbers 1 to 9: "] // Valid Guess Tests. Set validGuess to true. If any test fails it will be set to false validGuess = true // Test for exactly 4 digits if length[guess] != 4 { println["$guess is invalid. Your guess must be 4 digits."] validGuess = false } // Test for any characters not in 1 - 9 using regex if guess =~ %r/[^1-9]/ { println["$guess is invalid. Your guess can only contain the digits 1 through 9."] validGuess = false } // Check for duplicate digits in guess comboCheck = true guessArr = charList[guess] // Split guess string into array of characters. guessArrCombos = guessArr.combinations[2] // Divide the array into all possible 2 digits combinations. for guessCombo = guessArrCombos if guessCombo@0 == guessCombo@1 // If the two digits in the combinations are the same mark the comboCheck as failed. comboCheck = false if comboCheck == false { println["$guess is invalid. Each digit in your guess should be unique."] validGuess = false } // If all tests pass, continue with the game. if validGuess == true { guessCount = guessCount + 1 for i = 0 to 3 { if parseInt[guessArr@i] == target@i // Convert guess from string to int. Frink imports all input as strings. { bulls = bulls + 1 next // If bull is found, skip the contains check. } if target.contains[parseInt[guessArr@i]] cows = cows + 1 } if bulls == 4 solved = true // Exit from While loop. else { // Print the results of the guess. Formatting for plurals. bullsPlural = bulls == 1 ? "bull" : "bulls" cowsPlural = cows == 1 ? "cow" : "cows" println["Your guess of $guess had $bulls $bullsPlural and $cows $cowsPlural."] } } } guessPlural = guessCount == 1 ? "guess" : "guesses" println["Congratulations! Your guess of $guess was correct! You solved this in $guessCount $guessPlural."]