Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
Lisp Произведение https://www.cyberforum.ru/ lisp/ thread2357089.html
Выражение для суммы: y(N)=\prod_{i=-2}^{N+1}\prod_{j=2}^{N+3}(i+1/j) (defun y (n) (let ((i -2) ; параметр суммы (j 2) ; параметр произведения (декларация) (prod)) ; аккумулятор для произведения (декларация) ;; функция для выражения, вычисляемого в цикле
Проверка правильности записи числа римскими цифрами Lisp
На форуме предлагались решения, но они неверны, поэтому прошу помощи. На википедии есть регулярка для проверки: ^(M{0,3})(D?C{0,3}|C)(L?X{0,3}|X)(V?I{0,3}|I)$ может быть кто-то сможет переписать ее на лисп? Для представления римских цифр используются символы: I - один, V - пять, X -десять, L - пятьдесят. С - сто, D - пятьсот, М - тысяча. Для изображения числа с помощью римских цифр...
Lisp Где ошибка? (Задача в Scheme) Реализуйте процедуру memoized-factorial для вычисления факториала по рекурсивной формуле с мемоизацией результатов вычислений. Для мемоизации используйте ассоциативный список (словарь), который храните в статической переменной. Использовать для этой цели глобальную переменную запрещается. ГДЕ тут ошибка? (define memoized-factorial (let ((memo '())) (lambda (n) (let ((computed... https://www.cyberforum.ru/ lisp/ thread2356752.html Lisp Строки в Scheme Реализуйте на ЯП Scheme процедуры работы со строками: Предикаты*(string-prefix? a b),*(string-suffix? a b)*и*(string-infix? a b), соответственно, проверяющие, является ли строка*a: началом строки*b, окончанием строки*b*или строка*a*где-либо встречается в строке*b.Процедуру*(string-split str sep), возвращающую список подстрок строки*str, разделенных в строке*str*разделителями*sep, где*sep*—... https://www.cyberforum.ru/ lisp/ thread2356086.html
Lisp Drop и take
На вход drop и take подаётся целое число n и поток(бесконечный список).Функция drop должна выдавать поток без первых n элементов.Функция take должна выдавать список из первых n элементов потока. В случае недостаточного количества элементов в потоке необходимо удалять/возвращать то количество элементов, которое есть в наличии. Добавлено через 30 минут (defun take (n potok) (when (and n...
Lisp Реализовать рекурсивную функцию https://www.cyberforum.ru/ lisp/ thread2355821.html
Даны списки lst1 и lst2. Реализовать функцию, которая удаляет из lst1 все элементы-списки, которые соответствуют тому же множеству, что и lst2. Пример: для списков: lst1=‘(1 (2 2 3) 4 (3 2 3) 5), lst2=‘(3 2 3 2) результатом будет ‘(1 4 5).
Lisp Сумма цифр факториала числа https://www.cyberforum.ru/ lisp/ thread2355749.html
Для заданного числа n находится сумма факториал его цифр 11!(Lisp)
Lisp Удалить из многоуровневого списка все подписки, расположенные на чётных позициях
Дан многоуровневый список. Удалить из него все подписки, расположённые на чётных позициях.
Lisp Вывод чисел из диапазона a и b, которые делятся на 7, но не делятся на 13 В задании дано написать функцию, выводящую из заданного диапазона а и b числа , которые делятся на 7 , но не делятся на 13. По методичке попробовала переделать под свой вариант, и теперь окончательно понимаю, что ничего не понимаю в этом предмете. Буду рада , если дадите конструктивные советы. Возможно мне вообще надо идти каким-то другим путем (LET ( ( X 1) (N 1000) ( COUND 0) (LOOP ... https://www.cyberforum.ru/ lisp/ thread2355580.html Lisp Статическая переменная в Scheme https://www.cyberforum.ru/ lisp/ thread2355337.html
Что такое статическая переменная в Scheme? Каким образом на языке Scheme можно реализовать процедуру со статической переменной?
Lisp Функции make
Опишите функции: make+ , make- , make* , make/ , makeexpt , makesqrt , makesin , makecos , maketan , makeasin , makeacos , makeatan , makeexp и makelog . Каждая из функций этого задания должна конструировать для заданного набора аргументов вызов функции, упомянутой в названии. Каждая из функций должна быть определена для корректного числа параметров. make+ (defun make+ (&rest x) `(+ ,@x))...
Lisp Макросы https://www.cyberforum.ru/ lisp/ thread2354473.html
ПРИМЕР: Определите макрос для цикла while, реализующий итерационный процесс через вызов функции с хвостовой рекурсией. Формат команды для вызова макроса: ( while condition body ) где condition — условие выполнения цикла; body — тело цикла — одно или несколько выражений. Тело цикла должно исполняться пока результат вычисления условия не равен NIL. Результат выполнения макроса — значение...
8 / 6 / 2
Регистрация: 29.11.2017
Сообщений: 206
23.11.2018, 23:26  [ТС] 0

Перевести код функции SquareDigitsSum (Haskell -> Lisp) - Lisp - Ответ 13089509

23.11.2018, 23:26. Показов 831. Ответов 5
Метки (Все метки)

Ответ

Работа программы то правильная,но я должен получать список
take и drop я описал,но всё также не работает:


Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(defun drop (n stream)
  (if (= n 0) stream
      (drop (- n 1) (tail stream))))
 ; заводим вспомогательную функцию take, которая берет из потока первые n 
 ; элементов
(defun take (n stream)
  (if (= n 0) *the-empty-stream*
      (cons (head stream) (take (- n 1) (tail stream)))))
 
(defun int-digits (n &optional ac)
  (if (zerop n) ac
      (int-digits (truncate n 10) (cons (rem n 10) ac))))
 
(defun square-digits-sum  (n)
  (reduce #'+ (int-digits (* n n))))
 
(print (take 5 (square-digits-sum 200)))
(print (take 10 (square-digits-sum 136)))
(print (take 3 (square-digits-sum 155)))
Лучше даже так скинуть

Добавлено через 26 секунд

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
(defmacro delay (expr)
  `(cons NIL (lambda () ,expr)))
 
;; функция вычисления обещания  
(defun force (delay)
  (if (car delay) 
      (cdr delay)
      (progn (setf (car delay) T)
             (setf (cdr delay) (funcall (cdr delay))))))
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; макрос для создания потока из головы a и хвоста str
;; результат вычисления str - поток
(defmacro cons-stream (a str)
  `(cons ,a (delay ,str)))      
 
;; функция извлечения головы потока (вместо car-stream)
(defun head (stream)
  (car stream))
 
;; функция извлечения хвоста потока (вместо cdr-stream)
(defun tail (stream)
  (force (cdr stream)))
 
;; функция проверки потока на пустоту
(defun empty-stream-p (stream)
  (null stream))  
 
;; определение глобальной переменной - пустой поток
(defvar *the-empty-stream* '())  
 
;; функция фильтрации потока stream с помощью предиката p
(defun filter-stream (p stream)
  (cond ((empty-stream-p stream) *the-empty-stream*)
        ((funcall p (head stream)) 
         (cons-stream (head stream) 
                      (filter-stream p (tail stream))))
        (T (filter-stream p (tail stream)))))
 
(defun drop (n stream)
  (if (= n 0) stream
      (drop (- n 1) (tail stream))))
 ; заводим вспомогательную функцию take, которая берет из потока первые n 
 ; элементов
(defun take (n stream)
  (if (= n 0) *the-empty-stream*
      (cons (head stream) (take (- n 1) (tail stream)))))
 
(defvar *ones*) ; объявление переменной
(setq *ones* (cons-stream 1 *ones*)) 
 
;; функция, выдающая поток целых чисел, начинающийся с n
(defun integers-starting-from (n)
  (cons-stream n (integers-starting-from (+ n 1))))
  
;; функция, получающая поток простых чисел из потока stream при условии,
;; что stream - возрастающая последовательность целых чисел в которой
;; головной элемент - простое число и в stream нет чисел, у которых
;; делителями являются числа меньшие головного элемента (кроме единицы).
(defun sieve (stream)
  (cons-stream
    (head stream)
    (sieve 
      (filter-stream
        (lambda (x) (not (divisible-p x (head stream))))
        (tail stream)))))
 
(defun int-digits (n &optional ac)
  (if (zerop n) ac
      (int-digits (truncate n 10) (cons (rem n 10) ac))))
 
(defun square-digits-sum  (n)
  (reduce #'+ (int-digits (* n n))))
 
(print (take 5 (square-digits-sum 200)))
(print (take 10 (square-digits-sum 136)))
(print (take 3 (square-digits-sum 155)))
Лучше даже так скинуть

Вернуться к обсуждению:
Перевести код функции SquareDigitsSum (Haskell -> Lisp) Lisp
0
Заказать работу у эксперта

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2018, 23:26
Готовые ответы и решения:

Переписать код с Haskell на Lisp
Необходимо переписать имеющийся код на Haskell'е на Lisp. Помогите пожалуйста! codeEvRod n |...

Решил перевести код с Pascal на Lisp. Алгоритм подсчета счастливых билетов
Автобусные билеты нумеруются шестизначными числами от 000000 до 999999. Напишите программу, которая...

Совместимость Lisp и Haskell с С++
Привет всем. Известно что языки Hasskel и Lisp на сегодня не так популярны как С++ или PHP....

Помогите перевести с Haskell на другой язык
День добрый, Если не сложно, помогите перевести данный codegolf код на любой другой язык...

5
23.11.2018, 23:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2018, 23:26
Помогаю со студенческими работами здесь

Перевести код из функции в шаблоны функции
Короче, у меня есть прога написанная с помощью функций, теперь мне нужно написать её с помощью...

Перевести код математической функции с паскаля
Здравствуйте, есть функция написана в паскале: function g (a,b :real) : real begin ...

Перевести код математической функции с паскаля В C++ Builder
Есть программа в паскале нужно переделать в С++ Builder, помогите, заранее спасибо. var a :...

Перевести пример на язык LISP
Помогите перевести пример на язык LISP

Функция squareDigitsSum
squareDigitsSum :: Integral a => a -> ,определяющую для заданного целого x последовательность ,где...

Как перевести из Lisp на Prolog или решение задач
Всем добрый вечер. К сожалению, в Prolog не работал, нужно перевести из Lisp в Prolog, либо сделать...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru