Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3
- import sys, itertools, re
- def prime(n):
- primes = []
- for number in itertools.count(2):
- if all(number%prime for prime in primes):
- primes.append(number)
- if len(primes) == n:
- break
- return primes[-1]
- def unbracket(brackets):
- result = 1
- counter = 0
- substring = ''
- for char in brackets:
- if char == '<':
- counter += 1
- elif char == '>':
- counter -= 1
- else:
- sys.exit('Invalid character')
- if counter < 0:
- sys.exit('Unmatched brackets')
- substring += char
- if counter == 0:
- result *= prime(unbracket(substring[1:-1]))
- substring = ''
- if counter > 0:
- sys.exit('Unmatched brackets')
- return result
- brackets = ''.join(sys.argv[1:]) if len(sys.argv) > 1 else sys.stdin.read()
- #brackets = brackets.translate(str.maketrans('', '', string.whitespace))
- brackets = re.sub(r'\s', '', brackets)
- brackets = re.sub(r'[oO0\.◇☐□◯〇•]', '<>', brackets)
- brackets = re.sub(r'[{[(^1◠⸦⎴]', '<', brackets)
- brackets = re.sub(r'[}\])vV0◡⸧⎵]', '>', brackets)
- brackets = re.sub(r'[⟪⟦⦃«]', '<<', brackets)
- brackets = re.sub(r'[⟫⟧⦄»]', '>>', brackets)
- brackets = re.sub(r'[⊙۞]', '<<>>', brackets)
- brackets = re.sub(r'[⚇]', '<<><>>', brackets)
- brackets = re.sub(r'[:∞]', '<><>', brackets)
- brackets = re.sub(r'[xX]', '><', brackets)
- brackets = re.sub(r'[⚀⚁⚂⚃⚄⚅]', lambda x:'<'+(ord(x.group(0))-9855)*'<>'+'>', brackets)
- #brackets = re.sub(r'\(\.+\)', lambda x:x.group(0)[1:-1].replace('.', '<>'), brackets)
- brackets = re.sub(r'[a-z]', lambda x:(ord(x.group(0))-96)*'<'+(ord(x.group(0))-96)*'>', brackets)
- print(brackets)
- print(unbracket(brackets))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement