Haskell – zbiór zadań
Transkrypt
Haskell – zbiór zadań
Haskell – zbiór zadań Mariusz Różycki rev. 2014.03.27.1 1 Podstawy Haskella Zadanie 1 Ile wynosi 2 + 222 ? Zadanie 2 Napisz funkcję kwadrat x, która obliczy kwadrat danej liczby x. Zadanie 3 Napisz funkcję potega 2 n, która policzy wartość n-tej potęgi 2. Na przykład potega 2 16 zwróci 65 536. Zadanie 4 Napisz funkcję suma n, która policzy wartość sumy liczb od 1 do n. Zadanie 5 Napisz funkcję srednia a b, która policzy średnią arytmetyczną liczb a i b. Zadanie 6 Napisz funkcję jednomian a x n, która policzy wartość jednomianu axn . Zadanie 7 Napisz funkcję newton n k, która policzy wartość dwumianu Newtona użyć funkcji silnia ze slajdów. n k . Możesz Zadanie 8 Napisz funkcję przeciwprostokatna a b, która policzy długość przeciwprostokątnej w trójkącie prostokątnym o długościach przyprostokątnych a i b. Do obliczenia pierwiastka możesz użyć wbudowanej funkcji sqrt. Zadanie 9 Napisz funkcję srednia geometryczna a b, która policzy wartość średniej geome√ trycznej liczb a i b. Dla przypomnienia: wynosi ona ab. Zadanie 10 Napisz funkcję wierzcholek a b c, która policzy wartość funkcji kwadratowej ax2 + bx + c w wierzchołku. Zadanie 11 Napisz funkcję heron a b c, która policzy pole trójkąta o bokach a, b i c. Zadanie 12 Napisz funkcję pole a, która policzy pole trójkąta równobocznego o boku o długości a. 2 Podstawy rekurencji Zadanie 1 Napisz funkcję silnia n, która policzy wartość silni z n. Zadanie 2 Napisz funkcję potega n k, która policzy wartość nk . Nie używaj wbudowanych w Haskella funkcji i operatorów potęgowania. Zadanie 3 Napisz funkcję suma kwadratow n, która policzy sumę kwadratów liczb od 1 do n włącznie. Zadanie 4 Napisz funkcję suma poteg n k, która policzy sumę k-tych potęg liczb od 1 do n włącznie. Możesz użyć własnej funkcji potęgującej lub wbudowanych mechanizmów Haskella, aby wykonać potęgowanie. 1 Zadanie 5 Napisz funkcję liebniz k, która policzy k-te przybliżenie liczby π z szeregu Liebniza. Szereg Liebniza wygląda następująco: ∞ X (−1)n n=0 2n + 1 lub bardziej po ludzku: 1− 1 1 1 + − + ··· 3 5 7 . 3 Kontrola przebiegu programu Zadanie 1 Napisz funkcję wartosc bezwzgledna x, która policzy wartość modułu z x. Zadanie 2 Napisz funkcję collatz cn, która dla danego wyrazu ciągu Collatza cn policzy wartość nastepnego wyrazu. Definicję tego ciągu znajdziesz w slajdach. Zadanie 3 Napisz funkcję signum n, która dla danego n obliczy i zwróci wartość sgn(n). Zadanie 4 Napisz funkcję minimum a b, która wybierze mniejszą z wartości a i b. Zadanie 5 Napisz funkcję minimum a b c, która wybierze najmniejszą z wartości a, b, c. Zadanie 6 Napisz funkcję rownanie kwadratowe a b c, która obliczy liczbę rozwiązań równania ax2 + bx + c = 0. 2