added LEXF solution
This commit is contained in:
parent
c8afc30269
commit
5593b9353c
48
LEXF.py
Normal file
48
LEXF.py
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
#LEXF Rosalind.info Solution - Enumerating k-mers Lexicographically
|
||||||
|
#Author: Peter Vlasveld
|
||||||
|
#Date: 12/01/2019
|
||||||
|
|
||||||
|
#get dataset from file
|
||||||
|
f1 = open("rosalind_lexf.txt")
|
||||||
|
content = f1.readlines()
|
||||||
|
f1.close()
|
||||||
|
|
||||||
|
#duplicate the lex set r times
|
||||||
|
firstLex = content[0].split( )
|
||||||
|
lex = []
|
||||||
|
for i in xrange(0, int(content[1])):
|
||||||
|
lex.extend(firstLex)
|
||||||
|
|
||||||
|
#recursive function to get all possible combinations within the lex set
|
||||||
|
def wordCombo (arr, data, start, end, index, r):
|
||||||
|
if index == r:
|
||||||
|
tempStr = ""
|
||||||
|
for i in data:
|
||||||
|
tempStr += i
|
||||||
|
global comboList
|
||||||
|
comboList.append(tempStr)
|
||||||
|
return
|
||||||
|
i = start
|
||||||
|
while i <= end and end - i + 1 >= r - index:
|
||||||
|
data[index] = arr[i]
|
||||||
|
wordCombo(arr, data, i + 1, end, index + 1, r)
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
#empty lsit to be passed into function
|
||||||
|
data = [0]*int(content[1])
|
||||||
|
|
||||||
|
#global list to be filled with combinations
|
||||||
|
comboList = []
|
||||||
|
|
||||||
|
#run the function, remove duplicates, and sort it alhphabetically
|
||||||
|
wordCombo(lex,data,0,len(lex)-1,0,int(content[1]))
|
||||||
|
finalList = list(set(comboList))
|
||||||
|
sortedList = sorted(finalList)
|
||||||
|
|
||||||
|
#print the list to a file
|
||||||
|
f2 = open("output.txt", "w")
|
||||||
|
for i in sortedList:
|
||||||
|
f2.writelines(i + "\n")
|
||||||
|
f2.close()
|
Loading…
Reference in New Issue
Block a user