Program zaliczeniowy
Należy napisać program, który potrafi rozwiązywać sudoku.
Sudoku jest to łamigłówka polegająca na wypełnieniu kwadratu 9x9 liczbami od 1 do 9
tak, aby liczby nie powtarzały się
- w żadnym wierszu
- w żadnej kolumnie
- w kwadratach 3x3,
przy czym niektóre liczby są już wpisane.
Więcej informacji można znaleźć na stronie np.
http://pl.wikipedia.org/wiki/Sudoku.
Działanie programu
Program powinien zapytać o nazwę pliku z zadaniem (z rozszerzeniem .sud) oraz wyświetlić je.
Następnie powinien znaleźć rozwiązanie i wydrukować je na ekranie oraz zapisać w pliku
o podanej przez użytkownika nazwie. W przypadku, gdy rozwiązanie nie istnieje, należy wypisać odpowiedni komunikat.
Program nie powinien się wieszać lub kończyć błędnie nawet, gdy podawane dane nie są poprawne
(plik z zadaniem nie istnieje lub jest niepoprawny).
Format pliku .sud
Plik z diagramem sudoku powinien zawierać dokładnie 9 wierszy i 9 znaków w każdym wierszu.
Dopuszczalnymi znakami są cyfry 1...9 oraz znak - oznaczający niewypełnione pole. Przykładowy plik: a.sud.
Dodatkowe wymaganie
Program powinien zawierać (i wykorzystywać) klasę, której obiekty reprezentują diagramy sudoku.
Na co należy zwrócić uwagę:
- Szybkość działania programu nie jest decydującym czynnikiem, jednak program, który nie będzie reagował przez minutę
będzie uznany za niedziałający.
- W przypadku użycia częsci kodu, który nie został napisany samodzielnie należy to jawnie zadeklarować.
Kryteria oceny
- Poprawność działania. (2 pkt.)
- Użycie klas. (1 pkt.)
- Kod programu. (2 pkt.)
- Funkcje dodatkowe. (1 pkt.) - np. możliwość znajdowania wszystkich rozwiązań, lub możliwość układania sudoku
(tj. wypełniania diagramu tylko do momentu, gdy istnieje tylko jedno rozwiązanie).
Rozwiązania należy nadsyłać na adres ziemians@mimuw.edu.pl w terminie, który zostanie ogłoszony później.
Powodzenia
Krzysztof Ziemiański