Projekt z przedmiotu Algorytmy dla Problemów Trudnych ObliczeniowoSprawy organizacyjneProwadzący przedmiot:
Terminy oddania projektu:
Do wykonania w ramach projektu:
Języki programowania: Jedyne dwa dopuszczalne języki programowania to C oraz C++/C++11 (obecnie zainstalowany kompilator to gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3). Zasoby/współbieżność: Programy nie mogą odwoływać się do systemu plików, nie mogą próbować nawiązywać połączeń sieciowych, być wielowątkowe, wieloprocesorowe, itp. Programy powinny jedynie wczytać ze standardowego wejscia opis zadania, wykonać obliczenia w pamięci i wypisać wynik na standardowe wyjście. Złamanie tych zasad, w szczególności odwołania do sieci oraz próby hackowania systemu arbitrażowego, mogą skutkować brakiem zaliczenia przedmiotu. (Istnieje takze mozliwosc, ze taka osoba bedzie musiala wysluchac bezposrednio od prowadzacych jak bardzo nas rozczarowala.) Oceny:
Wymagania na ocenę 3.5Plansze na oceny 3.5 będą ograniczone do rozmiarów 6x6 (tj., dopuszczalne są, na przykład, plansze o rozmiarach 3x3, 6x6, 1x1, ale---na 3.5---nie będzie plansz o rozmiarach 7x7, 128x128 itp.).Dodatkowe informacje, programy i daneDodatkowe programy i informacje zostana udostepnione pozniej.
Wywołanie sędziego: python judge.py input outputgdzie input to opis planszy z zadaniem, a output to opis planszy z rozwiązaniem. System arbitrażowySystem arbitrażowy dostępny jest pod następującymi adresami:
Zadanie: Potega HetmanowNa szachownicy o rozmiarach NxN ustawiono pewną liczbę hetmanów. Każdy hetman dysponuje pewną potęgą określoną liczbą w postaci 2n, gdzie n ≥ 0. Hetman może zbić innego hetmana o tej samej potędze i wtedy jego potęga wzrasta dwukrotnie. Należy znaleźć sekwencję ruchów, która redukuje liczbę hetmanów na szachownicy do liczby nie większej niż K. Przykład zadania![]() Powyższy układ hetmanów należy zredukować do K=1 hetmana. Rozwiązaniem jest sekwencja ruchów (współrzędne podane jako wiersz kolumna):
ZałożeniaNależy założyć że:
Dane wejścioweDane wejściowe należy wczytać ze standardowego wejścia formacie (opis zawartości kolejnych wierszy): [rozmiar szachownicy - N] [liczba do której należy zredukować liczbę hetmanów - K] [położenie hetmanów na szachownicy – N wierszy po N liczb, każda liczba jest wartością hetmana na danym polu lub zerem]Dla danych z rysunku plik ma postać: 8 1 0 1 0 0 0 0 0 0 1 2 8 8 0 0 8 0 0 2 16 0 0 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 WynikRozwiązanie należy zapisać na standardowe wyjście jako kolejne wiersze opisujące kolejne ruchy (wiersz kolumna wiersz kolumna):2 1 1 1 0 1 1 0 5 6 5 4 3 1 2 2 5 4 1 0 1 1 1 0 1 3 1 6 1 0 1 2 1 6 1 2 2 2 1 2Wiersze i kolumny na szachownicy są numerowane od 0. Przykłady zadań8 1 0 1 2 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 2 8 2 0 0 0 16 8 0 0 16 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 8 2 16 0 0 1 8 8 4 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 1 0 1 16 0 16 0 0 0 0 0 0 0 2 0 0 0 0 2 32 1 0 1 0 0 2 4 0 64 0 0 4 0 0 4 8 3 16 16 8 0 32 0 0 4 16 0 0 32 4 4 2 4 8 16 0 0 8 0 0 8 16 0 0 0 0 0 0 16 0 4 0 2 0 4 16 16 16 0 0 0 0 2 2 32 2 0 0 0 0 1 1 8 0 64 32 0 4 16 16 0 8 4 0 0 1 16 16 64 8 16 4 1 0 1 2 0 8 16 4 0 1 0 8 16 4 16 0 0 1 8 8 2 8 8 64 1 8 64 2 2 1 8 16 32 2 1 0 1 2 0 4 1 4 8 1 0 0 4 1 1 1 2 8 0 4 32 |