Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 09.08.2015
Сообщений: 8
1

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

05.02.2013, 17:38. Показов 1939. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вообщем задание очень простое, на входе дан список типа int на выходе тоже, нужно сделать инверсию. Я знаю для этого существует функция reverse, но мне сказали, что нельзя использовать стандартные функции, тут то у меня и возникли трудности... Поэтому прошу помощи у вас уважаемые форумчане
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2013, 17:38
Ответы с готовыми решениями:

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

Удалить элементы первого списка по номерам второго списка без использования вспомогательных функций
Может кто знает классический вид функции удаление элементов списка по номерам второго списка.Важно...

Усечение списка до указанной длины с помощью стандартных функций
Здравствуйте! Требуется написать усечение списка до указанной длины, т.е. оставить первые N...

Вычисление квадратного корня без использования стандартных функций
Как вычислить квадратный корень без использования функции math.sqrt и библиотеки math в целом?

5
Эксперт функциональных языков программированияЭксперт Java
4539 / 2731 / 486
Регистрация: 28.04.2012
Сообщений: 8,625
05.02.2013, 17:48 2
Haskell
1
2
3
4
myCoolReverse :: [Int] -> [Int]
myCoolReverse xs = rev xs [] where
    rev    []  ys = ys
    rev (x:xs) ys = rev xs (x:ys)
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
37291 / 20725 / 4272
Регистрация: 12.02.2012
Сообщений: 34,111
Записей в блоге: 14
05.02.2013, 18:26 3
Можно и так:

Haskell
1
2
3
4
5
myRev :: [Int] -> [Int]
myRev xx = foldr (\ x y -> y ++ [x]) [] xx
 
Main> myRev [1,2,3,4]
[4,3,2,1]
Добавлено через 3 минуты
А если отказаться от типа Int, то будет инвертироваться и строка символов:

Haskell
1
2
3
4
5
6
7
8
myRev :: [a] -> [a]
myRev xx = foldr (\ x y -> y ++ [x]) [] xx
 
Main> myRev "qwerty"
"ytrewq"   
 
Main> myRev [1,2,3,4]
[4,3,2,1]
Впрочем, это же относится и к коду уважаемого Korvin_
0
144 / 134 / 8
Регистрация: 19.07.2011
Сообщений: 184
05.02.2013, 18:47 4
Цитата Сообщение от Jeriko Посмотреть сообщение
нельзя использовать стандартные функции
Цитата Сообщение от Catstail Посмотреть сообщение
foldr
Эм-м-м... Нельзя же.

Да и если использовать свертку, то можно проще.
Haskell
1
reverse' = foldl (flip (:)) []
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
37291 / 20725 / 4272
Регистрация: 12.02.2012
Сообщений: 34,111
Записей в блоге: 14
05.02.2013, 19:08 5
Или без накопительного параметра (короче, но работать будет медленнее):

Haskell
1
2
3
revMy :: [a] -> [a]
revMy [] = []
revMy (x:xs) = (revMy xs) ++ [x]
0
0 / 0 / 0
Регистрация: 09.08.2015
Сообщений: 8
06.02.2013, 21:56 6
Всем огромное спасибо, вы мне очень помогли!!
0
06.02.2013, 21:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2013, 21:56
Помогаю со студенческими работами здесь

Как написать генератор чисел без использования стандартных функций?
Нужно написать программу генерирования равномерно распределенных случайных чисел без использования...

Переписать код обработки массива без использования стандартных функций
Всем привет, дан код и надо реализовать поэлементную обработку массива, или же расписать...

Вычисление квадратного корня из числа (без использования стандартных математических функций)
Напишите программу, вычисляющую квадратный корень из числа (не пользуясь стандартными...

Повернуть матрицу относительно главной диагонали без использования стандартных функций
Добрый вечер) Необходимо написать программу в MatLab. Сложность в том, что при этом для...

Перемещение второго слова в строке в конец строки (без использования стандартных функций)
Помогите пожалуйста решить задачку Строка состаящая не менее чем из 4 слов, в ней необходимо...

Преобразовать символьное представление целого числа в целое число без использования стандартных функций
Всем доброго вечера! Народ, кто-нибудь знает как пробразовать символьное представление числа "123"...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru