Ready to begin
No records have been processed. Start with Next step.

Follow one occurrence at a time. Choose another input to test empty lists, repeated IDs and different parameters.
Ready
No records have been processed. Start with Next step.
Predict the next change, then step through the list. The original course records remain unchanged.
L = explode(lowercase(Word))
while length(L) >= 2:
if first(L) != last(L):
return false
L = init(rest(L))
return trueA palindrome reads the same forwards and backwards. If the first and last characters differ, reject immediately. If they agree, remove BOTH and test the shorter middle. For madam, compare m/m, then a/a, leaving d. For noon, compare n/n, then o/o, leaving an empty list.
The guard ensures init(rest(L)) is applied while at least two characters are available. Zero or one remaining character has no mismatched endpoints, so returns true. Here we lowercase before comparing; otherwise Madam and madam would differ in a literal case-sensitive test. We do not remove punctuation or spaces in this demonstration.
The loop shrinks by two characters on every successful step. That is its progress argument. Shrinking by one would perform a different algorithm; failing to update L would repeat the same comparison forever.
Why is one matching endpoint pair not enough?
The interior may still fail. abca has equal outer a characters, but the remaining b and c do not match.
How many endpoint comparisons does madam need?
Two: m with m, then a with a. The final single d requires no comparison.
What does this algorithm return for an empty input?
True under the stated sequence convention: there are no unequal mirrored positions. The loop never runs.