Implement Prototype(text string) (TextStats,error) with straightforward independent scans; Solve validates UTF-8 then performs one rune-category scan. Return byte length, rune count, Unicode letter count, Unicode digit count. Invalid UTF-8 returns nonnil error and zero TextStats. Empty text returns all zeros. Combining marks are not letters; U+FFFD literal and emoji are valid runes. Do not normalize or change input. Final time O(byte length), O(1) auxiliary space; Bytes/Runes count their stated units.
Edit exercise.go; retain the public types and signatures. prototype and final are separate stages. The executable tests recover panics as failures, report named checks, and exit nonzero on any failure. A successful run must execute at least one check. Tests use logical time or explicit synchronization where relevant.
Complete the starter code, then run the checks.
Results and errors will appear here.