Можно ли считать список integer без парсинга? - Lisp
Формулировка задачи:
Нужно считать два списка интов один двуэлементный, второмй максимум 10^7 элементов. Все числа натуральные, максимальный размер числа 10^9. Нужно найти сумму элементов второго списка и вывести количество цыфр в сумме в определенной вторым элементом первого списка системе исчисления.
Есть идея ссумировать все числа, и оставить в списке(втором) только этот атом(сумма) затем перевести его в нужную систему исчисления -> coerce и вывести количество єлементов.
Набросал немного.
(defun split-by-one-space (string) (loop for i = 0 then (1+ j) as j = (position #\Space string :start i) collect (subseq string i j) while j)) ;;(defun arr-sum () ()) (setf parameters (split-by-one-space(read-line))) (setf arr (split-by-one-space(read-line)))
Решение задачи: «Можно ли считать список integer без парсинга?»
textual
Листинг программы
(defun numDig (n p) (if (< n p) 1 (+ 1 (numDig (\ n p) p)))) (print (numDig 64 10))
Объяснение кода листинга программы
В коде определена функция с именем numDig, которая принимает два аргумента — n и p. Функция вызывает саму себя (рекурсивно), пока значение n не станет меньше значения p. При каждом вызове функции значение n увеличивается на единицу. При достижении условия n < p, функция возвращает 1. Если же условие не выполняется, то возвращается результат вычисления (numDig (\ n p) p), где n — это результат вычисления функции (numDig (\ n p) p), а p — это значение переменной p. В конце кода вызывается функция numDig с аргументами 64 и 10, и результат её работы выводится на экран с помощью функции print.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д