Simple Text Editor

  • + 0 comments

    Python 3 using a deque. I've been butting my head up against performance problems using Python on these exercises so I thought using a deque would save me optimization headaches. Seeing other people's solutions below it seems totally unncessary and a list will suffice.

    from collections import deque
    
    S = deque()
    Q = int(input())
    undo_ops = deque()
    result = ""
    
    for _ in range(Q):
        activate_undo = False
        op = [x for x in input().split()]
    
        if op[0] == "4":
            op = undo_ops.pop()
            activate_undo = True
    
        if op[0] == "1":
            S.extend(op[1])
            if not activate_undo:
                undo_ops.append(["2", len(op[1])])
        elif op[0] == "2":
            elements = "".join([S.pop() for _ in range(int(op[1]))])
            elements = elements[::-1]
            if not activate_undo:
                undo_ops.append(["1", elements])
        elif op[0] == "3":
            result += f"{S[int(op[1]) - 1]}\n"
    
    print(result)