Fundamente de informatică - Tema 4
- Citirea de expresii
Scrieți o funcție care citește o formulă în formă
normală conjunctivă și o reprezintă ca listă de liste de literali.
Formula se dă la intrare cu câte o clauză pe fiecare linie,
până la sfârșitul intrării (EOF).
Identificatorii (numele propozițiilor) sunt secvențe de litere, cifre și liniuță de subliniere. Semnul + reprezintă disjuncția, și ~ reprezintă negația. Între operatori și identificatori pot fi un număr arbitrar (inclusiv zero) de spații albe (spațiu, tab, etc.). Exemplu:
a +b+~c0 +~ d
c_1
~a+ c0
- Lucrul cu liste
O configurație de blocuri suprapuse (ca în ultimul curs) se poate
reprezenta ca mulțime de liste de întregi: în fiecare listă, primul
element fiind cel mai de sus.
Scrieți o funcție care primește o configurație și returnează mulțimea tuturor configurațiilor care se pot obține mutând un bloc liber altundeva: pe alt bloc, sau plasându-l singur.
Exemplu: din configurația { [1;2], [3] } se obține mulțimea de configurații:
{ { [1], [2], 3] }, { [2], [1;3] }; { [3;1;2] } }
Soluție scurtă, sau definind întâi un modul pentru mulțimi cu tipărire.
Marius Minea
Last modified: Thu Nov 8 15:30:00 EEST 2012