#!/usr/bin/python

#Solution to REVP Rosalind problem - Locating Restriction Sites
#Author: Peter Vlasveld

#read in file and get contents
f1 = open("rosalind_revp.txt")
content = f1.readlines()
f1.close()

#get DNA string from content
DNAStr = ""
for i in xrange(1,len(content)):
    DNAStr += content[i].strip()

#function to return the DNA compliment
def DNACompliment(stri):
	rev = stri[::-1]
	revList = list(rev)
	for i in xrange(0, len(revList)):
		if revList[i] == "A":
			revList[i] = "T"
		elif revList[i] == "T":
			revList[i] = "A"
		elif revList[i] == "G":
			revList[i] = "C"
		elif revList[i] == "C":
			revList[i] = "G"
	revCompStr = "".join(revList)
	return revCompStr

#loop through DNA string
indexes = []
lengths = []
for j in xrange(0, len(DNAStr)-3):
	#evaluating 4 to 12 character sets, taking the reverse compliment and comparing,
	#if a match is found record the index and length and then break
	for k in xrange(4, 13):
		comp = DNACompliment(DNAStr[j:j+k])
		if comp == DNAStr[j:j+k]:
			indexes.extend([j+1])
			lengths.extend([k])
			print(DNAStr[j:j+k])
			break

#output results to a file
f2 = open("output.txt","w")			
for i in xrange(0,len(indexes)):
	f2.write(str(indexes[i]) + " " + str(lengths[i]) + "\n")
f2.close()