Нужна целая задача по нахождению длины строчки - Lisp
Формулировка задачи:
Прочитать трехмерный массив из стандартного потока ввода. Массив может содержать элементы различных типов – целые, вещественные, комплексные числа, строки, символы, списки, другие массивы. Необходимо найти сумму длин строк, не содержащих символов #\a, #\i и #\u. Если строк в массиве нет, результат – 0.
Совсем не понимаю,как делать
Решение задачи: «Нужна целая задача по нахождению длины строчки»
textual
Листинг программы
(defvar arr) (defvar res) (defun task-3 (a) (let ((la (array-dimensions a)) (s 0) (v nil)) (dotimes (i (car la) s) (dotimes (j (cadr la) t) (dotimes (k (caddr la) t) (setf v (aref a i j k)) (print v) (terpri) (when (stringp v) (unless (or (position #\a v) (position #\i v) (position #\u v)) (setf s (+ s (length v)))))))))) (setf arr (read)) #3A(((1 "abcd") ("ijk" "klm") ("xvn" "uxy")) ((1 2) ("zzzzzzzzzz" 4) (5 6))) (setf res (task-3 arr)) (print res)
Объяснение кода листинга программы
В данном коде на языке Lisp выполняется следующая задача: необходимо посчитать количество символов в каждой строке массива. Пояснение к коду:
- Создаются две переменные: arr и res.
- В переменную arr считывается массив.
- Функция task-3 принимает в качестве аргумента массив a.
- В функции создаются три переменные: la, s и v.
- Переменная la содержит размеры массива, а переменные s и v инициализируются нулевыми значениями.
- С помощью цикла dotimes перебираются все индексы массива.
- В каждой итерации цикла для текущего индекса перебираются все символы строки, используя вложенный цикл dotimes.
- Если текущий символ является буквой, то с помощью функции aref извлекается символ по индексу из массива, и его значение присваивается переменной v.
- Значение переменной v выводится на экран, а затем увеличивается значение переменной s на длину текущей строки.
- После окончания второго вложенного цикла проверяется, является ли значение переменной v строкой.
- Если это так, то проверяется наличие в строке символов 'a', 'i' и 'u'.
- Если все три символа отсутствуют в строке, то значение переменной s увеличивается на длину строки.
- После окончания первого вложенного цикла выводится на экран значение переменной res, которое и является ответом на задачу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д