Witam.
Potrzebuję pomocy w zoptymalizowaniu mojego programu (w Haskellu), który służy do rozwiązywania pewnej łamigłówki logicznej. Program jakoś napisałam i działa raczej poprawnie (na razie nie widzę w nim błędów), tyle, że niestety bardzo powoli. A szybkość działania też jest istotna przy ocenianiu go.
Łamigłówka, którą program ma rozwiązywać, jest wzięta z dość starego czasopisma "Wiedza i Życie", z numeru 2/2001. Niedawno na stronie WiŻ były dostępne archiwalne numery (ten był pod tym linkiem: http://archiwum.wiz.pl/2001/01024800.asp), ale teraz już chyba ich nie ma. Oryginalną treść mam więc tylko w takiej formie:
http://images38.fotosik.pl/1643/439bc08af043acd1.jpg
http://images40.fotosik.pl/1645/bcce4b89e36d4ca5gen.jpg
A tutaj dokładna treść zadania, które mam zrobić:
http://wklej.org/id/775248/
Dla małych testów (mniejszych plansz, albo 10x10 ale z np. 7 statkami) program działa poprawnie i zwykle w kilka sekund. Jednak dla przykładu z treści zadania działa wiele godzin (jeszcze nie doczekałam się rozwiązania...). A podobno da się napisać to tak, żeby w przypadku tego testu działał minutę.
Nie znam Haskella jakoś bardzo dobrze, i pewnie dlatego nie mam pomysłów na to, co można by zmienić w kodzie programu, żeby go przyspieszyć. Byłabym bardzo wdzięczna za wszystkie wskazówki.
Niestety, dużym problemem chyba jest to, że raczej nie mogę tak publicznie udostępnić kodu programu, przez dość rygorystyczne sprawdzanie kodu na uczelni pod kątem plagiatu. Więc jeśli ktoś miałby chwilkę i był w stanie pomóc, to proszę o kontakt na maila: [email protected]
Z góry bardzo dziękuję.