Можно ли считать список 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.

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


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

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

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