Нужна целая задача по нахождению длины строчки - 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, которое и является ответом на задачу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д