Czesc, probuje napisac program do wypisania wszystkich podzialow na slowa dowolnego napisu, np. NAPIS=matematykapustkinieznosi.
Napisalem kod, ale mam problem z ostateczym odczytaniem wynikow, dlatego prosilbym Was o pomoc w sprawdzeniu algorytmu.
Z pliku txt pobieram liste rzeczownikow, przy czym w pamieci, w zbiorze SET pozostawiam tylko te, ktore zawieraja sie w napisie NAPIS.
Nastepnie, wybieraz z SET slowo, od ktorego rozpoczyna sie NAPIS. Slowo to jest pierwszym elementem podzialu, wiec nastepnie probuje wyznaczyc (rekurencyjnie) podzial NAPIS z pominietym poczatkiem.
Przykladowo: w matematykapustkinieznosi znalazlem slowo matematyka, wiec szukam dalej rekurencyjnie podzialu na slowa napisu pustkinieznosi.
zbior_slow = set()
for slowo in set_rzecz:
if slowo in 'matematykapustkinieznosi':
zbior_slow.add(slowo)
def podzial_na_slowa(zbior_slow, wyraz):
podzialy = []
for slowo in zbior_slow:
if wyraz.find(slowo) == 0:
podzialy.append(slowo)
if wyraz[len(slowo):] <> '':
podzialy.append( podzial_na_slowa( zbior_slow, wyraz[len(slowo):]) )
return podzialy
Wynik funkcji podzial_na_slowa(zbior_slow, 'matematykapustkinieznosi') umiescilem w zalaczniku.
W efekcie dostaje liste zagniezdzona, i po wynikach widac, ze zawiera ona to czego szukam, ale nie potrafie juz w przyjazny sposob wyswietlic wynikow, czyli np.
matematyka-pustki-nie-znosi
ma-tematyka-pustki-nie-znosi
Czy macie moze jakis pomysl jak moznaby poprawic algorytm albo wyswietlic dane w listy?
- wyniki.txt (6 KB) - ściągnięć: 108