Skip to content

Commit 271ff09

Browse files
author
Hamid Gasmi
committed
#158 in progress
1 parent ada8cff commit 271ff09

File tree

16 files changed

+79
-15
lines changed

16 files changed

+79
-15
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,65 @@
11
# python3
22
import sys
3+
import suffix_tree
4+
import queue
5+
from collections import namedtuple
36

7+
Edge = namedtuple('Edge', ['parent', 'node', 'start', 'len'])
8+
9+
# BFS traversal on the tree
10+
def non_shared_substring(suffix_tree, len_text):
11+
12+
fifo = queue.Queue()
13+
edge = Edge(-1, 0, 0, 0)
14+
fifo.put(edge)
15+
16+
while not fifo.empty():
17+
18+
parent_edge = fifo.get()
19+
node = parent_edge.node
20+
parent = parent_edge.parent
21+
22+
right_part = False
23+
end_left_part = True
24+
for child in suffix_tree.nodes[node]:
25+
26+
child_edge = suffix_tree.nodes[node][child]
27+
28+
right_part = True if child_edge.start > len_text else right_part
29+
end_left_part = end_left_part if child_edge.start == len_text else False
30+
31+
if child_edge.start >= len_text:
32+
continue
33+
34+
current_len = 0 if parent == -1 else suffix_tree.nodes[parent][node].len
35+
edge = Edge(node, child, parent_edge.start, current_len + parent_edge.len)
36+
fifo.put(edge)
37+
38+
if len(suffix_tree.nodes[node]) == 0:
39+
print("Over here 2")
40+
edge = Edge(parent, node, parent_edge.start, parent_edge.len + 1)
41+
break
42+
43+
elif (not right_part) and end_left_part:
44+
print("Over here 1: ", suffix_tree.nodes[node])
45+
edge = Edge(parent, node, parent_edge.start, parent_edge.len)
46+
break
47+
48+
return suffix_tree.text[edge.start:edge.start + edge.len]
49+
450
def solve (p, q):
5-
result = p
6-
return result
51+
pq_text = p + "#" + q + "$"
52+
53+
suffixTree = suffix_tree.Suffix_Tree(pq_text)
54+
print(suffixTree.nodes)
755

8-
p = sys.stdin.readline ().strip ()
9-
q = sys.stdin.readline ().strip ()
56+
result = non_shared_substring(suffixTree, len(p))
57+
58+
return result
1059

11-
ans = solve (p, q)
60+
if __name__ == "__main__":
61+
p = sys.stdin.readline ().strip ()
62+
q = sys.stdin.readline ().strip ()
1263

13-
sys.stdout.write (ans + '\n')
64+
ans = solve (p, q)
65+
sys.stdout.write (ans + '\n')
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
AAAAAAAAAAAAAAAAAAAA
2-
TTTTTTTTTTTTTTTTTTTT
1+
AA
2+
TT
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
A
1+
A
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
CCAAGCTGCTAGAGG
2-
CATGCTGGGCTGGCT
1+
AAA
2+
TTT
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
AA
1+
A
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
ATGCGATGACCTGACTGA
2-
CTCAACGTATTGGCCAGA
1+
AAAAAAAAAAAAAAAAAAAA
2+
TTTTTTTTTTTTTTTTTTTT
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
ATG
1+
A
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
CCAAGCTGCTAGAGG
2+
CATGCTGGGCTGGCT
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
AA
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ATGCGATGACCTGACTGA
2+
CTCAACGTATTGGCCAGA
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ATG
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
CAAAC
2+
AACCC
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
CACAA
2+
AACCC
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
CAACAA
2+
AAACCC

0 commit comments

Comments
 (0)