Języki programowania - Tematy projektów w semestrze 2011Z (20

Transkrypt

Języki programowania - Tematy projektów w semestrze 2011Z (20
Języki programowania
-
Tematy projektów w semestrze 2011Z (20 punktów)
Projekty wykonywane są w zespołach 4 osobowych. Temat projektu należy wybrać do 14.11.11 r. Jeden temat
projektu może być wybrany przez dowolną liczbę zespołów. Temat projektu należy zanalizować i podzielić na funkcje
lub klasy kodowane w oddzielnych modułach. Podział kodu źródłowego na moduły (pliki) według klas lub funkcji ma
szczególna wagę w przypadku pracy zespołowej. Zaliczenie projektu będzie polegało na kompilacji źródeł i
demonstracji funkcjonalności programu. Należy wykonać, krótką dokumentację, która przedstawi wybrane
rozwiązanie. Dokumentacja powinna opisywać strukturę danych, algorytm i budowę kodu źródłowego. Istnieje
możliwość zgłoszenia własnego tematu projektu.
Z. 1
Wieloomina (Polyominoes)
Wielomino to figura na płaszczyźnie złożona z kilku kwadratów (domino, triomino, tetromino, itd.). Napisać program
umożliwiający generację wieloomin jak i układania ich w prostokącie o zadanym rozmiarze (mxn).
Z. 2.
Gra Tetris (układanie pentomin) na konsoli tekstowej lub w trybie graficznym.
Z. 3
Szachy z komputerem
Program może być zrealizowany w trybie tekstowym. Ma umożliwiać grę w szachy z komputerem na niskim
poziomie. Program może przewidywać ograniczoną liczbę ruchów (nawet tylko jeden ruch). Program powinien
umożliwiać zapis i odczyt gry.
Z. 4
Scrabble z komputerem
Program ma umożliwiać grę w scrabble z komputerem. Program może wybierać słowa ze słownika otwarto
źródłowego np. aspell lub słownika polskiego scrabblisty (OSPS). Poprawność słów oczywiście ustal się na podstawie
tego słownika. Program powinien umożliwiać zapis i odczyt gry.
Z. 5
Generowanie palindromów
Program do wspomagania tworzenia zdań palindromów z wykorzystaniem słownika. Program powinien szybko
wyszukiwać i proponować słowa, które można dodać do zadanego rdzenia palindromowego zdania. (Wykorzystać
gotowy słownik otwarto źródłowy np. aspell). Przykład palindromu autorstwa naszego profesora Tadeusza
Morawskiego „Co ma matoł? Złota ma moc!”
Z. 6
Program do wyszukiwania palindromów
Program ma rozwiązywać problem podziału łańcucha znaków na sekwencję palindromów. Pojedynczy znak jest
najkrótszym palindromem, ale istotne jest uzyskanie jak najmniejszej liczby elementów. Łańcuch „AMMADAM”
może być podzielony na trzy części „A-M-MADAM" a ”ABBABABA" na „ABBA-B-ABA". Problemem w tym
zadaniu jest szybkość algorytmu.
Z. 7
Program do wyszukiwania najkrótszego super łańcucha
Dla danego zbioru F łańcuchów znaków znaleźć w danym łańcuchu znaków S łańcuch najkrótszy s zawierający
wszystkie łańcuchy fF jako podłańcuchy. W podstawowej wersji program powinien realizować dopasowanie
dokładane. Dopasowanie aproksymacyjne, które uwzględnia wstawianie, kasowanie i podstawienie może zostać
uwzględnione przez ambitniejszych wykonawców. Dopasowanie aproksymacyjne konieczne w bioinformatyce
wynika ze zmienności żywych organizmów. Należy zrealizować szybki algorytm wyszukiwania.
Z. 8
Triangulacja wielokąta
Program wykonujący podział wielokąta na trójkąty z zadaną dokładnością. Podstawowym kryterium jest minimalna
waga triangulacji ale można zastosować inne kryterium. Ciekawą modyfikacją byłoby przypisanie do boków
wielokąta wag, które lokalnie zmieniają gęstość siatki. Program nie musi mieć interfejsu graficznego. Wyświetlanie
danych może być realizowane za pomocą programu zewnętrznego.
Z. 9
Rozkład pola elektrycznego
Napisać program wyznaczający rozkład potencjału elektrycznego na płaszczyźnie XY. Zakładamy, że w osi Z pole się
nie zmienia. Należy założyć rozkład potencjału na brzegu obszaru (znane warunki brzegowe). Przy założeniu, że w
obszarze nie znajdują się ładunki elektryczne, z prawa Gaussa (jedno z równań Maxwella) można wyprowadzić
równanie różnicowe opisujące zależność potencjału w punkcie  x, y  od potencjałów w punktach sąsiednich
  4  x, y     x  h, y     x, y  h     x  h, y     x, y  h     x, y  
    x, y     x  h, y     x  h, y      x, y     x, y  h     x, y  h   ,
    x, y     x  h, y     x  h, y     x, y     x, y  h     x, y  h   0
gdzie   x, y  to potencjał elektryczny,   x, y  przenikalność elektryczna, h rozmiar siatki dyskretyzacyjnej.
Równania dla wszystkich punktów obszaru wraz z równaniami dla punktów brzegowych tworzą liniowy,
jednoznaczny (duży!) układ równań. Rozkład potencjału  można znaleźć poprzez rozwiązanie tego układu
liniowego metodą eliminacji Gaussa lub za pomocą algorytmu iteracyjnego (rozwiązanie preferowane).
Z. 10 Program do nakładania obrazów (arytmetyka map bitowych)
Program ma umożliwiać operacje na obrazach pozwalające na nakładanie obrazów na siebie. Należy zrealizować
różne operacje (ważona średnia arytmetyczna, geometryczna, różnica, iloczyn) pozwalające uzyskać różne efekty
graficzne. Operacje należy wykonywać na składowych RGB. Program powinien obsługiwać pliki w formacie map
bitowych BMP (konieczna jest konwersja do formatu „true color”). Konieczne będzie skalowanie rozmiarów obrazów
(interpolacja). Program nie musi być zrealizowany w środowisku graficznym.
Z. 11 Program do rysowania grafiki wektorowej typu Paint lub Gimp. Program z interfejsem graficznym dla
systemu Windows lub Linux.
Z. 12 Szachy przez sieć
Program ma umożliwiać grę w szachy przez sieć. Program powinien być jednocześnie klientem i serwerem. Wybór
partnera poprzez podanie jego adresu IP. Dodać możliwość wysyłania komunikatów dla graczy.
Z. 13 Instrument klawiszowy
Program umożliwia granie na klawiaturze „prawie” jak na instrumencie klawiszowym.

Podobne dokumenty