Jak zrealizować generowanie możliwych kombinacji słów? |
Jak zrealizować generowanie możliwych kombinacji słów? |
15.07.2015, 08:21:52
Post
#1
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 0 Dołączył: 13.02.2009 Ostrzeżenie: (0%) |
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ż" ? -------------------- Lubisz okazje i promocje? Wbij na HotShops.pl z mojego refa i pozwól zdobyć mi pkt. ;)
|
|
|
15.07.2015, 09:08:15
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
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ć. |
|
|
16.07.2015, 11:43:47
Post
#3
|
|
Grupa: Zarejestrowani Postów: 555 Pomógł: 84 Dołączył: 20.02.2008 Skąd: Małopolska Ostrzeżenie: (0%) |
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). -------------------- Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+ Strona Domowa | Elradia MMORPG FireFox: make the web better. |
|
|
16.07.2015, 13:22:03
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
W jakim celu potrzebujesz czegoś takiego? Brzmi jak coś pod silnik wyszukiwarki, a do tego zadania mógłbyś zaprząc np. Solra.
|
|
|
Wersja Lo-Fi | Aktualny czas: 23.04.2024 - 22:43 |