Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Haskell - поиск первого элемента, большего соседей

70K
09 мая 2011 года
SirHamlet
1 / / 09.05.2011
Добрый день! Есть задание, не могу разобраться, а завтра контрольная ((

Создайте код, который решает следующую задачу:

Ищет в списке первый элемент, больший своих соседей (предыдущего и следующего). Для того, чтобы сообщить о неудаче (в списке нет такого элемента), используйте тип Maybe.
2.1K
10 мая 2011 года
Norgat
452 / / 12.08.2009
Синтаксиса Хаскеля не помню, вот решение на F# (Some и None - это эквивалент Maybe), переписать на Хаскеле не составит труда (если учил его хоть чуть чуть):

Код:
let rec findMinElMin lst =
  // сравнить переданный список с шаблонами
  match lst with

    // если в нём 3 и более элемента
    | e1 :: e2 :: e3 :: tail ->

        // сравнить 2й элемент с первым и третьим, если он больше - возвратить успех и e2
        if e2 > e1 && e2 > e3 then Some e2

        // если нет - искать дальше
        else findMinElMin (e2::e3::tail)

    // если в списке меньше трёх элементов - вернуть пустой ответ  
    | _ -> None
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог