Mutations = 10 InitialLength = 400 @%=3 REM Generate sequence and Pretty Print result. FOR I%=1 TO InitialLength Sequence$ += FNRandomBase NEXT PROCDisplaySequence(Sequence$, 50) REM Make mutations and Pretty Print result. PRINT '"Mutating..." FOR I%=1 TO Mutations Position = RND(LENSequence$) CurBase$ = MID$(Sequence$, Position, 1) NewBase$ = FNRandomBase CASE RND(3) OF WHEN 1 REM Change a base PRINT "Change base " CurBase$ " at position " Position " to base " NewBase$ MID$(Sequence$, Position, 1)=NewBase$ WHEN 2 REM Delete a base PRINT "Delete base " CurBase$ " at position " Position Sequence$=LEFT$(Sequence$, Position - 1) + MID$(Sequence$, Position + 1) WHEN 3 REM Insert a base PRINT "Insert base " NewBase$ " at position " Position Sequence$=LEFT$(Sequence$, Position) + NewBase$ + MID$(Sequence$, Position + 1) ENDCASE NEXT PROCDisplaySequence(Sequence$, 50) END DEF FNRandomBase = MID$("ACGT", RND(4), 1) DEF PROCDisplaySequence(seq$, snap%) LOCAL a, c, g, t, i%, p% p% = !^seq$ FOR i%=0 TO LENseq$ - 1 IF i% MOD snap% == 0 PRINT 'i% ": "; VDU p%?i% CASE p%?i% OF WHEN ASC"A" a += 1 WHEN ASC"C" c += 1 WHEN ASC"G" g += 1 WHEN ASC"T" t += 1 ENDCASE NEXT PRINT ' "A: " a ' "C: " c ' "G: " g ' "T: " t PRINT "Total: "; a + c + g + t ENDPROC