Упражнение №11 на гр.2
Зад.1. Да се напише функцията sumProducts, която приема списък от списъци от числа и връща сумата на всички произведения на числата в даден списък: sumProducts [[1,2,3], [4,5], [], [-2,3,0,5,1]] -> 27 -- 27 = 6 + 20 + 1 + 0
Зад.2. Да се напише функцията occurrences, която приема два списъка от числа и връща списък от броя срещания на елементите от първия списък във втория:
occurrences [1..6] [1,3,4,3,2,3,3,0,5,3,1] -> [2,1,5,1,1,0]
Зад.3. Да се напише функцията matchLengths, която проверява дали всички списъци от списък със списъци са с еднаква дължина:
matchLengths [[1..4],[0..3],[5,4,8,10]] -> True
matchLengths [[1..4],[0..3],[],[5,4,8,10]] -> False
Зад.4. За тази задача ще представяме множествата като наредени списъци от своите елементи (значи те трябва да могат да бъдат сравнявани с == и < и да се срещат точно по веднъж). Да се напишат функции setUnion, setIntersect и setDiff, които намират съответно обединението, сечението и разликата на две множества: setUnion [1,2,3,5] [2,4,5,6,7] -> [1,2,3,4,5,6,7] setIntersect [1,2,3,5] [2,4,5,6,7] -> [2,5] setDiff [1,2,3,5] [2,4,5,6,7] -> [1,3] setDiff [2,4,5,6,7] [1,2,3,5] -> [4,6,7]
Зад.5. Нека е дадена квадратна матрица от числа. Под “Гаусова елиминация” ще разбираме операцията, при която се избира първият ред отгоре надолу, в който първият елемент е ненулев, и към всеки друг ред на матрицата прибавяме избрания ред, умножен по такъв коефициент, че числата в първия стълб на тези редове да станат равни на нула:
[[ 0,3,5,0], [[0, 3,5,0], [ 1,5,2,1], -> [1, 5,2,1],
[ 2,3,8,4], [0,-7,4,2], -- получено от (ред2 * (-2)) + ред2
[-2,0,4,5]] [0,10,8,7]] -- получено от (ред2 * 2) + ред3
Напишете функция row-reduce, която извършва тази операция. Можете да допуснете, че в първия стълб на матрицата има поне един ненулев елемент.
Зад.6*. Напишете функция, която изчислява детерминантата на дадена квадратна матрица.
Зад.7. Напишете функция (cross-out m), която по дадена матрица от числа m с размери M*N генерира всички M*N на брой матрици, които могат да се получат от m със задраскване на някой ред и някой стълб. Редът на върнатите матрици няма значение. Пример: cross-out [[1,2,3,4], [5,6,7,8], -> [ [[6,7,8],[0,1,2]], [[5,7,8],[9,1,2]], [[5,6,8],[9,0,2]], [[5,6,7],[9,0,1]], [[2,3,4],[0,1,2]], ... [9,0,1,2]] -- и още 7 малки матрици
Зад.8. Да се напише функция specialSort, която приема като параметър списък от списъци и го сортира относно най-често срещания елемент във всеки от вътрешните списъци. Ако има няколко най-често срещани елемента, да се избира най-големия от тях: specialSort ["moo", "bee", "eve", "abracadabra", "abcdefg", "mama", "z"] -> ["abracadabra", "bee", "eve", "abcdefg", "mama", "moo", "z"] -- в случая най-често срещаните елементи са съответно 'a', 'e', 'e', 'g', 'm', 'o', 'z' -- наредбата не е уникална - няма проблем с това, нямаме изисквания за стабилност
Последно модифициране: четвъртък, 13 декември 2018, 11:56