0 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 23
1

Добавление элемента с максимальным значением после минимального элемента (Allegro Lisp)

08.05.2013, 19:35. Показов 855. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите сделать 1 программку максимально просто
-добавление элемента с максимальным значением после минимального элемента;

Заранее благодарен

Добавлено через 27 минут
забыл написать, что нужно для allegro lisp
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.05.2013, 19:35
Ответы с готовыми решениями:

Замена значений элементов с нечетными номерами на значение минимального положительного элемента (Allegro Lisp)
Помогите сделать 1 программку максимально просто для allegro lisp -замена значений элементов с...

Вывод минимального номера строки и столбца с максимальным значением элемента массива
Есть массив, из которого выводиться максимальный элемент, при этом, если элемент в этом массиве...

Вставить в массив элемент перед первым элементом с максимальным значением и после первого элемента минимальным значением
Кто разбирается в С#? Можете написать код Вставить в массив элемент с заданным значением перед...

Заменить все элементы массива с максимальным значением на сумму цифр минимального элемента
Дан целочисленный массив А. Заменить все элементы массива с максимальным значением на сумму цифр...

5
Модератор
Эксперт функциональных языков программированияЭксперт Python
35497 / 19973 / 4184
Регистрация: 12.02.2012
Сообщений: 33,136
Записей в блоге: 13
08.05.2013, 19:53 2
Первая (при условии, что минимум единственный):

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(defun task-1 (lst)
 (let* ((max (apply 'max lst))
        (min (apply 'min lst))
        (pmi (position min lst)))
   (if (= pmi (1- (length lst)))
       (append lst (list max))
       (append (append (subseq lst 0 (1+ pmi)) (list max)) (subseq lst (1+ pmi)))))) 
 
==> task-1
 
(task-1 '(4 5 9 1 -5 7))
 
==> (4 5 9 1 -5 9 7)
 
(task-1 '(-14 5 9 1 -5 7))
 
==> (-14 9 5 9 1 -5 7)
 
(task-1 '(-14 5 9 1 -5 -77))
 
==> (-14 5 9 1 -5 -77 9)
Добавлено через 8 минут
Вторая:

Lisp
1
2
3
4
5
6
7
8
9
10
11
(defun task-2 (lst)
  (let ((min (apply 'min (remove-if #'(lambda (x) (<= x 0)) lst)))
        (res nil))
   (dolist (i lst (reverse res))
      (if (evenp (length res)) (push min res) (push i res)))))
 
==> task-2
 
(task-2 '(-1 2 3 -8 12 -4))
 
==> (2 2 2 -8 2 -4)
Добавлено через 5 минут
Третья:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(defun task-3 (lst &optional (n (length lst)) (l 0))
   (cond ((>= l n) lst)
         (t (task-3 (cdr lst) (1- n) (1+ l)))))
 
==> task-3
 
(task-3 '(a b c d e))
 
==> (d e)
 
(task-3 '(a b d e))
 
==> (d e)
 
(task-3 '(a b d e f g))
 
==> (e f g)
0
0 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 23
08.05.2013, 19:55  [ТС] 3
Большое спасибо, ваша помощь неоценима
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
35497 / 19973 / 4184
Регистрация: 12.02.2012
Сообщений: 33,136
Записей в блоге: 13
08.05.2013, 19:59 4
Вот вариант первой задачи (когда минимум встречается много раз):

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defun task-1 (lst)
 (let* ((max (apply 'max lst))
        (min (apply 'min lst))
        (res nil)) 
    (dolist (i lst (reverse res))
        (push i res)
        (when (= i min) (push max res))))) 
 
 
==> task-1
 
(task-1 '(1 2 3 1 2 3 1 2 3))
 
==> (1 3 2 3 1 3 2 3 1 3 2 3)
1
1049 / 943 / 107
Регистрация: 04.11.2012
Сообщений: 972
Записей в блоге: 3
08.05.2013, 22:40 5
Просто, чтоб развеяться.
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
;Вставить после ключа.
(defun insert-after (v k seq)
  (cond
    ((null seq) nil)
    ((equal (car seq) k) (cons k (cons v (insert-after v k (cdr seq)))))
    (t (cons (car seq) (insert-after v k (cdr seq))))))
 
> (insert-after 's 'b '(a b c b e))
 
==> (a b s c b s e)
 
;Решение.
(defun max-after-min (lst)
  (if lst
    (insert-after (apply #'max lst) (apply #'min lst) lst)))
 
> (max-after-min '(7 5 -9 2 4 8 -3 -6 -9 0))
 
==> (7 5 -9 8 2 4 8 -3 -6 -9 8 0)
Добавлено через 14 минут
Lisp
1
2
3
4
5
6
7
8
(defun max-after-min (seq &optional (v (apply #'max seq)) (k (apply #'min seq)))
  (cond ((null seq) nil)
        ((equal (car seq) k) (cons k (cons v (max-after-min (cdr seq) v k))))
        (t (cons (car seq) (max-after-min (cdr seq) v k)))))
 
> (max-after-min '(0 1 2 5 1 2 3 0 1 2 3 0 4))
 
==> (0 5 1 2 5 1 2 3 0 5 1 2 3 0 5 4)
1
4693 / 4389 / 379
Регистрация: 12.05.2012
Сообщений: 3,091
10.05.2013, 00:44 6
Lisp
1
2
3
4
5
6
7
8
9
10
(defun nx-insert (w)
  (insert w (reduce #'min w) (reduce #'max w)))
 
(defun insert (w n x)
  (cond ((null w) nil)
        ((eq (car w) n) (cons n (cons x (insert (cdr w) n x))))
        ((cons (car w) (insert (cdr w) n x)))))
 
> (nx-insert '(0 1 2 5 1 2 3 0 1 2 3 0 4))
(0 5 1 2 5 1 2 3 0 5 1 2 3 0 5 4)
Добавлено через 1 минуту
Lisp
1
2
3
4
5
6
7
(defun nx-insert (w &optional (n (reduce #'min w)) (x (reduce #'max w)))
  (cond ((null w) nil)
        ((eq (car w) n) (cons n (cons x (nx-insert (cdr w) n x))))
        ((cons (car w) (nx-insert (cdr w) n x)))))
 
> (nx-insert '(0 1 2 5 1 2 3 0 1 2 3 0 4))
(0 5 1 2 5 1 2 3 0 5 1 2 3 0 5 4)
1
10.05.2013, 00:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.05.2013, 00:44
Помогаю со студенческими работами здесь

Заменить все элементы массива с максимальным значением на сумму цифр минимального элемента
Дан массив A.Заменить все элементы массива с максимальным значением на сумму цифр минимального...

В двух последовательностях замените все элементы, следующие за элементом с максимальным значением, на значение минимального элемента
пусть дан фрагмент программы: var S: set of char; c,d: char присвойте переменной перечисленные ниже...

Удалить из массива элемент, расположенный после первого элемента с максимальным значением
Удалить из массива элемент, расположенный после первого элемента с максимальным значением, и...

Включить после каждого элемента списка с максимальным значением его копию
Дан список из n целых чисел а1,а2,....,аn. Включить после каждого элемента с максимальным значением...


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

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

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