From bf18df8d48da4d12d35f6a7fee44ea0e5eda3a0c Mon Sep 17 00:00:00 2001 From: Mateusz779 <73058906+Mateusz779@users.noreply.github.com> Date: Sun, 3 Apr 2022 18:39:30 +0200 Subject: [PATCH] Update main.py --- main.py | 51 ++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 13 deletions(-) diff --git a/main.py b/main.py index f1b66df..3efb179 100644 --- a/main.py +++ b/main.py @@ -1,3 +1,4 @@ +import re pointer = 0 cell = [] code = "" @@ -11,11 +12,22 @@ def main(): global code, cell, pointer code = input("Enter the code: ") print("\n\n") + code=codeClear(code) if code != "": for i in range(len(code)): interpreter(code[i], i) print("\n\n") +def codeClear(input): + """ + Clears the code from unnecessary characters + """ + pattern = "[\][\[\,\.\>\<\-\+]" + tmp=re.findall(pattern, input) + result="" + for i in range(len(tmp)): + result+=tmp[i] + return result def interpreter(znak, i): """ @@ -39,10 +51,13 @@ def interpreter(znak, i): match znak: case ">": pointer += 1 + if(pointer > len(cell) - 1): + cell.append(0) case "<": pointer -= 1 if pointer < 0: pointer = 0 + cell.insert(0, 0) case "+": try: cell[pointer] += 1 @@ -52,25 +67,35 @@ def interpreter(znak, i): case "-": try: cell[pointer] -= 1 + if cell[pointer] < 0: + cell[pointer] = 0 except: cell.append(0) - cell[pointer] -= 1 case ".": - if cell[pointer] == 10 or cell[pointer] == 13: - print("\n") - else: + try: + if cell[pointer] == 10 or cell[pointer] == 13: + print("\n") + else: + print(chr(cell[pointer]), end="") + except: + cell.append(0) print(chr(cell[pointer]), end="") case ",": - cell[pointer] = ord(input("Enter a character: ")) + try: + cell[pointer] = ord(input("Enter a character: ")) + except: + cell.append(0) + cell[pointer] = ord(input("Enter a character: ")) case "[": - loop_begin = i - loop_end = code.find("]", i) - if cell[pointer] != 0: - loop_end = code.find("]", i) - for a in range(0, cell[pointer]-1): - for j in range(1, loop_end-loop_begin): - interpreter(code[loop_begin + j], loop_begin + j) - + try: + loop_begin = i + if cell[pointer] != 0: + loop_end = code.find("]", i) + for a in range(0, cell[pointer]-1): + for j in range(1, loop_end-loop_begin): + interpreter(code[loop_begin + j], loop_begin + j) + except: + cell.append(0) if __name__ == '__main__': main()