Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak zrealizować generowanie możliwych kombinacji słów?
adam1024
post 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. ;)
Go to the top of the page
+Quote Post
Pyton_000
post 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ć.
Go to the top of the page
+Quote Post
Skie
post 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.
Go to the top of the page
+Quote Post
Crozin
post 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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.04.2024 - 01:26