Gegeven is een collectie van DNA-fragmenten uit een lange DNA-sequentie. Voor elk fragment is een lijst gegeven van fragmenten die zich voor het gegeven fragment bevinden. Een consistente ordening is een ordening die aan deze voorwaarden voldoet.

Bv. gegeven de fragmenten (ACA, ATT, GGC, CCA, AAT) en de volgende voorwaarden:

Deze voorwaarden kunnnen voorgesteld worden door een gerichte acyclische graaf:

DAG

Een consistente ordening is [ACA, ATT, CCA, GGC, AAT]. In de correspondeerende tekening van de graaf wijzen alle pijlen voorwaarts:

ordering

Opgave

Schrijf een Python functie ordering die een collectie DNA-fragmenten als parameter krijgt en die een lijst met een consistente ordening van deze fragmenten teruggeeft.

Voorbeeld

>>> ordering({'ACA': ['ATT', 'GGC'], 'ATT':['GGC', 'CCA'], 'GGC': ['AAT'], 'CCA': ['GGC', 'AAT']})
['ACA', 'ATT', 'CCA', 'GGC', 'AAT']