![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
Bard |
![]() ![]()
Сообщение
#1
|
![]() Учиться, учиться еще раз учиться ![]() ![]() ![]() Группа: Пользователи Сообщений: 158 Пол: Мужской Реальное имя: Яшар Репутация: ![]() ![]() ![]() |
Всем здраво! У меня тут в универе начали СМЛ прходить как ввод в Функциональное программирование. Никак не могу разобраться с этим языком. Надеюсь на вашу помощь, если вообще кто-то разбираеться в этом...
На Паскале или Си я бы код с закрытыми глазами написал, но тут не все так просто... Вот 3 очень простые задачки: 1) Построить функцию removeDupl типа string которая уберет все подряд повторяющиеся элементы заданной строки и оставит только одну из них. подпись функции: val removeDupl = fn : string -> string пример: -removeDupl("aabbacccddd"); val it = "abacd" : string 2) Построить функцию triangle типа int list list которая по заданному N выдаст список списков по которым можно построить треугольник высоты N. подпись функции: val triangle = fn : int -> int list list пример: -triangle(4); val it = [[1],[1,1],[1,1,1],[1,1,1,1]] 3) Построить функцию getNlargest типа int list которая по заданному N и списку чисел выдаст самые большие N чисел из заданного списка чисел. подпись функции: val getNlargest = fn : int -> int list -> int list пример: - getNLargest 7 [1,2,4,3,4,10,2,3,4,32,6,6,4,7]; val it = [32,10,7,6,6,4,4] : int list вот и все. у кого какие идеи? я думаю что во всех задачах такого типа в СМЛ без рекурсии никак. Спасибо заранее... -------------------- Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё |
![]() ![]() |
Bard |
![]()
Сообщение
#2
|
![]() Учиться, учиться еще раз учиться ![]() ![]() ![]() Группа: Пользователи Сообщений: 158 Пол: Мужской Реальное имя: Яшар Репутация: ![]() ![]() ![]() |
Ну помоему интересная тема... я продолжу
![]() Тут такая задачка. У меня с алгоритмизацией все ок только как всегда проблема с грамматикой СМЛ. короче простенькая задачка. Надо отсортировать элементы заданного списка в убывающем или возрастающем порядке в зависимости от запроса. подпись: val it = fn : (''a * ''a -> bool) -> ''a list -> ''a list пример: - sort op< [4,2,6,1,7]; val it = [1,2,4,6,7] : int list - sort op> [4,2,6,1,7]; val it = [7,6,4,2,1] : int list вот мое алго вставочным сортом: Код /*в возрастающем порядке*/ fun f(x,[])=[x] | f (x,xs as h::t)=if (x<h) then x::xs else h::(f(x,t)) val sort=List.foldr f []; /*в убывающем порядке*/ fun f1(x,[])=[x] | f1 (x,xs as h::t)=if (x>h) then x::xs else h::(f1(x,t)) val sort1=List.foldr f1 []; как мне добавить проверку на op> или op< чтобы в зависимости от запроса заработала нужная функция? Сообщение отредактировано: Bard - 9.10.2009 2:23 -------------------- Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё |
![]() ![]() |
![]() |
Текстовая версия | 23.07.2025 11:50 |