Проверить слово на палиндром и почти палиндром - Lisp

Узнай цену своей работы

Формулировка задачи:

Нужно проверить слово на палиндром и почти палиндром. например: КАЗАК - палиндром МЕЧОМ - почти палиндром

Решение задачи: «Проверить слово на палиндром и почти палиндром»

textual
Листинг программы
: palindrome-distance ( str -- n ) halves reverse swap dup length [ = [ 1 - ] when ] 2reduce ;
 
{ "kazak" "me4om" "arozaupalanalapuazora" "cyberforum" } [ palindrome-distance ] each
 
--- Data stack:
0
1
0
5

Объяснение кода листинга программы

  1. Функция palindrome-distance принимает строку в качестве аргумента и возвращает целое число.
  2. Внутри функции создаются следующие переменные:
    • halves содержит половину строки (первую половину).
    • reversed содержит строку, перевернутую относительно halves.
    • swap содержит две половины строки, перевернутые относительно друг друга.
    • dup содержит исходную строку.
    • length содержит длину строки.
  3. С помощью цикла when проверяется, является ли строка палиндромом:
    • Если строка палиндром, то в цикл when помещается 1, иначе 0.
  4. Переменная n уменьшается на 1 в каждой итерации цикла when, пока не станет равной 0.
  5. В конце функции возвращается значение n.
  6. В примере кода вызывается функция palindrome-distance для списка строк:
    • kazak
    • me4om
    • arozaupalanalapuazora
    • cyberforum
  7. Каждой строке из списка присваивается значение, возвращаемое функцией palindrome-distance.
  8. Значения помещаются в стек данных.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.5 из 5
Похожие ответы