Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lisp
Войти
Регистрация
Восстановить пароль
 
nika-violet
0 / 0 / 0
Регистрация: 10.09.2016
Сообщений: 24
1

Определить максимальное количество идущих подряд атомов

08.10.2016, 16:35. Просмотров 263. Ответов 3
Метки нет (Все метки)

пытаюсь написать программу, которая для списка определяет максимальное количество идущих подряд атомов.

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
(define (max a b) (cond ((> a b) a b)))
 
(define (one-elem-list l) (and (list? l) (and (not (null? l)) (null? (cdr l)))))
 
(define (f l)
    (define (go a b l)
        (cond ((null? l) (max a b)
              (one-elem-list (car l)) (go a (+ 1 b) (cdr l))
              (go (max a b) 0 (cdr l)))))
    (go 0 0 l))
 
(display (f '(1 1 1)))
(display (f '(1 (1) (1) 1 (1) ((1 1 1)) (1) (1) (1 1) (1) (1) 1 (1))))
в http://ideone.com/gMrzjU говорит что успешно, но результат неизвестен((( подскажите как его увидеть, где я не права?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2016, 16:35
Ответы с готовыми решениями:

Для заданного списка определить максимальное количество идущих подряд атомов
Для заданного списка определить максимальное количество идущих подряд атомов. помогите пожалуйста

Определить максимальное количество идущих подряд списков
Для заданного списка определить максимальное количество идущих подряд списков. Добавлено через...

Для заданного списка определить максимальное количество идущих подряд нулей
Для заданного списка определить максимальное количество идущих подряд нулей, без использование...

Для заданного списка определить максимальное количество идущих подряд списков из одного элемента
Для заданного списка определить максимальное количество идущих подряд списков из одного элемента,...

Функция: найти количество троек подряд идущих одинаковых элементов списка
написать функцию, вычисляющую количество троек подряд идущих элементов числового списка, в каждой...

3
Catstail
Модератор
23880 / 11928 / 2104
Регистрация: 12.02.2012
Сообщений: 19,398
08.10.2016, 18:10 2
В stderr у тебя выводится нечто неопределенное. Вот рабочий код:

Lisp
1
2
3
4
5
6
7
8
(define (task lst)
  (define (count x c m)
     (cond ((null? x) (if (> c m) c m))
           ((list? (car x)) (if (> c m) (count (cdr x) 0 c) (count (cdr x) 0 m)))
           (#t (count (cdr x) (+ c 1) m))))
  (count lst 0 0))
  
  (display (task '(1 2 (1) (2) (3) 4 5 6)))
http://ideone.com/uotGn9
0
nika-violet
0 / 0 / 0
Регистрация: 10.09.2016
Сообщений: 24
08.10.2016, 19:29  [ТС] 3
как я понимаю если задать (display (task '(1 2 3))), вроде должно быть 1? или я не до конца понимаю, а показывает 3.
0
korvin_
2235 / 1734 / 328
Регистрация: 28.04.2012
Сообщений: 6,146
08.10.2016, 20:05 4
Цитата Сообщение от nika-violet Посмотреть сообщение
где я не права?
В cond.

Цитата Сообщение от nika-violet Посмотреть сообщение
подскажите как его увидеть
Прочитать документацию по языку. В частности описание синтаксиса и семантики cond.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2016, 20:05

Определить, есть ли в списке два подряд идущих списка
Определить, есть ли в списке два подряд идущих списка. посмотрите пожалуйста

Определить, есть ли в списке два подряд идущих пустых списка
Определить, есть ли в списке два подряд идущих пустых списка. Использование встроенных функций...

Определить максимальное количество дочерних узлов в дереве
Добрый вечер. Требуется написать программу, определяющую максимальное количество дочерних узлов в...


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

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

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