Zajęcia 1.

Slajdy do wykładu 1

Dziś spróbujemy oswoić środowisko R. Program na dziś, to proste obliczenia, liczby, wektory, definiowanie ich “ręcznie”.

Można oprzeć się np. na notatkach P. Biecka do wprowadzenia do R (tutaj http://www.biecek.pl/semestr/stats/ )

Naszym zadaniem na dziś jest odpowiedzieć na pytania:

Czy p. Bristol naprawdę potrafiła zgadywać?

Na jakim poziomie istotności musielibyśmy odrzucać hipotezy, żeby móc tę hipotezę zerową odrzucić?

Jak wyglądałaby sytuacja, gdybyśmy rozważali problem “dwustronny”?

Zadanka “biologiczne” z ostatniego slajdu.

Przydatne funkcje R:

help()

phyper()

q()

 

 

Zadanie bonusowe – crossout.py (5pkt)

Zadanie polega na napisaniu programu w pythonie, który pomaga w wykreślaniu zadanych słów lub wyrażeń w plikach tekstowych.

Np. wywołanie:

crossout.py -w cholewcia –cross “X” -c 3 –in moj_esej.txt

powinno wczytać zawartość pliku moj_esej.txt, następnie podmienić w niej wszystkie wystąpienia słowa “cholewcia” znakiem “X” powtórzonym trzy razy i wypisać wynik na wyjście standardowe.

Program powinien obsługiwać następujące opcje:

  • -w lub –word, słowo do zastąpienia, powinno posiadać wartość domyślną (Państwa ulubione słowo do wykreślenia)
  • -x lub –cross: znak służący do wykreślania, domyślnie “x”
  • -c lub –count: liczba znaków w wykreśleniu. Jeśli podamy liczbę całkowitą, zawsze wstawiamy tyle znaków (niezależnie od długości słowa), jeśli nie podamy tego parametru, to zamieniamy słowa na tyle “krzyżyków” ile znaków miało słowo
  • -l lub –list, ten parametr zastępuje -w, i określa nazwę pliku, w którym znajduje się lista słów (każde w oddzielnej linijce), które powinniśmy zastępować. Wynik działania dla listy jest taki sam jak dla kolejnego wywołania skryptu crossout.py dla każdego ze słów z osobna.
  • -o lub –out,  nazwa pliku wyjściowego (domyślnie standardowe wyjście)
  • -i lub –in, nazwa pliku wejściowego (domyślnie standardowe wejście)

Warto użyć modułu Argparse, przypominam, że na wykładzie omawialiśmy też przykładowy skrypt z użyciem ArgParse.

Jeśli ktoś chciałby w ten sposób zdobyć dodatkowe punkty, to proszę o wysyłanie rozwiązań a-mailem do mnie ( bartek@mimuw.edu.pl, z załącznikiem w postaci  pliku crossout.py i kluczem [WDI-BONUS] w temacie do najbliższego wtorku, 18.12.2014). Osoby wysyłające rozwiązanie powinny też przyjść w środę 19. lutego o 12.00 do mnie (p. 5770) i opowiedzieć o swoim rozwiązaniu.

Pytania proszę w komentarzach poniżej.

Lab 8 – tworzenie modułów

Dzisiejszym zadaniem jest stworzenie pakietu testującego szybkość napisanych przez nas funkcji sortujących. Do zadań pakietu należeć będzie wczytywanie list – instancji problemów zapisanych w kilku różnych formatach, a następnie opracowanie porównania szybkości działania różnych funkcji sortujących na wczytanych listach. Dodatkowo chcemy mieć funkcję generate_list(file_name, swaps_no, length), która zapisze do pliku o ścieżce file_name listę liczb naturalnych od 1 do length wg algorytmu o następującym pseudokodzie:

    a ← range(length)
    for i from swaps_no to 1
    do
        di ← random element of { 0, ..., (length - swaps_no + i - 2) }
        swap a[di] and a[length - swaps_no + i - 1]
    return a

Szczegóły implementacji:
Pakiet ma się składać z trzech modułów. Pierwszy z nich będzie zawierał funkcje sortujące (ważne, żeby były to funkcje o takim samym interfejsie, czyli przyjmujące jako jedyny parametr listę, a zwracające listę posortowaną). Drugi moduł będzie zawierał funkcje wczytujące listy z plików w następujących formatach:
li1:
[4, 3, 1, 2, 4, 5]
li2:
4
3
1
2
4
5
li3:
4 3 1 2 4 5
W drugim module powinny się znaleźć trzy funkcje, które przyjmują jako parametr nazwę pliku, a zwracają wczytaną z tego pliku listę.

Trzeci moduł ma przeszukiwać bieżący katalog w poszukiwaniu instancji problemów (plików o rozszerzeniach li1, li2 lub li3) i dla każdego z takich plików ma wywoływać wszystkie dostępne w pierwszym module funkcje testujące wraz z informacją na temat czasu działania każdego z nich na poszczególnych instancjach problemu. Dodatkowo ma zawierać funkcję generate_list.

Trzeci moduł powinien dawać się wywoływać z linii poleceń za pomocą polecenia: python compare_sorts.py [opcje]. Powinien udostępniać przynajmniej opcje:
-h – pomoc na temat sposobu wywołania skryptu
-g len – generowanie zestawu 9 plików testowych, zawierających listy o długości len, po trzy w każdym formacie. Dla każdego formatu pliki powinny zostać wygenerowane funkcją generate_list z parametrami swaps_no równymi odpowiednio 10, (len / 3) i len – 1.

Lab 7. 1. 2013

Dziś spróbujemy nauczyć się obsługi polecenia join.

Na rozgrzewkę proponuję rozwiązać zadania 1 i 2 z kolokwium z 2010 roku (http://www/~gorecki/wdi/1011unixkol.pdf).

Teraz mamy dwa nowe zadania do tego samego tematu:

załóżmy, że plik.a.txt i plik.b.txt zawierają opisy towarów dostępnych odpowiednio w sklepach a i b.

1. Znajdź cenę towaru w sklepie b, którego jest najwięcej w sklepie a (spośród tych, które są w obu sklepach).
2. Znajdź najtańszy towar w sklepie a, którego nie ma w sklepie b.

Polecam

man join

Bash – zajęcia 1

Prezentacje:
http://www.mimuw.edu.pl/~gorecki/wdi/Wdi1u.pdf
http://www.mimuw.edu.pl/~gorecki/wdi/Wdi2u.pdf
http://www.mimuw.edu.pl/~gorecki/wdi/Wdi3u.pdf

Zadania:

  1. W pliku avgs.txt dana jest lista miejscowości wraz ze średnią temperaturą w grudniu. Posortuj ją używając potoków w kolejności rosnącej średniej temperatury.
  2. Wypisz nazwę i rozmiar 5 największych plików z katalogu domowego.
  3. Przeszukaj swój katalog domowy rekurencyjnie i znajdź wszystkie wystąpienia plików o tej samej nazwie (mogą się różnić co najwyżej wielkością liter). Na wyjściu chcemy dostać takie nazwy poprzedzone liczbą wystąpień.
  4. Policz liczbę takich nieunikalnych nazw plików z poprzedniego zadania.
  5. Wypisz do pliku bests.txt początek, koniec i score z pliku dmel.gff posortowane po score do pliku best_scores.txt.
  6. Wypisz wartości score z wygenerowanego pliku best_scores.txt na pozycjach od 1000 do 2000.