1) Inleiding

   Bij hedendaags forensisch onderzoek wordt DNA gebruikt voor identificatie doeleinden. 
   Hierbij wordt het DNA uit een stukje biologisch materiaal gehaald, gerepliceert en
   geanaliseert. 

   DNA bestaan uit 4 bouwstenen G,A,T en C genoemd. Er zijn 2 soorten DNA : coderend DNA
   welke de gegevens bevat voor het bouwen van een levensvorm en niet coderend DNA. De
   laatste soort is uitermate bruikbaar voor identificate omdat nagenoeg uniek is per
   individu. 
   
   De plaats van stukken niet coderend DNA zijn bekend en worden altijd vooraf gegaan door
   een zogenaamde begin en eind marker. Het niet coderend DNA zelf is meestal een herhaling
   van een aantal identieke stukken vooraf gegaan door een start sequentie en eindigend met
   een eind sequentie.
   
   Voor identificatie is het aantal herhalingen belangrijk.   

2) Opdracht

   Schrijf een implementatie van de interface GeneticAnalyser welke een soort van 
   java.lang.Iterator is voor DNA sequenties. Echter in plaats van elementen uit een collectie
   geeft deze GeneticResults terug. 
   
   Er zijn 2 soorten GeneticResults :
   - GeneticResult.RANDOM : een willekeurig stuk DNA.
   - GeneticResult.REPEAT : een zich herhalend stuk DNA omsloten door een start en eind 
                            sequentie. 

   De begin en eind sequenties zelf zijn niet interesant en worden niet terug gegeven.
   
3) Voorbeeld

   De volgende DNA string : 
   
   CACAGTCTACATTAGACAACAACAACAACAGATTACACACAGTCT
   
   bestaat uit de volgende identificeerbare stukken : 

   CACAGTCT ACATTAG ACA ACA ACA ACA ACA GATTACA CAAAGTCT
   
   ..ruis.. Begin    1   2   3   4   5  Eind    ..ruis..

   De resultaten die het programma dient op te leveren na actereenvolgende aanroepen van next() zijn :
   
   - GeneticResult(RANDOM,CACAGTCT,1)
   - GeneticResult(REPEAT,ACA,5)
   - GeneticResult(RANDOM,CAAAGTCT,1)

4) Tips

   - GeneticResult bevat handige Factory methoden voor t snel aanmaken van GeneticResults.
   - Bij het bepalen van het aantal herhalingen is de kortst herhalende string bepalend.
     Dus bij ACAACACAAC kan je kiezen uit 5 * ACA of 2* ACAAC (en zelfs 1 * ACAACACAAC :-)
     Het juiste antwoord is dan 5*ACA
