Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak zrealizować generowanie możliwych kombinacji słów?
Forum PHP.pl > Forum > PHP
adam1024
W jaki sposób mogę zrealizować możliwe generacje słów.
Mamy dajmy na to słowo: "żoliborz"
w jaki sposób wygenerować dla niego kombinacje: "rzoliborz","rzoliboż","żoljborz", "żoljboż" ?
Pyton_000
musiałbyś napisać wyrażenie typu

(rz|ż)ol(i|j)bo(rz|ż)

a potem taki string parsować i generować kombinacje. Ktoś tu już na forum coś takiego robił ale do zdań, musisz poszukać.
Skie
1. Stwórz kolekcję wszystkich translacji, np [ ż => rz, i => j, rz => ż, j => i ]
2. Potnij swój tekst na tablicę wg kluczy w kolekcji translacji, czyli z "żoliborz" powinno powstać [ żol, ibo, rz ] oraz "odwróconą" tablicę [ rzol, jbo, ż ]
3. Wygeneruj wszystkie binarne ciągi o długości równej ilości elementu w tablicy z pkt. 2, czyli dla żoliborza będą to kombinacje wartości 3: 000, 001, 010, 011, 100, 101, 110, 111
4. Dla każdego ciągu binarnego w miejscu 0 wstaw fragment tekstu z pierwszej tablicy, dla 1 wstaw fragment tekstu drugiej tablicy
np. dla 101 to będzie "rzoliboż"

Zalety:
- zadziała dla każdego rozbudowanego tekstu
- teksty generowane są na życzenie, wieć nie trzeba ich trzymać w pamięci cały czas - tworzysz tekst z ciągu binarnego kiedy go potrzebujesz - potem go zapominasz
- brak uzycia regexpa
- brak użycia drogich funkcji operujących na stringach (oprócz exploda na początku)

Czy jes to najlepsze rozwiazanie? Nie wiem, ale to pierwsze co mi przyszło do głowy dla generacji tekstu i moim zdaniem nadaje się. Przetestuj.

Jeżeli jednak potrzbujesz tej generacji do stworzenia regexpa, czyli nie po to by generować słowa, a raczej sprawdzać czy są poprawne (nie licząc błędów ortograficznych) to wtedy jest nawet prościej bo zamiast pocinać tablicę możesz od razu podmieniać wartości wg kolekcji translacji. Czyli np jak masz j=>i to każde j podmienić należy na (j|i).
Crozin
W jakim celu potrzebujesz czegoś takiego? Brzmi jak coś pod silnik wyszukiwarki, a do tego zadania mógłbyś zaprząc np. Solra.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.