This is an old revision of the document!
Problema mariajelor stabile
Sugestii de întrebări la corectare
(etapa 1)
cum sunt reprezentate preferințele persoanelor din problemă?
cum sunt reprezentate logodnele?
ce înseamnă că pentru o persoană există un partener mai potrivit decât partenerul său actual?
ce listă parcurgi pentru a determina că pentru o persoană există un partener mai potrivit decât partenerul său actual? este necesar să o parcurgi până la final?
ce fel de recursivitate au diversele funcții din program?
unde ai folosit operatori logici? explică folosirea fiecăruia din ei.
(etapa 2)
ce funcții noi ai implementat în această etapă?
ce înseamnă că un match este stabil?
cum testezi că un match este stabil?
ce înseamnă fiecare parametru din apelul lui better-match-exists?
Atenție la corectare:
(etapa 3)
descrie în cuvinte algoritmul de găsire a unui match stabil
cum decizi că un cuplu este instabil?
ce se întâmplă când un bărbat cere în căsătorie o femeie deja logodită?
dacă un bărbat este părăsit de logodnică, el o cere în căsătorie pe prima femeie pe care nu a cerut-o încă, sau o ia de la început? (și unde în cod se întâmplă asta?)
ce fel de recursivitate au funcțiile create cu named let?
Atenție la corectare:
depunctați pentru orice apel duplicat (aceeași funcție pe aceleași argumente), chiar dacă este doar un (car x), însă nu depunctați dacă apelurile duplicate sunt pe ramuri diferite ale unui if sau cond, pentru că în acest caz expresia se evaluează o singură dată
nu am interzis explicit fold la TODO 1, deci nu depunctați pentru asta
la TODO 1 sunt permise funcții anonime ca argumente pentru funcționale, dar nu altfel de funcții ajutătoare
checker-ul de pe vmchecker folosește un stable-match? al nostru, pentru a preveni cazul în care stable-match-ul lor accepta și ce nu trebuie; totuși, stable-match?-ul nostru presupune că ei au în etapa2.rkt un better-match-exists? corect - în caz contrar, vor fi probleme cu checkerul (atât în etapa 3 cât și în etapa 4)