Bulls and cows: Difference between revisions

m
Moved Kotlin entry into correct alphabetical order
(Added Kotlin)
m (Moved Kotlin entry into correct alphabetical order)
Line 2,263:
You won after 10 guesses!</pre>
 
=={{header|Kotlin}}==
<lang scala>// version 1.1.2
 
import java.util.Random
 
const val MAX_GUESSES = 20 // say
 
fun main(args: Array<String>) {
val r = Random()
var num: String
// generate a 4 digit random number from 1234 to 9876 with no zeros or repeated digits
do {
num = (1234 + r.nextInt(8643)).toString()
} while ('0' in num || num.toSet().size < 4)
 
println("All guesses should have exactly 4 distinct digits excluding zero.")
println("Keep guessing until you guess the chosen number (maximum $MAX_GUESSES valid guesses).\n")
var guesses = 0
while (true) {
print("Enter your guess : ")
val guess = readLine()!!
if (guess == num) {
println("You've won with ${++guesses} valid guesses!")
return
}
val n = guess.toIntOrNull()
if (n == null)
println("Not a valid number")
else if ('-' in guess || '+' in guess)
println("Can't contain a sign")
else if ('0' in guess)
println("Can't contain zero")
else if (guess.length != 4)
println("Must have exactly 4 digits")
else if (guess.toSet().size < 4)
println("All digits must be distinct")
else {
var bulls = 0
var cows = 0
for ((i, c) in guess.withIndex()) {
if (num[i] == c) bulls++
else if (c in num) cows++
}
println("Your score for this guess: Bulls = $bulls Cows = $cows")
guesses++
if (guesses == MAX_GUESSES)
println("You've now had $guesses valid guesses, the maximum allowed")
}
}
}</lang>
Sample input/output:
{{out}}
<pre>
Enter your guess : 1234
Your score for this guess: Bulls = 0 Cows = 2
Enter your guess : 1256
Your score for this guess: Bulls = 0 Cows = 2
Enter your guess : 2178
Your score for this guess: Bulls = 1 Cows = 0
Enter your guess : 2519
Your score for this guess: Bulls = 3 Cows = 0
Enter your guess : 2569
Your score for this guess: Bulls = 3 Cows = 0
Enter your guess : 2579
Your score for this guess: Bulls = 3 Cows = 0
Enter your guess : 2589
Your score for this guess: Bulls = 3 Cows = 0
Enter your guess : 2539
Your score for this guess: Bulls = 3 Cows = 0
Enter your guess : 2549
You've won with 9 valid guesses!
</pre>
 
=={{header|JavaScript}}==
Line 2,524 ⟶ 2,453:
please, enter four distincts digits
Your guess? </pre>
 
=={{header|Kotlin}}==
<lang scala>// version 1.1.2
 
import java.util.Random
 
const val MAX_GUESSES = 20 // say
 
fun main(args: Array<String>) {
val r = Random()
var num: String
// generate a 4 digit random number from 1234 to 9876 with no zeros or repeated digits
do {
num = (1234 + r.nextInt(8643)).toString()
} while ('0' in num || num.toSet().size < 4)
 
println("All guesses should have exactly 4 distinct digits excluding zero.")
println("Keep guessing until you guess the chosen number (maximum $MAX_GUESSES valid guesses).\n")
var guesses = 0
while (true) {
print("Enter your guess : ")
val guess = readLine()!!
if (guess == num) {
println("You've won with ${++guesses} valid guesses!")
return
}
val n = guess.toIntOrNull()
if (n == null)
println("Not a valid number")
else if ('-' in guess || '+' in guess)
println("Can't contain a sign")
else if ('0' in guess)
println("Can't contain zero")
else if (guess.length != 4)
println("Must have exactly 4 digits")
else if (guess.toSet().size < 4)
println("All digits must be distinct")
else {
var bulls = 0
var cows = 0
for ((i, c) in guess.withIndex()) {
if (num[i] == c) bulls++
else if (c in num) cows++
}
println("Your score for this guess: Bulls = $bulls Cows = $cows")
guesses++
if (guesses == MAX_GUESSES)
println("You've now had $guesses valid guesses, the maximum allowed")
}
}
}</lang>
Sample input/output:
{{out}}
<pre>
Enter your guess : 1234
Your score for this guess: Bulls = 0 Cows = 2
Enter your guess : 1256
Your score for this guess: Bulls = 0 Cows = 2
Enter your guess : 2178
Your score for this guess: Bulls = 1 Cows = 0
Enter your guess : 2519
Your score for this guess: Bulls = 3 Cows = 0
Enter your guess : 2569
Your score for this guess: Bulls = 3 Cows = 0
Enter your guess : 2579
Your score for this guess: Bulls = 3 Cows = 0
Enter your guess : 2589
Your score for this guess: Bulls = 3 Cows = 0
Enter your guess : 2539
Your score for this guess: Bulls = 3 Cows = 0
Enter your guess : 2549
You've won with 9 valid guesses!
</pre>
 
=={{header|Lasso}}==
9,490

edits