-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathsolver_handler.py
57 lines (49 loc) · 2.01 KB
/
solver_handler.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
from solver_backtracking import solve
from solver_helper import text_to_sequence
def breach(hexdump, ram, datamine1, datamine2, datamine3):
datamine1 = text_to_sequence(datamine1)
datamine2 = text_to_sequence(datamine2)
datamine3 = text_to_sequence(datamine3)
# Check possible links between sequences
_1_2 = datamine1[len(datamine1) - 1] == datamine2[0]
_1_3 = datamine1[len(datamine1) - 1] == datamine3[0]
_2_1 = datamine2[len(datamine2) - 1] == datamine1[0]
_2_3 = datamine2[len(datamine2) - 1] == datamine3[0]
_3_1 = datamine3[len(datamine3) - 1] == datamine1[0]
_3_2 = datamine3[len(datamine3) - 1] == datamine2[0]
sequences = []
ram = int(ram)
if (ram >= len(datamine3)):
# Datamine 3 must be in the sequence
# Can it be combined?
if ram >= (len(datamine3) + len(datamine2) + len(datamine1) - 2):
# 1_2_3
if _1_2 and _2_3:
sequences.append(datamine1 + datamine2[1:] + datamine3[1:])
# 1_3_2
if _1_3 and _3_2:
sequences.append(datamine1 + datamine3[1:] + datamine2[1:])
# 2_1_3
if _2_1 and _1_3:
sequences.append(datamine2 + datamine1[1:] + datamine3[1:])
# 2_3_1
if _2_3 and _3_1:
sequences.append(datamine2 + datamine3[1:] + datamine1[1:])
# 3_1_2
if _3_1 and _1_2:
sequences.append(datamine3 + datamine1[1:] + datamine2[1:])
# 3_2_1
if _3_2 and _2_1:
sequences.append(datamine3 + datamine2[1:] + datamine1[1:])
if ram >= (len(datamine3) + len(datamine2) - 1):
# 2_3
if _2_3:
sequences.append(datamine2 + datamine3[1:])
# 3_2
if _3_2:
sequences.append(datamine3 + datamine2[1:])
sequences.append(datamine3)
# Solve
for seq in sequences:
solve(hexdump, seq, ram)
input('More? Following solutions will get worse.')