![]() |
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 Пол: Мужской Реальное имя: Яшар Репутация: ![]() ![]() ![]() |
Отлично!!! Спасибо огромное volvo! Но пока не идеально работает. Остался последний шаг.
вот код программы: Код fun max [x] = x | max (x::xs) = let val m = max xs in if x > m then x else m end fun exclude(x1, L) = if (L = []) then [] else (if (x1 = hd(L)) then exclude(x1, tl(L)) else hd(L)::exclude(x1, tl(L))); fun f(nil, N) = nil | f(m, 0) = m | f(m, N) = [max(m)]@f(exclude(max(m),m), N-1); нам нужно чтобы он удалял не все вхождения Х а только ту которая проверяться на этом шагy. Сообщение отредактировано: Bard - 30.09.2009 20:14 -------------------- Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё |
![]() ![]() |
![]() |
Текстовая версия | 23.07.2025 12:01 |