to get the file

Transkrypt

to get the file
PROJEKT
Opracował: mgr inż. Leszek Ciopiński
CZĘŚĆ WSPÓLNA:
1. Zajęcia odbywają się w formie konsultacji. Student może konsultować zagadnienia
związane z projektem poprzez:
a) pocztę elektroniczną: [email protected]
b) komunikator gg, poprzez numer 10571749, jeśli prowadzący jest dostępny lub „zaraz
wracam”
c) osobiście w trakcie trwania zajęć
2. Studenci całego roku dzielą się na zespoły projektowe. Zespoły takie należy zgłosić
mailowo do 14 marca 2011 włącznie. Razem ze składem zespołu należy przesłać numer
tematu, który grupa chce realizować.
3. Przydzielenie tematu jest potwierdzane poprzez pocztę elektroniczną.
4. Jeśli temat był już zarezerwowany przez inny zespół, studenci zostaną o tym poinformowani
i poproszeni o wybranie nowego tematu. Lista aktualnie zarezerwowanych tematów
znajduje się w portalu dydaktycznym katedry: achilles.tu.kielce.pl .
5. Jeśli w przeciągu 3 dni student nie uzyska odpowiedzi na swoją wiadomość e-mail, oznacza
to, że wiadomość zaginęła w sieci i student proszony jest o ponowne wysłanie maila.
6. Grupa w ramach projektu ma wykonać określoną implementację oraz sporządzić z projektu
sprawozdanie zawierające informację o: osobach pracujących w grupie, informacji, kto za
co był odpowiedzialny i wnioskach z projektu
7. Ostateczny termin oddawania projektów w pierwszym terminie to 6 czerwca 2011. Na
oddanie projektu składa się:
a) przesłanie projektu poprzez pocztę elektroniczną o temacie ASD_pro_(nr.zad)
b) obrona projektu
ZADANIA:
1. Szukanie wyjścia z labiryntu przy pomocy rekurencji. (3 osoby)
2. Szukanie drogi w labiryncie 3D (tzn. cztery poziomy i miejsca przejścia na wyższą lub niższą
planszę) przy pomocy algorytmu AStar. Należy podać ilość wykonanych iteracji, jaka była
potrzebna do ustalenia drogi. (3 osoby)
3. Kompresowanie i dekompresja pliku przy pomocy algorytmu RLE (3 osoby)
4. Kompresowanie i dekompresja pliku przy pomocy algorytmu Huffmana (4 osoby)
5. Kompresowanie i dekompresja pliku przy pomocy algorytmu LZ77 (4 osoby)
6. Kompresowanie i dekompresja pliku przy pomocy algorytmu LZ78 (4 osoby)
7. Szyfrowanie i deszyfrowanie tekstu przy użyciu algorytmu Vigenère`a (2 osoby)
8. Szyfrowanie i deszyfrowanie tekstu przy użyciu algorytmu DES (2 osoby)
9. Wyznaczanie klucza publicznego i prywatnego algorytmu RSA (3 osoby)
10. Gra w kółko i krzyżyk. Możliwość wyboru czyj ruch jest pierwszy. Komputer musi
„świadomie” dążyć do zablokowania przeciwnika i ustawienia trzech swoich znaków w jednej
linii. (5 osób)
11. Gra w warcaby. Należy przyjąć, że:
a) Jeśli nie ma bicia, to ruch, który spowoduje najmniejsze straty. Jeśli jest kilka takich
możliwości (np. podczas pierwszego ruchu), to należy wybrać dowolny z nich w sposób
losowy.
b) Jeśli jest bicie, trzeba wybrać ruch, który daje możliwość usunięcia największej ilości
pionków przeciwnika. Jeśli jest kilka takich możliwości dających tyle samo strat
przeciwnikowi, trzeba wybrać to, które zmniejszy ilość strat w następnym ruchu
przeciwnika. Jeśli pozostaje jeszcze kilka możliwości wyboru, z których każda daje tyle
samo zysku i strat, należy wybrać losowo jedną z nich.
(6 osób)
12. Sortowanie polifazowe. Należy utworzyć plik przechowujący dane (np. rekordy z danymi
osobowymi) i zaimplementować wspomniany algorytm. Należy założyć, że do dyspozycji są 3
taśmy (w tym jedna z danymi początkowymi). Po zakończeniu każdej rundy należy wyświetlić
na ekranie zawartość plików (2 osoby)
13. Wyszukiwanie wzorców w tekście. Program wczytuje plik tekstowy i wyszukuje w nim
podanego przez użytkownika wzorca. Wszystkie miejsca wystąpienia powinny być
odpowiednio oznaczone, np. poprzez zmianę koloru czcionki lub tła. Wzorzec może
przyjmować znaki:
a) * - dowolna ilość znaków
b) ? - dowolny jeden znak
c) / - powoduje, że następujący po nim znak (*, ?, /) wyszukiwany jest w tekście, a nie jest
on interpretowany j/w.
d) dowolny znak alfanumeryczny – wyszukanie takiego znaku w tekście.
(2 osoby)
14. Wyszukiwanie wzorców w tekście. Program wczytuje plik tekstowy i wyszukuje w nim
podanego przez użytkownika wzorca. Wszystkie miejsca wystąpienia powinny być
odpowiednio oznaczone, np. poprzez zmianę koloru czcionki lub tła. Powinien mieć format
wyrażenia regularnego, np:
a) ^abc$ - wyszukaj ciągu „abc”
b) ^[a-z0-9]+$ - ciąg o długości co najmniej 1 złożony z małych liter alfabetu i liczb.
c) ^[A-Cd]+[0-9]?$ - początek szukanego ciągu składa się z liter A, B, C, d i ma długość
co najmniej jednego znaku. Na końcu może wystąpić jedna cyfra, lub może jej nie być w
ogóle.
d) ^[0-9]*abc$ - ciąg „abc” może, ale nie musi, być poprzedzony dowolną ilością liczb.
Dla ułatwienia, proszę założyć, że nie występuje możliwość zagnieżdżania wyrażeń, tzn.
NIE trzeba implementować, np.: ^[a-z]+(@w[a-z0-9]+)?$. Należy ograniczyć się do wyrażeń
typu: ^ala[ak-t]+[A-Z]*$, czyli: alakotBIAŁY, alakota. Proszę przyjąć, że szukamy tylko
wyrazów spełniających dane kryterium.
(6 osób)
15. Algorytm kolorowania grafu. Program powinien pobierać informację od użytkownika ile jest
węzłów w grafie i jaka jest struktura połączeń pomiędzy nimi. Następnie używając jak
najmniejszej liczby kolorów należy przyporządkować do każdego węzła taki kolor, aby nie
pokrywał się on z kolorem sąsiadującego węzła. Na koniec należy wyświetlić informację, który
numer koloru ma przydzielony dany węzeł. (2 osoby)
16. Wyznaczanie cyklu Eulera w grafie skierowanym. Należy wprowadzić do programu strukturę
grafu, łącznie z jego węzłami, a następnie określić, czy możliwe jest wyznaczenie cyklu Eulera.
Jeśli jest to możliwe, to program powinien wyświetlić informację, jak należy przejść pomiędzy
wierzchołkami. (2 osoby)

Podobne dokumenty