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

Написать программу замены элементов списков первого уровня на элементы списка самого низкого уровня в цикл

17.01.2015, 02:34. Показов 2373. Ответов 42
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пажалуйста помогите с задачкой
Пример:
(((a)) (b) (((c) e)) (((d)))) -> ((c) (d) (c) (d))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2015, 02:34
Ответы с готовыми решениями:

Вывод цветного списка и таблицы из элементов первого второго и третьего уровня
Добрый вечер! Нужен пример решения задачи. 1. Создать структуру XML файла "компьютерная...

Формирование списка, состоящего из списка самого низшего уровня
Написать программу формирования списка, состоящего из списков самого низшего уровня для заданного...

Как отсортировать элементы 1 уровня многомерного массива по значениям 2 уровня?
Доброе время суток. Есть массив фруктов, у каждого элемента есть название и цена. $arr = array(...

Программные извраты на СИ (низкого уровня)
Добрый день. Хотел спросить мнения ПРОГРАМИРУЮЩИХ людей, как Вы относитесь к выражения подобного...

42
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
17.01.2015, 08:56 2
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(defun max-depth (w)
  (cond ((null w) 0)
        ((atom (car w)) (max-depth (cdr w)))
        ((max (1+ (max-depth (car w))) (max-depth (cdr w)))))) 
 
(defun dive-elms (n w &aux (a (car w)) (d (cdr w)))
   (cond ((null w) nil)
         ((= n 0) w)
         ((atom a) (dive-elms n d))
         ((nconc (dive-elms (1- n) a) (dive-elms n d)))))
 
(defun exchange (w v &optional (z v))
  (cond ((null w) nil)
        ((null z) (exchange w v v))
        ((cons (car z)(exchange (cdr w) v (cdr z))))))
 
(defun elm-deep-atoms (w)
  (mapcar #'list (exchange w (dive-elms (max-depth w) w))))
 
> (elm-deep-atoms '(((a)) (b) (((c) e)) (((d)))))
((C) (D) (C) (D))
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36858 / 20415 / 4237
Регистрация: 12.02.2012
Сообщений: 33,779
Записей в блоге: 13
17.01.2015, 09:22 3
_sg, как Вы поняли это условие? И при чем здесь цикл?
0
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
17.01.2015, 09:34 4
Catstail, в цикле встают атомы, поднятые с нижнего уровня, как-то так.

Добавлено через 8 минут
Элементы ((a)), b, ((c) e), ((d)) заменяются на элементы списков самого низкого уровня - это атомы: с, d и снова c, d (цикл).
2
Модератор
Эксперт функциональных языков программированияЭксперт Python
36858 / 20415 / 4237
Регистрация: 12.02.2012
Сообщений: 33,779
Записей в блоге: 13
17.01.2015, 10:06 5
Еще вариант:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(defun a-lv (lst &optional (n 0) (acc nil))
  (cond ((null lst) acc)
        ((atom (car lst)) (a-lv (cdr lst) n (cons (list (car lst) n) acc)))
        (t (let ((aa (a-lv (car lst) (+ n 1) nil)))
                (a-lv (cdr lst) n (cons (list (car lst) n) (append aa acc)))))))
 
(defun task (lst)
  (let* ((res nil)
         (n (length lst))
         (w (a-lv lst))
         (m (apply 'max (mapcar 'cadr w)))
         (v (remove-if #'(lambda (x) (/= m (cadr x))) w))
         (r (mapcar 'car v))
         (m (length r)))
    (dotimes (i n res)
      (push (list (nth (mod i m) r)) res))))
 
(task '(((a)) (b) (((c) e)) (((d))) ))
 
==> ((c) (d) (c) (d))
1
3 / 3 / 0
Регистрация: 21.06.2013
Сообщений: 62
18.01.2015, 20:05  [ТС] 6
Catstail, второй вариант не работает почему то
0
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
18.01.2015, 22:59 7
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
;; racket-lang.org
(define (foo lst)
  (define (mark-depth lst (counter 0))
    (if (and (list? lst) (not (null? lst)))
        (flatten `(,(mark-depth (car lst) (add1 counter)) ,(mark-depth (cdr lst))))
        (cons counter lst)))
  (define (select lst (max-depth 0) (acc null))
    (cond [(null? lst) (reverse acc)]
          [(number? (car lst))
           (let ((n (car lst)))
             (select (cdr lst)
                     (if (< max-depth n) n max-depth)
                     (cond [(< max-depth n) `(,(cadr lst))] 
                           [(= max-depth n) (cons (cadr lst) acc)]
                           [else acc])))]
          [(select (cdr lst) max-depth acc)]))
  (define (tumble len lst pattern)
    (cond [(= len 0) null]
          [(null? lst) (tumble len pattern pattern)]
          [(cons (car lst) (tumble (sub1 len) (cdr lst) pattern))]))
  (let ((s (select (mark-depth lst))))
    (map list (tumble (length lst) s s))))
 
(foo '(((a)) (b) (((c) e)) (((d)))))
;'((c) (d) (c) (d))
0
3 / 3 / 0
Регистрация: 21.06.2013
Сообщений: 62
18.01.2015, 23:39  [ТС] 8
эта тоже не работает(
0
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
19.01.2015, 00:05 9
главное чтобы голова работала
0
3 / 3 / 0
Регистрация: 21.06.2013
Сообщений: 62
19.01.2015, 00:06  [ТС] 10
ха ха как смешно
0
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
19.01.2015, 00:07 11
работает... не работает... какая Вам разница?
0
3 / 3 / 0
Регистрация: 21.06.2013
Сообщений: 62
19.01.2015, 00:11  [ТС] 12
Если бы не было разницы ,наверное не переживал бы ,как вы думаете
0
helter
19.01.2015, 06:21
  #13

Не по теме:

Цитата Сообщение от Алексей37 Посмотреть сообщение
Если бы не было разницы ,наверное не переживал бы ,как вы думаете
Хорошие, лисповские запятые. :good:

0
3 / 3 / 0
Регистрация: 21.06.2013
Сообщений: 62
19.01.2015, 08:11  [ТС] 14
Цитата Сообщение от helter Посмотреть сообщение
Хорошие, лисповские запятые.
тут не о запятых идёт речь!
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36858 / 20415 / 4237
Регистрация: 12.02.2012
Сообщений: 33,779
Записей в блоге: 13
19.01.2015, 08:32 15
Цитата Сообщение от Алексей37 Посмотреть сообщение
второй вариант не работает почему то
- да все работает:
Миниатюры
Написать программу  замены элементов списков первого уровня на элементы списка самого низкого уровня  в цикл  
2
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
19.01.2015, 14:09 16
Цитата Сообщение от Алексей37 Посмотреть сообщение
второй вариант не работает почему то
Алексей37, Что делали, по шагам, какая функция не работает? Скопируйте сюда текст сообщения об ошибках.
1
3 / 3 / 0
Регистрация: 21.06.2013
Сообщений: 62
19.01.2015, 22:00  [ТС] 17
Цитата Сообщение от _sg Посмотреть сообщение
Алексей37, Что делали, по шагам, какая функция не работает? Скопируйте сюда текст сообщения об ошибках.
Извиняюсь работает только не могу загрузить её через указанный путь,как сюда загрузить скрин подскажите пожалуйста
0
3 / 3 / 0
Регистрация: 21.06.2013
Сообщений: 62
19.01.2015, 22:11  [ТС] 18
вот разобрался может подскажите в чем причина
Миниатюры
Написать программу  замены элементов списков первого уровня на элементы списка самого низкого уровня  в цикл  
0
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
19.01.2015, 22:36 19
Catstail, вот что значит не комментировать результат выполнения программы. Они же его вводят!
0
3 / 3 / 0
Регистрация: 21.06.2013
Сообщений: 62
19.01.2015, 22:55  [ТС] 20
Цитата Сообщение от castorsky Посмотреть сообщение
Catstail, вот что значит не комментировать результат выполнения программы. Они же его вводят!
что то не так?
1
19.01.2015, 22:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.01.2015, 22:55
Помогаю со студенческими работами здесь

Обязательно ли нужно знать языки низкого уровня?
Добрый день! Подскажите, чтобы хорошо программировать нужно ли знать язык низкого уровня....

Си является языком программирования низкого уровня или высокого?
у меня вопрос , си является низкий уровень или высокий уровень языка программирования ?

Clojure Написать функцию, для замены элементов списка y на соответствующие элементы списка x в списке w
Здравствуйте. Помогите написать функцию, осуществляющую замену элементов списка y на...

Количество дочерних элементов первого уровня
Здравствуйте! Допустим у нас имеется контейнер, с набором дочерних элементов: &lt;div id='main'&gt;...


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

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

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