Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MakeevGA-Haskell-a4-shortcode_2014_05_31.doc
Скачиваний:
29
Добавлен:
19.01.2023
Размер:
1.79 Mб
Скачать

Арифметические последовательности

Запросите в интерпретаторе и объясните тип выражений и результат их вычисления:

[1..10]

[2,4..11]

[1..]

[1,5..]

['a'..'z']

Генераторы списков

Вычислите выражения и объясните результат их вычисления:

squares [1..10] where squares xs = [x^2 | x <- xs]

[x^2 | x <- [1..10], odd x]

[(x,y) | x <- [1..10], y <- ['a'..'d']]

Напишите с помощью генераторов списков функцию [Integer] -> [(Integer, Integer)], которая из списка [Integer] формирует список всевозможных пар чисел из этого списка, таких что первое число меньше второго. Напишите аналогичную функцию без использования генераторов списков.

Лабораторная работа 4 Бесконечные списки

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

iterate, repeat, cycle

Научитесь работать с бесконечными арифметическими последовательностями вида [N..] и [N,K..], а так же строить на их основе бесконечные списки.

Напишите с помощью функции iterate функцию pseudoRandomMy :: Integer -> [Integer], строящую бесконечный список псевдослучайных чисел в соответствии с линейным конгруэнтным методом.

Напишите функцию, строящую бесконечный список символов, получающихся последовательной записью натуральных чисел: ['1','2','3','4','5','6','7','8','9','1','0','1','1', '1','2',…], и проверьте ее, выведя первые сто символов, а также тысячный символ. Используйте бесконечный список [1..] и функции map и show.

Напишите функцию, строящую бесконечный список символов, получающихся конкатенацией текстовых записей степеней десятки ['1','0','1','0','0','1','0','0','0',…], и проверьте ее, выведя первые сто символов, а также тысячный символ. Используйте функции iterate и show.

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

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

Напишите функцию, строящую бесконечный список подсписков чисел: в первом подсписке будут степени единицы, во втором степени двойки, в третьем – тройки и так далее: [[1,1,1,…],[2,4,8,…],[3,9,27,…],…].

Ввод-вывод

Запросите в интерпретаторе и объясните тип функций, проверьте их поведение на примерах входных данных:

putChar, putStr, putStrLn, print

getChar, getLine

readFile, writeFile

interact

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

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

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

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

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