Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
44 / 33 / 14
Регистрация: 27.04.2012
Сообщений: 153
1

Даны два списка, построить третий по условию

20.05.2012, 21:15. Показов 937. Ответов 3
Метки нет (Все метки)

Ребята, помогите, пожалуйста. В лиспе не понимаю совсем.

Даны списки L1 и L2 элементов типа char. Построить список L3 по следующему правилу:
- если L1 является префиксом L2, то получить L3, исключив этот префикс и добавив его в качестве суффикса;
- в противном случае получить L3, присоединив к L1 список L2.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2012, 21:15
Ответы с готовыми решениями:

Даны два списка, построить третий по условию
Ребята, выручайте. Пролог для меня тёмный лес. Даны списки L1 и L2 элементов типа char....

Даны два списка, построить третий список. TurboProlog
Здравствуйте.Помогите пожалуйста с заданием! Нужно написать на TurboProlog. Даны два числовых...

Даны два списка. Каждый элемент первого списка ассоциативно связан соответствующим элементом второго списка
Помогите пожалуйста Даны два списка: список студентов и список их успеваемости. Каждый элемент...

Объединить два списка одинаковой длины в третий так, чтобы вначале списка были элементы с нечётных позиций первог
Объединить два списка одинаковой длины в третий так, чтобы вначале списка были элементы с нечётных...

3
Модератор
Эксперт Python
28783 / 15610 / 3100
Регистрация: 12.02.2012
Сообщений: 25,612
Записей в блоге: 4
20.05.2012, 22:08 2
Решение для HomeLisp:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(defun slice (list n l) ;; взять из списка list с позиции "n" "l" элементов
   (let ((res nil))
        (WHEN (> N 1) (dotimes (i (- n 1) t) (setq list (cdr list))))
        (dotimes (i l res) (setq res (append res (list (car list)))) (setq list (cdr list)) )))
 
(defun task (l1 l2) ;; собственно задача
  (let ((len1 (length l1))
        (len2 (length l2)))
       (if (equal (slice l2 1 len1) l1) (append (slice l2 (+ len1 1) (- len2 len1)) l1)
                  (append l1 l2)))) 
 
 
 
(task '(1 2 3) '(1 2 3 4))
 
==> (4 1 2 3)
 
(task '(1 2 3) '(a b c))
 
==> (1 2 3 a b c)
0
44 / 33 / 14
Регистрация: 27.04.2012
Сообщений: 153
20.05.2012, 22:59  [ТС] 3
Спасибо огромное!
0
4529 / 4235 / 359
Регистрация: 12.05.2012
Сообщений: 2,978
20.05.2012, 23:46 4
как вариант:
Lisp
1
2
3
4
5
(defun shuffle (v w &aux (n (mismatch v w)))
  (if (zerop n) (nconc v w) (nconc (subseq w n) v)))
 
> (shuffle '(1 2 3) '(1 2 3 4))
(4 1 2 3)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2012, 23:46

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Даны два линейных массива А(10)и В(10). Сформируйте третий массив С(10)
Даны два линейных массива А(10)и В(10). Сформируйте третий массив С(10),элементы которого равны...

Даны массивы два массива. Получить третий массив
Здравствуйте. Прошу помощи у вас. Посмотрите, правильно ли я составил программу? Подправьте, если...

Даны два массива одного размера. Получить третий массив
Даны два массива одного размера. Получить третий массив, каждый элемент которого равен: а) сумме...

Даны два списка. Каждый элемент первого списка ассоциативно связан
Помогите пожалуйста Даны два списка: список студентов и список их успеваемости. Каждый элемент...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.