package main
import (
"fmt"
"unicode"
)
func verifyAllUpperOrAllLowerOrIsCapitalized(word string) bool {
upper := 0
lower := 0
for _, ch := range word {
if unicode.IsLower(ch) {
lower++
} else if unicode.IsUpper(ch) {
upper++
}
}
// 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 && len(word) > 0 && unicode.IsUpper(rune(word[0])) {
return true
}
// Otherwise, mixed casing
return false
}
func runTest(word string) {
fmt.Printf("Testing word: \"%s\"\n", word)
if verifyAllUpperOrAllLowerOrIsCapitalized(word) {
fmt.Println("OK\n")
} else {
fmt.Println("Error\n")
}
}
func 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
*/