Przyspieszenie programu w Haskellu rozwiązującego łamigłówkę logiczną.

1

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

0

A, jeszcze mała uwaga - ta treść zadania może wydać się nieco dziwna (tak samo postać danych wejściowych) - to dlatego, że jest to treść tego zadania do zrobienia w Prologu, nie Haskellu, bo takie zadanie miałam do zrobienia wcześniej.

0

Nie ma to jak rozmawiać z samą sobą. :P

Ale chciałam tylko napisać, że jestem zdziwiona, że żadnego odzewu nie było, bo problem jest chyba dość ciekawy...

Termin na oddanie zadania był do końca czerwca, później został przedłużony, ale mimo że miałam kilka pomysłów na optymalizację (już po przedłużeniu terminu), to nie zrealizowałam ich, przez lenistwo i z braku czasu trochę.

No i, tak na pierwszy rzut oka, chyba rzadko zdarzają się tu jakieś tematy, które pozostają bez żadnej odpowiedzi? Dziwne to. Serio nikt nie zna Haskella? :P W sumie, to i bez znajomości języka dałoby się coś wymyślić, bo tu raczej chodziło o poprawienie samego algorytmu, by stał się efektywniejszy...

Jeszcze jedno: ostateczna wersja programu, którą oddałam do sprawdzenia, rozwiązywała łamigłówkę z zadania przez 6 godzin. :D

0

No i, tak na pierwszy rzut oka, chyba rzadko zdarzają się tu jakieś tematy, które pozostają bez żadnej odpowiedzi? Dziwne to. Serio nikt nie zna Haskella? :P W sumie, to i bez znajomości języka dałoby się coś wymyślić, bo tu raczej chodziło o poprawienie samego algorytmu, by stał się efektywniejszy...

Ano znamy Haskella, znamy. Problem trochę w tym:

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]

Trochę głupio odpowiadać na forum nie mogąc odpowiedzieć na forum... W dodatku na [email protected], mając świadomość że robi się rzecz nie do końca szczytną (jako że należy się obawiać sprawdzania kodu pod kątem plagiatu).
Nie piszę że jesteś leniem, w końcu prosisz (prosiłaś) o pomysł na przyśpieszenie kodu, nie o napisanie (wtedy by w ogóle rozmowy nie było). Tylko piszę jak to wygląda z perspektywy osoby piszącej tutaj.

Jeszcze jedno: ostateczna wersja programu, którą oddałam do sprawdzenia, rozwiązywała łamigłówkę z zadania przez 6 godzin.

A tam, ważne że działała :>

0
msm napisał(a):

Ano znamy Haskella, znamy. Problem trochę w tym:

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]

Trochę głupio odpowiadać na forum nie mogąc odpowiedzieć na forum... W dodatku na [email protected], mając świadomość że robi się rzecz nie do końca szczytną (jako że należy się obawiać sprawdzania kodu pod kątem plagiatu).
Nie piszę że jesteś leniem, w końcu prosisz (prosiłaś) o pomysł na przyśpieszenie kodu, nie o napisanie (wtedy by w ogóle rozmowy nie było). Tylko piszę jak to wygląda z perspektywy osoby piszącej tutaj.

No rozumiem, w sumie to spodziewałam się, że to będzie problem. Ale niestety nie mogłam zrobić inaczej. Jeśli o ten plagiat chodzi, to moja obawa dotyczyła tylko tego, że gdybym wkleiła tu swój kod, to ktoś mógłby z niego skorzystać (chociaż to akurat prawie niemożliwe, no ale wolałam nie ryzykować...), albo np. sprawdzający by go znalazł, a ja nie miałabym jak udowodnić, że ja go tu wkleiłam... czy coś.
Teraz już jest po wszystkim, więc mogłabym wkleić tu swój kod jeśli ktoś byłby zainteresowany, jednak trochę mi wstyd to pokazywać tak publicznie, bo ten mój algorytm to taki brute force w sumie... ;)

Aha, no i oczywiście nie chciałam żeby ktokolwiek z Was cokolwiek dla mnie pisał, raczej tylko miałam nadzieję na jakieś wskazówki.

W ogóle, to jak to teraz przemyślałam, to mogłam chociaż założyć maila o normalnej nazwie, żeby nie było widać, że jest tymczasowy i żeby sprawiał poważniejsze wrażenie. :P

msm napisał(a):

Jeszcze jedno: ostateczna wersja programu, którą oddałam do sprawdzenia, rozwiązywała łamigłówkę z zadania przez 6 godzin.

A tam, ważne że działała :>

Mam nadzieję, że sprawdzający też będzie miał takie podejście. :)

0

moze podaj swoje imie I nazwisko przy wklejaniu kodu - wtedy bedzie przynajmniej wiadomo ze jest Twoj

0

Program wrzuc do archiwum, zaszyfruj go. Archiwum wrzuc na jakis hosting. Link z hasłeem wrzuc tutaj. System antyplagiatowy raczej sie nie zczai.

2

A nie wystarczy pastebin z krótkim czasem przechowywania?

0

Dziękuję bardzo za rady, jednak teraz już po wszystkim, więc ani nie muszę się niczego obawiać, ani chyba nie ma po co pokazywać tu mojego programu. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1