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ę

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ę:

  1. 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.
  2. W przypadku użycia częsci kodu, który nie został napisany samodzielnie należy to jawnie zadeklarować.

Kryteria oceny

  1. Poprawność działania. (2 pkt.)
  2. Użycie klas. (1 pkt.)
  3. Kod programu. (2 pkt.)
  4. 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