LTAL, Proiect: Word Break

Idee: Proiectați și implementați în Python algoritmul Knuth-Liang pentru cratimare automată. Ar trebui să scrieți un program care citește o listă de cuvinte (de exemplu, un text) și să imprime aceste cuvinte cu indicarea cratimelor considerate legale, de ex.:

ltal

Având în vedere că recunoasterea demnității inerente a tuturor membrilor familiei umane și a drepturilor lor egale și inalienabile constituie fundamentul libertății, dreptății și păcii în lume,

Considerând că nerespectarea și nerespectarea drepturilor omului au dus la acte de bar-ba-rie care transformă conștiința umanității și că apariția unei lumi în care ființele umane vor fi libere să vorbească și să creadă, liber din teroare și jumătate de inimă, a fost proclamat ca fiind cea mai înaltă as-pi-ra-tion a omului,

Având în vedere că este esențial ca drepturile omului să fie protejate de un stat de drept, astfel încât omul să nu fie constrâns, în mod suprem, la revolta împotriva ty-ran-nie și op-press.,

Considerând că este esențial să încurajăm dezvoltarea relațiilor de prietenie între națiuni,

Având în vedere că în Cartă popoarele Națiunilor Unite și-au proclamat din nou credința în drepturile fundamentale ale omului, în demnitate și în valoarea persoanei umane, în egalitatea drepturilor bărbaților și femeilor și că au decis a re-rezolvat pentru a face pro-socialul și a instaura condiții de viață mai bune într-o mai mare libertate, .

Pentru testele dvs. luați câteva texte literare în franceză, la care am lucrat, diferite de „Declarație”. Dacă doriți, comparați soluția cu rezultatul furnizat de JavaScript, menționat mai jos. Unele mici diferențe pot persista, nu veți procesa excepții.

Introducere

Iată testul. Modificați lățimea paginii, verificați cum se modifică umplerea liniei. (Aici sistemul de cratimare introduce „cratimă condițională” HTML în cuvintele:, vizibil numai când apare cratimarea).

Tehnica este relativ complicată, deoarece regulile de divizare sunt adesea eterogene, fonetice, morfologice și etimologice (semantice), cu mai multe excepții. În italiană, divizarea destul de mecanică în silabe, eufonică, domină în mare măsură (tăiată înaintea unei consoane). Dar în poloneză sau franceză, semantica fragmentelor de cuvinte este mai importantă decât silabele, iar regulile sunt de peste zece ori mai mari.

Modele de Liang

O regulă locală poate fi invalidată de o alta: trans-americană, dar transacțională și trans-por-ter. Apoi: mas-to-donte apos-trophe, dar de-struc-tu-rer (și după unii, „apostrof” a fost tăiat prost, deoarece „apo” și „strofă” sunt entități morfologice.)

Ideea este de a asambla (manual sau semi-automat) un anumit număr (zeci sau mii.) De tipare: combinații de litere, unde găsim, intercalate, numere întregi mici: 1, 2, 3. Absența unui număr este egal cu zero. Un număr impar înseamnă că tăierea este permisă, un număr par: interzis. Dacă tiparele interferează (mai multe combinații declarate în acest fel sunt într-un cuvânt, în același loc - numărul mai mare „câștigă”).