fun verifyCasing(word: String): Boolean {
val upper = word.count { it.isUpperCase() }
val lower = word.count { it.isLowerCase() }
// Case 1: all lowercase
if (upper == 0) return true
// Case 2: all uppercase
if (lower == 0) return true
// Case 3: capitalized (only first letter uppercase)
if (upper == 1 && word.firstOrNull()?.isUpperCase() == true) return true
// Otherwise, mixed casing
return false
}
fun runTest(word: String) {
println("""Testing word: "$word"""")
if (verifyCasing(word)) {
println("OK\n")
} else {
println("Error\n")
}
}
fun main() {
runTest("PROGRAMMING")
runTest("programming")
runTest("Programming")
runTest("ProGramMing")
}
/*
run:
Testing word: "PROGRAMMING"
OK
Testing word: "programming"
OK
Testing word: "Programming"
OK
Testing word: "ProGramMing"
Error
*/