rishiilluri

Untitled

Nov 17th, 2022
878
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.26 KB | None | 0 0
  1. # problem 5
  2. def prefix_size(P,Q):
  3.     n = len(P)
  4.     m = len(Q)
  5.     temp = min(n,m)
  6.     max_len = 0
  7.     s = P
  8.     s+=Q
  9.     for i in range(1, temp+1):
  10.         x1 = P[-i:]
  11.         x2 = Q[:i]
  12.         x3 = Q[i:]
  13.         if x1 == x2:
  14.             if i >= max_len:
  15.                 max_len = i
  16.                 s = P + x3
  17.             max_len = max(max_len, i)
  18.     return max_len, s
  19.  
  20. def shortest_superstring(A):
  21.     count = len(A)-1
  22.     while count:
  23.         count-=1
  24.         result_len = -1
  25.         for i in range(len(A)):
  26.             for j in range(i+1, len(A)):
  27.                 temp = prefix_size(A[i], A[j])
  28.                 if temp[0] > result_len:
  29.                     result_len = temp[0]
  30.                     final = temp[1]
  31.                     p = A[i]
  32.                     q = A[j]
  33.                 temp2 = prefix_size(A[j], A[i])
  34.                 if temp2[0] > result_len:
  35.                     result_len = temp2[0]
  36.                     final = temp2[1]
  37.                     p = A[j]
  38.                     q = A[i]
  39.         A.append(final)
  40.         A.remove(p)
  41.         A.remove(q)
  42.     return A[0]
  43.                        
  44.  
  45. print(shortest_superstring(["CATGC", "CTAAGT", "GCTA", "TTCA", "ATGCATC"]))
  46. print(shortest_superstring(["ABC", "EFG", "ABCD"]))
  47.    
Advertisement
Add Comment
Please, Sign In to add comment