This shows you the differences between two versions of the page.
pp:22:teme:racket-smp [2023/01/14 16:46] mihaela.balint [Precizări] |
pp:22:teme:racket-smp [2023/02/28 23:30] (current) mihaela.balint |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Problema mariajelor stabile ====== | + | ====== Racket: Problema mariajelor stabile ====== |
* Data publicării: 28.02.2023 | * Data publicării: 28.02.2023 | ||
Line 24: | Line 24: | ||
În această etapă vă veți familiariza cu problema mariajelor stabile (SMP) și felul în care modelăm datele sale de intrare in Racket, apoi veți implementa câteva funcții de manipulare a acestor date. | În această etapă vă veți familiariza cu problema mariajelor stabile (SMP) și felul în care modelăm datele sale de intrare in Racket, apoi veți implementa câteva funcții de manipulare a acestor date. | ||
- | În SMP se dau un număr egal de bărbați și femei și, pentru fiecare dintre aceștia, un "clasament" al persoanelor de sex opus, și se cere să se căsătorească fiecare bărbat cu câte o femeie astfel încât să nu existe un bărbat și o femeie în căsătorii diferite care s-ar prefera unul pe altul în detrimentul soților lor. Dacă ar exista o asemenea pereche, cei doi ar fi motivați să își părăsească partenerii pentru a fi împreună, așadar căsătoriile lor nu ar fi stabile (de aici numele problemei). | + | În SMP se dau un număr egal de bărbați și femei și, pentru fiecare dintre aceștia, un "clasament" al tuturor persoanelor de sex opus, și se cere să se căsătorească fiecare bărbat cu câte o femeie astfel încât să nu existe un bărbat și o femeie în căsătorii diferite care s-ar prefera unul pe altul în detrimentul soților lor. Dacă ar exista o asemenea pereche, cei doi ar fi motivați să își părăsească partenerii pentru a fi împreună, așadar căsătoriile lor nu ar fi stabile (de aici numele problemei). |
Vom modela o instanță SMP în Racket ca pe două liste (egale ca lungime) de preferințe masculine, respectiv feminine, ca în exemplul următor: | Vom modela o instanță SMP în Racket ca pe două liste (egale ca lungime) de preferințe masculine, respectiv feminine, ca în exemplul următor: | ||
Line 37: | Line 37: | ||
[cora bobo cos adi ])) | [cora bobo cos adi ])) | ||
</file> | </file> | ||
- | Astfel, lista de preferințe masculine/feminine este o listă de liste, fiecare listă interioară având pe prima poziție un bărbat/o femeie, iar pe următoarele poziții persoanele de sex opus în ordinea preferințelor acestui bărbat/acestei femei. Deși în exemplu bărbații/femeile apar în ordine alfabetică, nu presupuneți că acest lucru este necesar să se întâmple. | + | Astfel, lista de preferințe masculine/feminine este o listă de liste, fiecare listă interioară având pe prima poziție un bărbat/o femeie, iar pe următoarele poziții persoanele de sex opus în ordinea preferințelor acestui bărbat/acestei femei. De-a lungul întregii teme, o listă de preferințe masculine/feminine se va referi la o listă cu acest format. Când, în schimb, ne vom referi la lista preferințelor unei persoane p, ne vom referi la felul în care p a clasat persoanele de sex opus, așadar o listă care conține doar persoane de sex opus, nu și pe p pe prima poziție. Deși în exemplu bărbații/femeile apar în ordine alfabetică, nu presupuneți că acest lucru este necesar să se întâmple. |
Aceste liste vor fi definite în checker, însă este necesar să le înțelegeți structura pentru a putea implementa funcțiile din cerință. | Aceste liste vor fi definite în checker, însă este necesar să le înțelegeți structura pentru a putea implementa funcțiile din cerință. | ||
Line 60: | Line 60: | ||
(get-pref-list pref person) | (get-pref-list pref person) | ||
</file> | </file> | ||
- | * get-pref-list primește o listă de preferințe (masculine sau feminine) și o persoană person ale cărei preferințe apar (garantat) în listă și întoarce lista preferințelor lui person | + | * get-pref-list primește o listă de preferințe (masculine sau feminine) și o persoană person ale cărei preferințe apar (garantat) în listă și întoarce lista preferințelor lui person |
* ex: ''%%(get-pref-list women-preferences 'bia)%%'' => '''(adi cos bobo)'' | * ex: ''%%(get-pref-list women-preferences 'bia)%%'' => '''(adi cos bobo)'' | ||