Zgodnie z pierwotnymi założeniami program miał rozwiązywać dowolne krzyżówki na podstawie własnej bazy wiedzy, a następnie, w razie konieczności, szukać odpowiedzi w Internecie.
Niestety, jak się okazało po długich poszukiwaniach, nie znaleziono niekomercyjnej bazy danych w języku polskim, która odpowiadałaby potrzebom programu (definicje haseł). Z kolei, stworzenie od podstaw takiej bazy o sensownym rozmiarze, samo w sobie nadaje się na pracę semestralną (najmniejsze słowniki krzyżówkowe, dostępne w wersjii książkowej, zaczynają się od 15000 haseł). To co jednak udało się znaleźć, to listy słów występujących w języku polskim (od około 6000 do ponad 900000).
W wyniku powstałych ograniczeń zmieniono założenia. Podstawą działania programu miały się stać hasła znalezione w Interecie, a dopiero w razie nie wypełnienia całej krzyżówki, wykorzytywana by była jedna ze znalezionych list słów.
Rozpoczęto kolejne poszukiwania, mające tym razem na celu odnalezienie podobnych w założeniach projektów na sieci i ewntualne wykorzystanie udostępnionych źródeł. Jednak jak się okazało gdy programów, które na podstawie informacji o ilości i rozmiesczeniu znanych liter w słowie jest bardzo wiele, to "prawdziwych" progarmów do rozwiązywania krzyżówek praktycznie nie ma. A te które udało się odnaleźć są najczęsciej komercyjne, lub bardzo słabo opisane (ale z tego co udało sie wywnioskować najczęciej korzystały z własnej, wewnętrznej bazy danych). Jednak mimo tego niepowodzenia udało się natafić na kilka serwisów zajmujących sie tematyką krzyżówek, do których warto jest zajrzeć, jeżeli kogoś interesuje ta tematyka. Jednym z takich miejsc jest, jak się wydaje: www.crosswordtournament.com/links/index.htm.
W wyniku zaistaniałej "suszy" informacyjnej, postanowiono wykonać program od podstaw samodzielnie.
Podstawą działania pierwszej części programu jest komunikacja przez protkół HTTP z dwoma wybranymi serwisami: Słownik Języka Polskiego PWN oraz Wolnodostępny Słownik Synonimów języka polskiego (w przypadku gdy opis hasła jest jednowyrazowy). Przyczyny wyboru tych stron były następujące:
Po wysłaniu wszystkich zapytań i uzyskaniu, bądź nie, satysfakcjonujących odpowiedzi, nastepuje wypełnianie siatki. W przypadku gdy któreś z haseł nie zostanie znalezione, powinno następić wyszukiwanie pasujących słów z wykorzystaniem jednego ze słowników. Niestety tej drugiej częsci nie udało się dokończyć i istnieje ona tylko jako osobny program potrafiący dopasować słowa ze słownika o danych parametrach (długość, występujące litery).
Ponieważ, liczba odpowiedzi na jedno zapytanie z wyżej wymienionych stron jest różna (w skrajnych przypadkach od zera do kilkunastu), należało ustalić kryterium kolejności, w jakiej nastąpią próby wpisania kolejnych haseł do siatki.
Po kilkunastu próbach okazało się, że najpewniejszymi wynikami są synonimy, gdyż najcześciej znajdowano jeden, maksymalnie dwa o rządanej długości. Dlatego też wpisywane są one jako pierwsze i tym samym są miejscem krytycznym całego postepowania, gdyż kolejne wpisywane słowa są dopasowywane do tych które zostały zaakceptowane i wpisane wcześniej. A, więc jeżeli pierwszych kilka haseł zostanie źle zidentyfikowanych, kolejne, nawet jeżeli będą właściwe, nie będą wpisane do siatki. Niemniej poczas eksperymentów nie zaobserwowano takiego przypadku.
Kolejnym kryterium jest ilość znalezionych odpowiedzi. Algorytm wpisuje najpierw, te hasła, które mają najmniej znalezionych możliwości (optymalnie jedna), a następnie te z większą ich ilością.
Przy każdym kolejnym wpisie do siatki, badane są ewentualne kolizje. Jeśli wystąpi kolizja, wybierana jest następna pozycja (jeżeli istnieje) z listy znalezionych odpowiedzi na dane pytanie. Jeżeli wszystkie ze znalezionych odpowiedzi powodują kolizje, to nic nie zostaje wpisane do siatki.
Program stworzony w ramach tego projektu jest hybrydą, w której wykorzytany jest kod znazleiony na sieci, oraz napisany przeze mnie. I tak:
Wszystkie operacje są wykonywane w trybie tekstowym. Po uruchomieniu, program wczytuje plik z danymi, następnie dla każdego opisu wysyła zapytanie na stronę Słownika PWN lub Synonimów i wypisuje na ekranie otrzymane odpowiedzi. Cyfra przed każdą odpowiedzią oznacza numer pytania którego się dotyczy (kolejność bezpośrednio z pliku)
Przykładowe pliki krzyżówki znajdują sie poniżej, w przykładach sesji.
Pytania z poniższych plików krzyżówki, pochodzą z dziennika "Metro", z sekcji: "KRZYŻÓWKA z koociakiem"
METRO 06-06-2006 > #....#.#.#. > #.#........ > #.#....#.#. > ......#.... > ####....... > #####.#.... > #####...... > ########... > #######.... <haslo> 1 1 2 pół stereo <dl> 4 <haslo> 0 1 2 ciemność <dl> 4 <haslo> 0 4 1 składa się z kilku dywizji lub brygad <dl> 6 <haslo> 0 2 4 zażyłość <dl> 8 <haslo> 0 3 4 uchylenie się <dl> 4 <haslo> 1 1 4 haracz <dl> 4 <haslo> 1 1 5 dawniej o stożku <dl> 5 <haslo> 1 2 6 ten najlepszy <dl> 6 <haslo> 1 1 9 ktoś od usuwania gości z lokalu <dl> 9 <haslo> 1 1 11 grupa jeźdźców <dl> 9 <haslo> 1 3 8 umiłowana najdroższa <dl> 4 <haslo> 1 3 10 kamizelka ludowego stroju <dl> 6 <haslo> 0 4 8 Gioconda czyli Mona <dl> 4 <haslo> 0 5 5 rolada z jabłkami <dl> 7 <haslo> 0 6 8 krab od końca <dl> 4 <haslo> 0 7 6 dziecko nie wiadomo skąd <dl> 6 <haslo> 1 1 7 listek w kartach <dl> 3 <haslo> 0 8 9 porządek <dl> 3 <haslo> 0 9 8 morski ssak futerkowy <dl> 4
Czekaj........ Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://synonimy.ux.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://synonimy.ux.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://synonimy.ux.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://synonimy.ux.pl Sciagnieto plik html z: http://sjp.pwn.pl 2. znalezione: mrok, synonim: 1, ilosc znalezionych: 1 --------------------------- 3. znalezione: korpus, synonim: 0, ilosc znalezionych: 1 --------------------------- 4. znalezione: komitywa, synonim: 1, ilosc znalezionych: 1 --------------------------- 5. znalezione: okno, synonim: 0, ilosc znalezionych: 2 --------------------------- 5. znalezione: unik, synonim: 0, ilosc znalezionych: 2 --------------------------- 8. znalezione: dobrze, synonim: 0, ilosc znalezionych: 6 --------------------------- 8. znalezione: zrobić, synonim: 0, ilosc znalezionych: 6 --------------------------- 8. znalezione: źródło, synonim: 0, ilosc znalezionych: 6 --------------------------- 8. znalezione: akcent, synonim: 0, ilosc znalezionych: 6 --------------------------- 8. znalezione: bardzo, synonim: 0, ilosc znalezionych: 6 --------------------------- 8. znalezione: chwila, synonim: 0, ilosc znalezionych: 6 --------------------------- 10. znalezione: kawalkada, synonim: 0, ilosc znalezionych: 1 --------------------------- 17. znalezione: pik, synonim: 0, ilosc znalezionych: 1 --------------------------- 18. znalezione: ład, synonim: 1, ilosc znalezionych: 2 --------------------------- 18. znalezione: ład, synonim: 1, ilosc znalezionych: 2 --------------------------- #mrok#p#.#k #.#komitywa #.#unik#.#w korpus#...a ####......l #####.#...k #####.....a ########ład #######...a
METRO 13-06-2006 > .....#.###. > #.#.#....#. > #.#........ > ....#....#. > #####.#.... > ####....... > #####.#.... > ########... > #######.... <haslo> 0 1 1 bujda <dl> 5 <haslo> 1 1 2 rura z muszką <dl> 4 <haslo> 1 1 4 górskie ostrze <dl> 4 <haslo> 1 1 7 roku cztery <dl> 4 <haslo> 1 1 11 burt znany m in z westernów <dl> 9 <haslo> 0 2 6 syntezator <dl> 4 <haslo> 1 2 6 osiłek <dl> 6 <haslo> 1 2 8 cofanie się morza <dl> 6 <haslo> 1 2 9 inaczej o bodziszku <dl> 8 <haslo> 0 3 4 zwykle utożsamiany z harmonią <dl> 8 <haslo> 0 4 1 stara kraszewskiego <dl> 4 <haslo> 0 4 6 państwo na morzu śródziemnym <dl> 4 <haslo> 0 5 8 auto samara <dl> 4 <haslo> 1 5 10 miasto na południe od krosna <dl> 5 <haslo> 0 6 5 nieokrzesaniec <dl> 7 <haslo> 0 7 8 wyżywienie <dl> 4 <haslo> 0 8 9 rojne domki <dl> 3 <haslo> 0 9 8 na przykład do łożysk <dl> 4
Czekaj........ Sciagnieto plik html z: http://synonimy.ux.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://synonimy.ux.pl Sciagnieto plik html z: http://synonimy.ux.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://synonimy.ux.pl Sciagnieto plik html z: http://synonimy.ux.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl 1. znalezione: bajda, synonim: 1, ilosc znalezionych: 2 --------------------------- 1. znalezione: bzdet, synonim: 1, ilosc znalezionych: 2 --------------------------- 4. znalezione: koło, synonim: 0, ilosc znalezionych: 5 --------------------------- 4. znalezione: mały, synonim: 0, ilosc znalezionych: 5 --------------------------- 4. znalezione: mieć, synonim: 0, ilosc znalezionych: 5 --------------------------- 4. znalezione: nowy, synonim: 0, ilosc znalezionych: 5 --------------------------- 4. znalezione: trzy, synonim: 0, ilosc znalezionych: 5 --------------------------- 7. znalezione: atleta, synonim: 1, ilosc znalezionych: 3 --------------------------- 7. znalezione: mocarz, synonim: 1, ilosc znalezionych: 3 --------------------------- 7. znalezione: siłacz, synonim: 1, ilosc znalezionych: 3 --------------------------- 8. znalezione: odpływ, synonim: 0, ilosc znalezionych: 1 --------------------------- 11. znalezione: baba, synonim: 0, ilosc znalezionych: 1 --------------------------- 16. znalezione: wikt, synonim: 1, ilosc znalezionych: 1 --------------------------- bajda#k###. #.#.#aoo.#. #.#..tłd... baba#lop.#. #####e#ł... ####.t.y... #####a#wikt ########... #######....
> ##.##.###.# > ..........# > ##....#.#.# > .....#....# > ####....... > ######..... > ####....... > ########... > #######.... <haslo> 0 2 1 pani od płaszczy <dl> 10 <haslo> 1 1 3 kategorie na ringu i na macie <dl> 4 <haslo> 1 1 6 powtórzenie na życzenie <dl> 3 <haslo> 1 1 10 góry ze szczytem k2 <dl> 9 <haslo> 1 2 4 dalszy plan <dl> 3 <haslo> 1 2 5 liczba od sędziego <dl> 4 <haslo> 1 1 5 dawniej o stożku <dl> 5 <haslo> 1 2 8 zamieszanie rozgardiasz <dl> 6 <haslo> 0 3 3 do zabrania w dyskusji <dl> 4 <haslo> 0 4 1 artystyczna chała, bubel <dl> 5 <haslo> 0 4 7 gruby jak <dl> 4 <haslo> 1 4 9 cios przeciw ciosowi <dl> 6 <haslo> 0 5 5 zwano go też ddt <dl> 7 <haslo> 1 5 11 płonęły na nich czarownice z wyroków inkwizycji <dl> 5 <haslo> 0 6 7 futerkowy z rodziny psów <dl> 5 <haslo> 0 7 5 mistrz z włoska <dl> 7 <haslo> 0 8 9 ktoś z lechem <dl> 3 <haslo> 0 9 8 nory <dl> 4
Czekaj........ Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://synonimy.ux.pl 3. znalezione: bis, synonim: 0, ilosc znalezionych: 1 --------------------------- 5. znalezione: kąt, synonim: 0, ilosc znalezionych: 2 --------------------------- 5. znalezione: tło, synonim: 0, ilosc znalezionych: 2 --------------------------- 8. znalezione: rwetes, synonim: 0, ilosc znalezionych: 2 --------------------------- 8. znalezione: sodoma, synonim: 0, ilosc znalezionych: 2 --------------------------- 9. znalezione: głos, synonim: 0, ilosc znalezionych: 1 --------------------------- 11. znalezione: piec, synonim: 0, ilosc znalezionych: 8 --------------------------- 11. znalezione: beka, synonim: 0, ilosc znalezionych: 8 --------------------------- 11. znalezione: bela, synonim: 0, ilosc znalezionych: 8 --------------------------- 11. znalezione: broń, synonim: 0, ilosc znalezionych: 8 --------------------------- 11. znalezione: duży, synonim: 0, ilosc znalezionych: 8 --------------------------- 11. znalezione: głąb, synonim: 0, ilosc znalezionych: 8 --------------------------- 11. znalezione: igła, synonim: 0, ilosc znalezionych: 8 --------------------------- 11. znalezione: juka, synonim: 0, ilosc znalezionych: 8 --------------------------- 12. znalezione: kontra, synonim: 0, ilosc znalezionych: 2 --------------------------- 12. znalezione: rzucać, synonim: 0, ilosc znalezionych: 2 --------------------------- 15. znalezione: jenot, synonim: 0, ilosc znalezionych: 1 --------------------------- ##.##b###.# ...t.i.r..# ##głos#w#.# ...o.#beka# ####...to.. ######jenot ####...st.. ########r.. #######.a..
http://www.mi.kn.bielsko.pl/~mi01kna/jednostki/krzyz.htm > ##########. > ###......#. > .##.######. > .##.#.##.#. > .#.....#.#. > .##.#.##.#. > ....#.#.... > .####.##.## > .#....##.## > .####.##.## > #........## <haslo> 1 1 11 sześćdziesiąt minut <dl> 7 <haslo> 0 2 4 jeden kilometr to tysiąc <dl> 6 <haslo> 1 2 4 sześćdziesiąt sekund <dl> 6 <haslo> 1 3 1 pojemności <dl> 8 <haslo> 1 4 6 podstawowa jednostka masy <dl> 8 <haslo> 1 4 9 1000 metrów <dl> 8 <haslo> 0 5 3 dwanaście sztuk <dl> 5 <haslo> 0 7 1 1000 kg <dl> 4 <haslo> 0 7 8 24 godziny <dl> 4 <haslo> 0 9 3 jednostka pojemności <dl> 4 <haslo> 0 11 2 jest sto razy większy od jednego milimetra <dl> 8
Czekaj........ Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://synonimy.ux.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl Sciagnieto plik html z: http://sjp.pwn.pl 1. znalezione: godzina, synonim: 0, ilosc znalezionych: 1 --------------------------- 3. znalezione: minuta, synonim: 0, ilosc znalezionych: 1 --------------------------- 5. znalezione: kilogram, synonim: 0, ilosc znalezionych: 1 --------------------------- 6. znalezione: kilometr, synonim: 0, ilosc znalezionych: 1 --------------------------- 7. znalezione: tuzin, synonim: 0, ilosc znalezionych: 1 --------------------------- 8. znalezione: tona, synonim: 0, ilosc znalezionych: 1 --------------------------- 9. znalezione: doba, synonim: 0, ilosc znalezionych: 2 --------------------------- 9. znalezione: koło, synonim: 0, ilosc znalezionych: 2 --------------------------- 10. znalezione: litr, synonim: 0, ilosc znalezionych: 2 --------------------------- 10. znalezione: tona, synonim: 0, ilosc znalezionych: 2 --------------------------- ##########g ###m.....#o .##i######d .##n#k##k#z .#tuzin#i#i .##t#l##l#n tona#o#doba .####g##m## .#litr##e## .####a##t## #....m..r##
O programie
Ogólnie
Po jedynie kilkunastu testach można dojść do wniosku, że koncepcja programu rozwiązującego krzyżówki wykorzystującego do tego celu, jako bazę wiedzy, Internet jest właściwa. W gruncie rzeczy tylko to medium jest w pewien sposób, "podobne" do umysłu ludzkiego, ze swoją "zdolnością kojarzenia", oraz dynamicznie zwiększającymi się zasobami wiedzy. Dodatkowo dochodzi tutaj kwestia szybkości wyszukiwania i gromadzenia danych. Aby stworzyć od podstaw samą bazę danych, a następnie algorytmy ją przeszukujące na poziomie pozwalającym rozwiązywać rzeczywiste krzyżówki w skończonym czasie można spędzić całe lata i to bez gwarancji sukcesu. A tymczasem, ta część jest już niejako zrobiona i udostępniona, trzeba ją tylko właściwie wykorzytać.