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