Dziadek Mróz:
Zadania z Pythona, kiedyś ktoś miał z nimi problem i działaliśmy razem:
1. Napisz funkcję kiedy(x, y, z), której wynikiem będzie liczba określająca, którego dnia
ślimak znajdzie się na szczycie dziesięciometrowego słupa. Ślimak pierwszego dnia startuje u
podstawy słupa. Każdego dnia wspina się o x centymetrów. Każdej nocy osuwa się o y
centymetrów, chyba że natrafi na półkę − wtedy zatrzymuje się na niej. Półki znajdują się co z
centymetrów, licząc od podstawy słupa. Zakładamy, że x jest większe od y.
Wynikiem kiedy(300, 100, 100) jest 4
Wynikiem kiedy(5, 3, 2) jest 250
2. Matematycy greccy ze szkoły pitagorejskej, którzy szczególnie cenili sobie harmonię i ład
wśród liczb, interesowali się liczbami bliźniaczymi. Liczby bliźniacze to pary kolejnych liczb
pierwszych, których różnica jest równa 2. Przykłady liczb bliźniaczych: (3, 5), (5, 7), (11,
13), (17, 19), (29, 31), (41, 43), …
Do dziś nie wiadomo, czy takich par jest skończenie czy też nieskończenie wiele. Wiadomo
natomiast, że liczby te są rozmieszczone bardzo rzadko, nawet jeśli jest ich nieskończenie
wiele. Największe znane dziś liczby bliźniacze to 33218925 · 2169690 ± 1
Zdefiniuj dwuparametrową funkcję bli której wynikiem jest lista list par liczb bliźniaczych z
podanego zakresu.
Przykłady:
Wynikiem bli(1, 10) jest [ [3, 5], [5, 7]]
Wynikiem bli(11, 31) jest [ [11, 13], [17, 19], [29, 31]]
3. Napisz jednoparametrową funkcję o nazwie dodaj_nie, której parametrem jest lista liczb
całkowitych nie dłuższa niż 100 elementów. Wynikiem funkcji jest suma liczb nieparzystych
podanych na liście.
Przykłady:
dodaj_nie([1, 2, 3, 5, 7]) daje w wyniku 16
dodaj_nie([3, 4, 3]) daje w wyniku 6
4. Zdefiniuj jednoparametrową funkcję szyfr. Parametrem funkcji jest napis złożony z małych
liter alfabetu łacińskiego i spacji. Wynikiem funkcji jest napis zakodowany alfabetem Morse’a
według podanej tabeli przy czym 0 – oznacza kropkę, 1 – kreskę. Litery są oddzielane cyfrą 2,
a wyrazy cyframi 22.
Zdefiniuj jednoparametrową funkcję deszyfr. Parametrem funkcji jest napis złożony wyłącznie z
cyfr 0, 1 i 2. Wynikiem funkcji jest rozkodowany napis. Jeśli dana kombinacja znaków nie
odpowiada żadnej literze należy wstawić znak ?.
http://pl.static.z-dn.net/files/da4/11eac405ca43e45c9e5c51f6cc3df805.png
Wynikiem szyfr('alfabet') jest '012010020010201210002021'
Wynikiem szyfr('programowanie i python') jest
'01102010211121102010201211211120112012102002022002201102101121200002111210'
Wynikiem deszyfr('012010020010201210002021') jest 'alfabet'
Wynikiem deszyfr('0111112010020010201210002021') jest '?lfabet'
5. Napisz jednoparametrową funkcję dodumki. Parametr jest listą ułamków, a wartością funkcji
jest liczba zapisana za pomocą listy będąca sumą liczb podanych jako parametr. Ponadto liczba
mieszana, która jest wynikiem tej funkcji powinna być zapisany w postaci jednoznacznej – część
całkowita (o ile istnieje) oraz ułamek właściwy (o ile istnieje − w postaci nieskracalnej).
Każdą liczbę mieszaną można zapisać według następującej zasady:
− jeśli jest to liczba całkowita – jako lista jednoelementowa np. 2 będzie zapisana jako [2]
− jeśli nie jest to liczba całkowita jako lista:
− dwuelementowa, jeśli część całkowita jest równa 0, gdzie pierwszym elementem jest licznik
ułamka, drugim mianownik np. 1/3 będzie zapisana jako [1, 3],
− trzyelementowa – w pozostałych przypadkach, pierwszym elementem jest część całkowita,
drugim licznik, trzecim mianownik.
Przykłady:
dodumki([ [1, 3], [1, 2]]) daje w wyniku [5, 6]
dodumki([ [1, 1000000], [1, 1000000]]) daje w wyniku [1, 500000]
dodumki([ [1, 2], [3, 4], [1, 4]]) daje w wyniku [1, 1, 2]
6. Ela wymyśliła metodę szyfrowania tekstu przy pomocy klucza złożonego z małych liter alfabetu
łacińskiego. Zaczęła od zapisania liter alfabetu według następujących zasad:
− najpierw słowo kluczowe (bez powtarzających się liter),
− potem pozostałe litery alfabetu.
Na przykład dla klucza 'choinka' kolejność liter będzie następująca:
'choinkabdefgjlmpqrstuvwxyz', a dla klucza 'abrakadabrahokuspokus’:
'abrkdhouspcefgijlmnqtvwxyz'.
Ela szyfrowała każdą literę tekstu w następujący sposób − znajdowała pozycję litery w alfabecie
łacińskim i odpowiadającą literę tej pozycji w swoim alfabecie. Na przykład zaszyfrowana
litera 'c' (trzecia pozycja w alfabecie) według klucza 'abrakadabrahokuspokus', to litera 'r'
(trzecia litera w alfabecie Eli), a zaszyfrowane 'd' to litera 'k' według tego klucza.
Grzesio pisze zaszyfrowane ciągi znaków do kolegi używając szyfru Eli. Zdefiniuj dwuparametrową
funkcję szyfrEli. Oba parametry są niepustymi ciągami znaków składającymi się z małych liter
alfabetu łacińskiego. Pierwszy z nich jest kluczem szyfrowania a drugi wiadomością do
zaszyfrowania.
Wynikiem szyfrEli(' choinka', 'ala') jest 'cgc'.
Wynikiem szyfrEli('abrakadabrahokuspokus', 'dookola') jest ' kiiciea'.
7. Lista liczbowa to taka lista, której każdy element jest liczbą naturalną lub listą liczbową.
Na przykład lista [[2, 3], 1, [3], [[5, 2], 1], 2] jest listą liczbową, bo jej elementy: drugi
i piąty (to jest 1 i 2) – są liczbami naturalnymi, a elementy: pierwszy, trzeci i czwarty (to
jest [2, 3], [3] i [[5, 2], 1]) – są listami liczbowymi. Lista pusta też jest listą liczbową.
Jeśli z zapisu listy liczbowej usuniemy wszystkie nawiasy kwadratowe, to otrzymamy skończony
ciąg liczb; będziemy je nazywali składnikami listy liczbowej. Liczba składników listy
liczbowej na ogół nie jest równa liczbie jej elementów, np. lista podana powyżej ma pięć
elementów oraz osiem składników (2, 3, 1, 3, 5, 2, 1, 2).
Dla każdego składnika listy liczbowej określamy jego poziom na tej liście w następujący sposób:
− wszystkie składniki listy liczbowej, które są jej elementami mają poziom 1,
− wszystkie elementy elementów listy liczbowej mają poziom 2,
− wszystkie elementy elementów elementów listy liczbowej mają poziom 3, itd.
Np. składniki: 2, 3, 1, 3, 5, 2, 1, 2 listy liczbowej [[2, 3], 1, [3], [[5, 2], 1], 2] mają
odpowiednio poziom: 2, 2, 1, 2, 3, 3, 2, 1.
Wagą składnika listy liczbowej nazywamy iloczyn tego składnika przez jego poziom. Wagą listy
liczbowej nazywamy sumę wag jej składników, listy puste i listy złożone z list pustych mają
wagę zero.
Zdefiniuj jednoparametrową funkcję o nazwie wagalisty, której wynikiem jest waga listy
liczbowej podanej jako parametr.
Wynikiem wagalisty([ [2, 3], 1, [3], [[5, 2], 1], 2]) jest 42.
Wynikiem wagalisty([ [], 2, [], [ [1]]]) jest 5.
Wynikiem wagalisty([ [], []]) jest 0.
8. Zdefiniuj funkcję napisy(lista). Wynikiem funkcji jest uporządkowana lista napisów danych
jako parametr. Napisy mają być uporządkowane według następującego klucza: najpierw napisy
najdłuższe potem krótsze, jeśli dwa napisy są równej długości to uporządkuj je alfabetycznie.
Przyjmij, że napisy są złożone tylko z liter alfabetu łacińskiego.
Wynikiem napisy(['ile', 'masz', 'lat']) jest ['masz', 'ile', 'lat'] .
Wynikiem napisy(['algorytmika', 'to', 'jest', 'to', 'co', 'lubie']) jest ['algorytmika',
'lubie', 'jest', 'co', 'to', 'to'].
9. Liczby Fibonacciego definiuje się w następujący sposób:
− fib(0) =0
− fib(1)=1
− fib(n)=fib(n−1)+fib(n−2) dla n>=2
Kolejne liczby Fibonacciego to: 0, 1, 1, 2, 3, 5, 8, 13…
Zdefiniuj jednoparametrową funkcję fibo, której daną jest liczba całkowita dodatnia nie większa
niż 10200. Wynikiem funkcji jest największą liczba Fibonacciego, która jest mniejsza od
podanej liczby.
Wynikiem fibo(8) jest 5.
Wynikiem fibo(14) jest 13.
10. Ustalamy następujący sposób szyfrowania małych liter alfabetu łacińskiego:
− litery szyfrowane są szyfrem przesuwającym;
− klucz szyfrujący jest dwuelementową listą zawierającą dwie liczby, pierwsza z nich służy do
szyfrowania samogłosek, druga do szyfrowania spółgłosek.
Zdefiniuj dwuparametrową funkcję szyfr. Pierwszy parametr jest niepustym ciągiem znaków
składającym się z małych liter alfabetu łacińskiego a drugi jest dwuelementową listą
zawierającą dwie liczby z zakresu od 0 do 1000 .
Wynikiem funkcji jest ciąg znaków, który powstanie po zaszyfrowaniu powyższym szyfrem.
Wynikiem szyfr('abrakadabra', [1, 9]) jest ' bkabtbmbkab '.
Wynikiem szyfr(' pomidor ', [3, 15]) jest ' erblsrg '.
11. Napisz dwuparametrową funkcję o nazwie dodaj, gdzie pierwszy parametr jest listą dodawanych
liczb a drugi informuje o systemie liczbowym. Wynikiem funkcji jest liczba, będąca sumą
wszystkich liczb z listy zapisaną w podanym systemie liczbowym.
Przykłady:
dodaj([10, 1], 2) daje w wyniku 11
dodaj([11, 100, 11], 5) daje w wyniku 122
12. Każdą liczbę większą od 1 można przedstawić w postaci iloczynu liczb pierwszych.
Napisz jednoparametrową funkcję o nazwie rozklad, gdzie parametrem jest liczba której rozkład
jest poszukiwany. Wynikiem funkcji jest lista będąca rozkładem liczby na czynniki pierwsze.
Przykłady:
rozklad(20) daje w wyniku [2, 2, 5]
rozklad(23) daje w wyniku [23]
13. Zdefiniuj jednoparametrową funkcję ile_trojek. Wynikiem funkcji jest liczba trzech pod
rząd takich samych liter występujących w danym napisie.
Wynikiem ile_trojek ("aaabbbrrraaa") jest 4.
Wynikiem ile_trojek ("kookkardy") jest 0.
Wynikiem ile_trojek ("tooooffi") jest 2.
14. Zdefiniuj dwuparametrową funkcję ile_w. Wynikiem funkcji jest liczba określająca ile liczb
z listy ma sumę cyfr większą od podanej liczby.
Wynikiem ile_w ([123, 111, 5, 8, 12], 5) jest 2.
Wynikiem ile_w ([4, 15, 383], 1) jest 3.
Wynikiem ile_w ([3, 345, 1234, 0], 12) jest 0.
15. Zdefiniuj jednoparametrową funkcję ile_liter. Wynikiem funkcji jest lista składająca się z
liczb określających ile jest poszczególnych liter (w porządku alfabetycznym) w danym napisie.
Przyjmij, że napis jest złożony wyłącznie z liter alfabetu łacińskiego.
Wynikiem ile_liter ("aabbrraa") jest [4, 2, 2].
Wynikiem ile_liter ("kokardy") jest [1, 1, 2, 1, 1, 1].
Wynikiem ile_liter ("tofii") jest [1, 2, 1, 1].