Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- from itertools import product
- string_length = sys.argv[1]
- matches = {
- "}": "{",
- "]": "[",
- ")": "("
- }
- brackets = ['{', '[', '(', ')', ']', '}']
- def bracket_gen(length):
- combinations = product(brackets, repeat=length)
- return [''.join(combo) for combination in combinations]
- def get_matching_substring_strict(string):
- substring = ''
- index_start = -1
- index_end = -1
- bracket_counts = {
- "{": 0,
- "[": 0,
- "(": 0
- }
- for index, letter in enumerate(string):
- if letter in matches.values():
- if index_start == -1:
- index_start = index
- substring += letter
- bracket_counts[letter] += 1
- if letter in matches.keys():
- if not substring:
- break
- if substring[-1] == matches[letter]:
- substring = substring[:-1]
- bracket_counts[matches[letter]] -= 1
- if not [cnt for cnt in bracket_counts.values() if cnt]:
- index_end = index
- if [cnt for cnt in bracket_counts.values() if cnt < 0]:
- break
- else:
- break
- if index_start != -1 and index_end != -1:
- matching_substring = string[index_start:index_end + 1]
- return matching_substring
- valid_combos = []
- bracket_combos = bracket_gen(eval(string_length))
- for combo in bracket_combos:
- if combo == get_matching_substring_strict(combo):
- print(combo)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement