Scheme - Lisp (229346)

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

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

Определить, есть ли в списке два подряд идущих списка. посмотрите пожалуйста

Решение задачи: «Scheme»

textual
Листинг программы
(define (task lst)
  (define (check lst prev?)
    (if (null? lst)
        #f
        (let ((curr? (list? (car lst))))
          (or (and prev? curr?)
              (check (cdr lst) curr?)))))
  (check lst #f))
 
(define (test lst)
  (display lst)
  (display " => ")
  (display (task lst))
  (newline))
 
(for-each
 test
 '(()
   (1)
   (1 2)
   ((1) 2)
   (1 (2))
   ((1) (2))
   (1 (2) 3)
   ((1) 2 (3))
   (1 (2) (3))
   ((1) (2) 3)))

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

В коде представлена реализация проверки, является ли список lst палиндромом. Список начинается с определения функции check, которая принимает два аргумента: lst и prev. Если lst — null, то функция возвращает #f. В противном случае в переменную curr записывается значение первого элемента списка lst (car lst), а в переменную prev записывается результат вызова функции check для остатка списка (cdr lst) и значения curr. Функция task вызывает функцию check для списка lst и #f. Далее определена функция test, которая выводит список lst, затем выводит строку « => » и результат выполнения функции task для списка lst. В основной части кода вызывается функция for-each, которая перебирает все элементы списка, представленного в виде списка пар. Каждая пара представляет собой список, который необходимо проверить на палиндром. В качестве действия для каждой пары вызывается функция test. Список, представленный в фигурных скобках, содержит восемь пар, каждая из которых представляет собой список от одного до трёх элементов. После выполнения кода на экран будет выведено: () => #f (1) => #f (1 2) => #t ((1) 2) => #t (1 (2)) => #t ((1) (2)) => #t (1 (2) 3) => #t ((1) 2 (3)) => #t (1 (2) (3)) => #t

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


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

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

10   голосов , оценка 3.5 из 5