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)