Unisys Stealth components may receive identifiers and labels in inconsistent formatting. Implement a palindrome check that determines whether a text value reads the same forward and backward after ignoring case and non-alphanumeric characters.
Do not use reverse slicing, reversed(), or any built-in palindrome helper. The algorithm should compare characters from both ends and use constant extra space.
Implement is_palindrome(text), where text is a string. Return True if the normalized text is a palindrome, otherwise return False. Normalization means comparing letters without regard to case and ignoring every character for which isalnum() is false. An empty normalized string is considered a palindrome.
def is_palindrome(text):