Поиск по разделу «Программирование»

Супермягкий палиндром

Pas.0017. Напишите программу, которая определяет, является ли заданная строка супер мягким палиндромом. Пробелы, точки, запятые, тире не учитываются при определении палиндромности строки.
Сначала см. CS.0016.
Решение.
program SuperLitePalindromeString;
const
    TESTED_STRING = 'Я дядя, я дядя, я дядя, я дядя, я дядя, ...';
var
    left, right : integer;
    testedString, isPalindromeString : string;
    
function isSkippedChar(c : char) : boolean;
var
    skippedChars : string = ' .,—';
    i : integer;
    isSkipped : boolean = false;
begin
    i := 1;
    while (i <= length(skippedChars)) and (not isSkipped) do
    begin
        isSkipped := (c = skippedChars[i]);
        i := i + 1;
    end;
    isSkippedChar := isSkipped;
end;

begin
    testedString := TESTED_STRING;
    left := 1;
    right := length(testedString);
    isPalindromeString := '';

    while (left < right) and (isPalindromeString = '') do
    begin
        if isSkippedChar(testedString[left]) then
            left := left + 1
        else if isSkippedChar(testedString[right]) then
            right := right - 1
        else if upcase(testedString[left]) <>
                        upcase(testedString[right]) then
            isPalindromeString := 'не 'else
        begin
            left := left + 1;
            right := right - 1
        end
    end;
    
    writeln('Строка «' + testedString + '» ');
    write(isPalindromeString + 'является супермягким палиндромом.');
end.
Консоль.
Строка «Я дядя, я дядя, я дядя, я дядя, я дядя, ...» 
является супермягким палиндромом.