Jaki algorytm do scrabbli

0

Chciałbym napisać prosty algorytm do Scrabble, chodzi o wyszukiwanie wyrazów z liter.

Mam słownik. Podobno można to napisać RegExpem. Jednak nie wiem jak go napisać tak, żeby litery się powtarzały dokładnie raz.

 
"[bsgdaeo]?[bsgdaeo]?[bsgdaeo]?[bsgdaeo]?[bsgdaeo]?[bsgdaeo]?[bsgdaeo]?"

tylko że tak można wyszukać np. wyraz bbbbbbb a ja mam tylko jedno b. Jak zablokować powtarzanie? Da się to zrobić jednym regexpem, czy trzeba robić to po kilkakroć?

Jeszcze można by było odfiltrowywać po jednym znaku. Np.

mamy litery abdcyfr
i mamy wyrazy w slowniku aby baby bab dupa

i robimy liste:
aby aby
baby baby
bab bab
dupa dupa

i filtrujemy a:
aby by
baby bby
bab bb
dupa dup

i tak aż przefiltrujemy wszystkie litery. I wyrazy, gdzie nie ma żadnej litery w kopii wyrazu to szukane

0

Najprościej? Wygeneruj wszystkie permutacje literek i szukaj w słowniku. Przecież user w ręce może mieć 6 czy 7 literek, czyli masz max 5040 permutacji. Jeśli sprawdzenie w słowniku zajmuje ci czas stały to w nie powinno być z tym problemu.

0

A jaki jest algorytm do permutacji?

Bo napisałem ten program w wersji tak jak napisałem w 1 poście, ale może da się go przyspieszyć? Bo gdybym szukał binarnie to by wychodziło dla 7 liter powiedzmy 7000 permutacji i ok. 18 przeszukań dla całego słownika, czyli 7000 * 18 = 136 000. A teraz mam 170 000 * ilość liter + 170 000.

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