Write a function that converts a string from `CamelCase` to `snake_case`.
Camel case is the practice of writing phrases without spaces or punctuation, it indicates the separation of words with a single capitalized letter. Snake case is a style of writing in which each space is replaced by an underscore (_) character.
Here are some rules for you to follow:
Write a function that converts a string from a camel case to a snake case.
- If the string is empty, return an empty string.
- If the string is empty, return an empty string.
- If the string is not a camel case, return the string unchanged.
- If the string is not `CamelCase`, return the string unchanged.
- If the string is a camel case, return the snake case version of the string.
- If the string is `CamelCase`, return the `snake_case` version of the string.
- Camel case is the practice of writing phrases without spaces or punctuation, It indicates the separation of words with a single capitalized letter
- Snake case is a style of writing in which each space is replaced by an underscore (_) character.
Basic `CamelCase` Capitalization Rules:
- The first letter must be capitalized.
- The word must not have two capitalized letters together (CamelCase) not end with a capitalized letter (CamelCasE).
- No numbers or punctuations are allowed in the word at any place (CamelCase1more).