De figuur toont vier personen en hun onderlinge relatie.

likes
likes

De betekenis van de pijl is kent. Bijvoorbeeld 'Jens kent Eva':

Jens → Eva

Wanneer je iemand kent, wil dit dus niet zeggen dat de andere persoon jou kent. Enkel wanneer er tussen twee personen twee pijlen in tegengestelde richting getekend zijn, duidt dit op een vriendschapsrelatie. Bijvoorbeeld 'Eva en Arno zijn vrienden'.

Eva ⇆ Arno

De relaties tussen alle personen wordt bijgehouden in een dictionary:

{
  'Eva': {'Margaux', 'Arno'},
  'Arno': {'Eva', 'Jens'},
  'Jens': {'Margaux', 'Eva'},
  'Margaux': set()
}

De value bij een key van de dictionary is een set van personen gekend door de key. Je mag ervan uitgaan dat elke persoon steeds als key voorkomt in de dictionary. Wanneer een persoon niemand kent, dan is de value een lege set set(). Er kan steeds een persoon zijn die geen enkele andere persoon kent en ook door geen enkele andere persoon gekend is.

Opgave

Programmeer volgende vier functies:

Voorbeeld

>>> kennissen = {'Eva': {'Margaux', 'Arno'}, 'Arno': {'Eva', 'Jens'}, 'Jens': {'Margaux', 'Eva'}, 'Margaux': set()}

>>> vriend_of_kennis(kennissen, 'Arno', 'Eva')
'Arno en Eva zijn vrienden'
>>> vriend_of_kennis(kennissen, 'Eva', 'Margaux')
'Eva kent Margaux'

>>> unieke_kennissen(kennissen, 'Arno', 'Eva')
{'Margaux', 'Jens'}
>>> unieke_kennissen(kennissen, 'Eva', 'Margaux')
{'Arno'}

>>> bekendheid(kennissen)
{'Margaux': 2, 'Arno': 1, 'Eva': 2, 'Jens': 1}

>>> meest_gekende({'Margaux': 2, 'Arno': 1, 'Eva': 2, 'Jens': 1})
['Margaux', 'Eva']