|
2 / 2 / 0
Регистрация: 06.11.2011
Сообщений: 28
|
||||||
Функции высшего порядка16.12.2016, 21:09. Показов 1555. Ответов 14
Метки нет (Все метки)
Здравствуйте, нужна помощь с написанием программы. Как-то не смог нормально разобраться с функциями высшего порядка, а нужно написать программу именно используя их.
Задание: Написать программу, которая удаляет повторяющиеся элементы в матрице с использованием функций высшего порядка. Я вроде как сделал программу, но без использования функций высшего порядка. Прошу помощи у людей, которые знают по больше меня и им не сложно будет помочь. Вот мой листинг:
0
|
||||||
| 16.12.2016, 21:09 | |
|
Ответы с готовыми решениями:
14
Функции высшего порядка Функции высшего порядка |
|
Антикодер
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
|
|||||||||||
| 17.12.2016, 01:44 | |||||||||||
|
Начальный уровень понимания функций высшего порядка (ФВП, HOF) можно получить у Липовача:
LYAH: HOF Более продвинутый у Холомьёва: Haskell:ФВП Но лучше читать сначала эти книги... Вам точно для матрицы нужно? У вас же сделано для списка, это совсем другое задание... Общая схема такова: 1) Попрактиковаться с использованием ФВП, которые применяются к спискам, их можно найти по сигнатуре. 2) Взять ФВП, которая подходит для решения этой задачи (например: свёртка списка(fold), композиция(.), комбинатор неподвижной точки(fix) и т п); 3) Подумать как удалить одинаковые элементы с помощью ФВП; 4) Если нужно, написать свою реализацию ФВП, вместо ФВП из Prelude. Вместо функции element можно использовать Data.List (elem). И чтобы удалять повторяющееся элементы в конце списка нужно исправить insert:
Функцию set лучше переименовать... Я пока не буду показывать своё решение, так как это может вам навредить, и подожду пока другие участники форума опубликуют.
2
|
|||||||||||
|
Супер-модератор
|
||||||
| 17.12.2016, 12:36 | ||||||
|
Удалять повторяющиеся элементы в матрице - операция, лишенная смысла. Удалять можно из списка списков.
Добавлено через 8 минут Вот удаление повторений в каждой строке:
3
|
||||||
|
Модератор
|
||||||
| 17.12.2016, 12:45 | ||||||
|
Если из списка списков, то я сочинил такую функцию, без явных рекурсивных вызовов, зато использующую map,filter,fix,until - каждую по разу. Ну ещё (.) пару раз. Но я её не выкладываю, дабы не мешать педагогическому процессу XRuZzz-а. Может ТС проникся и сам хочет решить (что всячески приветствуется). Или ТС нужна не такая ф-ия :
2
|
||||||
|
2 / 2 / 0
Регистрация: 06.11.2011
Сообщений: 28
|
|
| 17.12.2016, 15:34 [ТС] | |
|
Большое спасибо всем за помощь. Особенно XRuZzz за полезную информацию, а Catstail за готовое решение.
0
|
|
|
Модератор
|
|
| 18.12.2016, 08:23 | |
|
Не по теме: Первый раз мне плюсов наставили за то что я НЕ выложил свой код. :D Добавлено через 5 часов 21 минуту Не по теме: Я тут, а потом тут озаботился исправлением подсветки HASKELL на форуме, что бы она не выглядела как, к примеру, в этой теме. В отдельную тему это не выделяю, т.к. получились бы две схожие темы в разделе php и тут, что противу правил. В общем, кто что думает, может тут и php знающие есть? Или, может я что то упускаю?
2
|
|
|
Супер-модератор
|
||||||
| 18.12.2016, 09:07 | ||||||
|
XRuZzz, лучше использовать правую свертку (: быстрее, чем ++)
KolodeznyDiver, мне кажется, что реакция на одиночный апостроф в раскраске не совсем корректна.
3
|
||||||
| 18.12.2016, 10:44 | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 06.11.2011
Сообщений: 28
|
||||||||||||||||
| 18.12.2016, 14:59 [ТС] | ||||||||||||||||
|
Сделал как смог программ (просто нельзя использовать готовые функции, нужно использовать свои). Вот что получилось:
0
|
||||||||||||||||
|
Модератор
|
||||||
| 18.12.2016, 15:23 | ||||||
|
Конкретно эта ошибка фиксится так
Что же у вас за комилятор и почему вы именно им должны пользоваться? Вот, хотя бы online-комилятор. В сообщении "prog: prog.hs:16:1-41: Non-exhaustive patterns in function set_matr", думаю, не спутали бы где ошибка.
2
|
||||||
|
2 / 2 / 0
Регистрация: 06.11.2011
Сообщений: 28
|
||||||
| 18.12.2016, 16:54 [ТС] | ||||||
|
Hugs98, требование преподавателя.
Добавлено через 11 минут Спасибо всем за помощь. Вот итоговый код:
Добавлено через 8 минут KolodeznyDiver через онлайн-компилятор все работает.
2
|
||||||
|
Модератор
|
||||||
| 18.12.2016, 17:28 | ||||||
|
В функции set_matr избыточно жёсткие ограничения типов аргументов. Откомпилируется если задать и так
Не по теме: В этом виноват такой подход к обучению - велостроительный. Это как если бы врачей учили вначале пользоваться чем из дому принесут - кухонными и маникюрными инструментами, а потом уже давали скальпели и отсосы всякие. Добавлено через 25 минут Не по теме: Ладно. Зря меня опять на эту тему понесло. Предлагаю не обращать внимания. XlorensX, хоть в задании, как вы его изложили, и не сказано, но, обычно, оставляют первый из повторяющихся элементов в списке.
0
|
||||||
| 18.12.2016, 18:34 | ||
|
1
|
||
| 18.12.2016, 18:34 | |
|
Помогаю со студенческими работами здесь
15
Функции высшего порядка Функции высшего порядка Функции высшего порядка Функции высшего порядка Функции высшего порядка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|