Witam,
Otóż istnieje sobie taka jedna gra, słowotok, w której gracz łączy ze sobą sąsiadujące litery, które mają utworzyć słowo.
Dolny limit - 3
Górny limit - 16 liter
Plansza wygląda tak:
Teraz tak, mam pod program podpiętą bazę danych słów ( 30 mb ). Macie jakieś pomysły, jak zrobić, by za pomocą wpisanych przeze mnie liter ( a jest ich 16 ), były wypisywane słowa na ekranie?
Aktualnie procedura do znajdywania słów wygląda w taki sposób i niestety, na nic więcej nie mogę wpaść:
while not eof(plik) do begin count:=0; readln(plik, s); // czytam slowo dlugosc:=length(s); // pobieram dlugosc slowa if((dlugosc >= 3) AND (dlugosc<=16)) then // warunek by bylo slowo w slowotoku begin for i:=1 to dlugosc do // petla od 1 do dlugosci odczytanego slowa begin for j:=1 to 16 do // petla po wszystkich wpisanych literach begin if(s[i] = g_znaki[j]) then inc(count); end; end; if(count=dlugosc) then writeln(s); end; end;
Niestety, jest to o wiele za mało, bo prawie w dalszym ciągu wypisuje mi +1000 słów. Oczywiście, mógłbym zablokować to, by słowa rozpoczynające się z taką samą frazą ( np. absurdalny, absurd, absurdalnie, absurdalność), ale w dalszym ciągu będę miał bardzo dużo wyników.
Myślałem, by zastosować tablicę dwuwymiarową i wpisywać np. litery od lewej strony, ale z tym by było naprawdę dużo zabawy, bo jest tyle kombinacji, że masakra
Użytkownik Wielkie Jol edytował ten post 02.01.2015 19:25