WDI – zajęcia 14

1. (9p.) Dany jest plik pracownicy.txt o następującym formacie:

Anna,Abacka,mazowieckie,4500,6,informatyk

Bernard,Babacki,lodzkie,4300,3,ksiegowy

Czesław,Cabacki,pomorskie,5000,16,prawnik

w którym każdy wiersz zawiera następujące informacje o pracowniku:
imię,nazwisko,województwo,wynagrodzenie,stażPracy,zawód
Napisz następujące skrypty korzystające z pliku pracownicy.txt
(co najmniej jeden z nich powinien być napisany w BASH-u):

  • srN[.sh|.py], parametry: liczba naturalna N.

    Skrypt ma wypisać średnie wynagrodzenie wśród pierwszych N osób o najwyższym wynagrodzeniu.

  • ktoNZ[.sh|.py], parametry: liczba naturalna N, zawod Z.

    Skrypt ma wypisać imię, nazwisko oraz staż pracy osoby, która ma N-te co do wysokości wynagrodzenie wśród wszystkich pracowników posiadających zawód Z.

  • wynWZ[.sh|.py], parametry: wojewodztwo W, zawod Z.

    Skrypt wypisze imię, nazwisko oraz całkowity dotychczasowy dochód (wynagrodzenie × stazPracy) wszystkich pracowników mających zawód Z, pracujących w województwie W.


2. (6p.) Dla każdego z poniższych programów (skryptów) napisz co zostanie wypisane na ekranie po ich wykonaniu.

  • e1.py
    import re
    regexp = r'<.∗? >'
    html = '2015'
    html += 'SUM 2'
    print re.findall(regexp, html)
    
  • e2.sh
    echo 'plik:a.txt' > a.txt
    cat a.txt | sed 's/plik/tresc/g' >> a.txt
    cat a.txt | echo 'To byla tresc a.txt'
    
  • e3.sh
    echo 'linia 1' > a.txt
    echo 'linia 2' >> a.txt
    echo 'linia 3' > a.txt
    echo 'linia 4' >> a.txt
    cat a.txt | cut −d ’ ’ −f 2 | sort −r
    

3. (8 pkt.) W pewnym mieście komunikacja miejska jest oznaczona w następujący sposób:
– tramwaje zwykłe oznaczono liczbami od 1 do 99,
– tramwaje specjalne – pojedyńczymi dużymi literami,
– autobusy zwykłe – liczbami trzycyfrowymi2 ,
– autobusy pośpieszne – liczbami trzycyfrowymi powyżej 500
– autobusy ekspresowe – kodami postaci np. E-2, gdzie zamiast dwójki może być inna liczba jednocyfrowa
– autobusy nocne – znacznikami postaci N02, gdzie zamiast “02” może pojawić się inny ciąg dwóch cyfr (np. N04 albo N10, ale nie N00).
Korzystając z wyrażeń regularnych z modułu re. napisz program, który wczytuje tekst (bez znaków końca linii) i następnie dla każdego zdania w nim występującego (zaczynającego się od wielkiej litery i kończącego kropką) wypisze to zdanie i poda ile w nim wystąpiło różnych środków transportu. Jeśli w zdaniu wystąpiły przynajmniej 3 różne środki transportu, program powinien wypisać też wykrzyknik. Np. Dla tekstu:

“Dziś jechałem do pracy 523, potem przesiadłem się na 13 a wracałem do domu N23. Wczoraj za to jechałem 12, 15 i 17.”
program powinien wypisać:
1 x pospieszny, 1 x tramwaj, 1 x nocny !
3 x tramwaj.

4. (6 pkt.) Oceniamy organizatora konferencji. Mamy daną listę nazwisk np. nazwiska [“Kowalski”,Śmith”,Śchmidt”] oraz listę planowanych czasów wystąpień np. plan=[10,10,20] i listę rzeczywistych czasów wystąpień np. czasy=[15,17,5]. Napisz funkcje:

    • (2 pkt) nudziarze(nazwiska,plan,czasy), która zwróci nazwiska osób, które mówiły dłużej niż planowano.
    • (4 pkt) zmiany(nazwiska,plan,czasy), która poda sumę wartości bezwględnych różnic rzeczywistego od planowanego czasu wsytąpienia.

5. (7p.) Choinkę nazwiemy ładnie ubraną jeśli spełnione są następujące warunki:

  • na pierwszej gałęzi od dołu jest co najmniej 1/3 bombek znajdujących się na wyższych gałęziach,
  • prawa i lewa strona choinki nie różnią się o więcej niż 1/3,
  • choinka zaczynająca się od drugiej gałęzi wzwyż jest ładnie ubrana.

Napisz funkcję ladna(choinka), która dla listy choinka sprawdzi, czy reprezentuje ona ładnie ubraną choinkę według powyższych reguł. Każdy poziom gałęzi jest reprezentowany przez parę liczb (lewa,prawa) oznaczającą liczbe bombek po obu stronach tej gałęzi. Na początku list są liczby dotyczące najwyższej gałęzi, a potem kolejne aż do najniższej. Zakładamy, że pusta choinka jest ładnie ubrana :).

Leave a Reply

Your email address will not be published. Required fields are marked *