Advertisement
Guest User

bracket_gen

a guest
Aug 21st, 2023
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.53 KB | None | 0 0
  1. import sys
  2. from itertools import product
  3.  
  4. string_length = sys.argv[1]
  5.  
  6. matches = {
  7.     "}": "{",
  8.     "]": "[",
  9.     ")": "("
  10. }
  11.  
  12. brackets = ['{', '[', '(', ')', ']', '}']
  13.  
  14.  
  15. def bracket_gen(length):
  16.     combinations = product(brackets, repeat=length)
  17.     return [''.join(combo) for combination in combinations]
  18.  
  19.  
  20. def get_matching_substring_strict(string):
  21.     substring = ''
  22.     index_start = -1
  23.     index_end = -1
  24.     bracket_counts = {
  25.         "{": 0,
  26.         "[": 0,
  27.         "(": 0
  28.     }
  29.     for index, letter in enumerate(string):
  30.         if letter in matches.values():
  31.             if index_start == -1:
  32.                 index_start = index
  33.             substring += letter
  34.             bracket_counts[letter] += 1
  35.         if letter in matches.keys():
  36.             if not substring:
  37.                 break
  38.             if substring[-1] == matches[letter]:
  39.                 substring = substring[:-1]
  40.                 bracket_counts[matches[letter]] -= 1
  41.                 if not [cnt for cnt in bracket_counts.values() if cnt]:
  42.                     index_end = index
  43.                 if [cnt for cnt in bracket_counts.values() if cnt < 0]:
  44.                     break
  45.             else:
  46.                 break
  47.  
  48.     if index_start != -1 and index_end != -1:
  49.         matching_substring = string[index_start:index_end + 1]
  50.         return matching_substring
  51.  
  52.  
  53. valid_combos = []
  54. bracket_combos = bracket_gen(eval(string_length))
  55. for combo in bracket_combos:
  56.     if combo == get_matching_substring_strict(combo):
  57.         print(combo)
  58.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement