def Kas(code, inp=""):
    
    tape = [0]
    ptr = 0
    ip = 0
    input_ptr = 0
    G = {}
    mov = 0
    n = 0
    h1 = 0
    h2 = 0
    If0 = 0
    JMP = 0
     # list renamed
    κ = 0
    loop = {}
    stack = []
    reg = [0,0,0,0,0,0,0,0]
    # ループ対応
    for i, c in enumerate(code):
        if c == "[":
            stack.append(i)
        elif c == "]":
            j = stack.pop()
            loop[i] = j
            loop[j] = i

    while ip < len(code):
        c = code[ip]

        if c == "W":
            ptr += 1
            if ptr == len(tape):
                tape.append(0)

        elif c == "w":
            ptr -= 1
            if ptr < 0:
                raise IndexError("Tape pointer went negative")

        elif c == "V":
            tape[ptr] = (tape[ptr] + 1) % 256

        elif c == "v":
            tape[ptr] = (tape[ptr] - 1) % 256

        elif c == "!":
            if tape[ptr] != 0:
                mov, tape[ptr] = tape[ptr], 0
            else:
                tape[ptr], mov = mov, 0
        elif c == "J":
            ip += JMP - 1
        elif c == "j":
            JMP = G[code[ip-1]]
        elif c == "°":
            mov = 0
        elif c == "#":
            print(" ", end="")
        elif c == "^":
            n = ptr

        elif c == "Λ":
            tape[ptr] = (tape[ptr] + tape[n]) % 256

        elif c == "λ":
            tape[ptr] = (tape[ptr] - tape[n]) % 256
        elif c == "S":
            if tape[ptr-1] > tape[ptr]:
                Q = tape[ptr-1]
                tape[ptr-1] = tape[ptr]
                tape[ptr] = Q
        elif c == "X":
            print(chr(tape[ptr]), end="")
        elif c == "Q":
            print(tape)
            print("")
        elif c == "≫":
            if tape[ptr] < If0:
                ip += 1
        elif c == "➡︎":
            if tape[ptr] != If0:
                ip += 1
        elif c == "?":
            If0 = tape[ptr]
        elif c == ".":
            print("")
        elif c == "x":
            if input_ptr < len(inp):
                tape[ptr] = ord(inp[input_ptr])
                input_ptr += 1
            else:
                tape[ptr] = 0
        elif c == "ʍ":
            h1 += 1
        elif c == "Y":
            G[code[ip-1]] = mov
        elif c == "y":
           mov = G[code[ip-1]]
        elif c == "Ŷ":
           G[code[ip+1]] = code[ip+2]
        elif c == "ŷ":
           mov=G[G[code[ip-1]]]
        elif c == "˖":
            κ += 1
        elif c == "˗":
            κ -= 1
        elif c == "ª":
            κ *= 64
        elif c == "ʬ":
           h1 = κ
        elif c == "Ŵ":
            h1= 0
        elif c == "ɥ":
            h2 = (h2 + 1) % 5
        elif c == "ʷ":
            if h2 == 0:
                Cat = lambda x : x * h1
            elif h2 == 1:
                Cat = lambda x : x // h1
            elif h2 == 2:
                Cat = lambda x,y : x + y
            elif h2 == 3:
                Cat = lambda x,y : x - y
            elif h2 == 4:
                Cat = lambda x : x ** h1
        elif c == "ˇ":
            G["ㄠ"] = ord(code[ip-1])
        elif c == "ƛ":
            if h2 == 2:
                G["ㄠ"] = Cat(G["α"],G["β"])
            elif h2 == 3:
                G["ㄠ"] = Cat(G["α"],G["β"])
            else:
                G["ㄠ"] = Cat(G["α"])
        elif c == "L":
            if h2 == 2:
                tape[ptr] = Cat(tape[ptr-1],tape[ptr-2])
            elif h2 == 3:
                tape[ptr] = Cat(tape[ptr-1],tape[ptr-2])
            else:
                tape[ptr] = Cat(tape[ptr])
            
        elif c == "[":
            if tape[ptr] == 0:
                ip = loop[ip]

        elif c == "]":
            if tape[ptr] != 0:
                ip = loop[ip]
        ip += 1
        
code = """
VVVVVVVV[WVVVVVVVVwv]W!w!
WW VVVVVVVV ^ wwΛXλ 
WW vvvvvvvv VVVVV ^ wwΛXλ 
WW vvvvv VVVVVVVVVVVV ^ wwΛXλ
WW vvvvvvvvvvvv VVVVVVVVVVVV ^ wwΛXλ
WW vvvvvvvvvvvv VVVVVVVVVVVVVVV ^ wwΛXλ
"""
Kas(code)
print("")

code = """
VVVVVVVV[WVVVVVVVVwv]W!w!V^
WΛVXwXWWΛVVVVVVVVVVXwwX.WWWΛXWΛVVVVVVVXWWWWΛVVVVVVVVVVVVVVX.
"""
Kas(code)

code = """
VVVVVVVV[ʍv]ʷVLLŴ VVVVVVVV XW
VVVVVVVV[ʍv]ʷVLLŴ VVVVV XW
VVVVVVVV[ʍv]ʷVLLŴ VVVVVVVVVVVV XW
VVVVVVVV[ʍv]ʷVLLŴ VVVVVVVVVVVV XW
VVVVVVVV[ʍv]ʷVLLŴ VVVVVVVVVVVVVVV XW #
VVVVVVVV[ʍv]ʷVLLŴ VVVVVVVVVVVVVVVVVVVVVVV XW 
VVVVVVVV[ʍv]ʷVLLŴ VVVVVVVVVVVVVVV XW
VVVVVVVV[ʍv]ʷVLLŴ VVVVVVVVVVVVVVVVVV XW 
VVVVVVVV[ʍv]ʷVLLŴ VVVVVVVVVVVV XW
VVVVVVVV[ʍv]ʷVLLŴ VVVV XW.
"""
Kas(code)
code = """
VW VW ɥɥʷLW LW LW LW Q.
"""
Kas(code)


# # 命令でスペースを入れ、最後に . で改行します
hello_world_code = """
VVVVVVVV[ʍv]ʷVLLŴ VVVVVVVV XW
VVVVVVVV[ʍv]ʷVLLŴ VVVVV XW
VVVVVVVV[ʍv]ʷVLLŴ VVVVVVVVVVVV XW
VVVVVVVV[ʍv]ʷVLLŴ VVVVVVVVVVVV XW
VVVVVVVV[ʍv]ʷVLLŴ VVVVVVVVVVVVVVV XW #
VVVVVVVV[ʍv]ʷVLLŴ VVVVVVVVVVVVVVVVVVVVVVV XW 
VVVVVVVV[ʍv]ʷVLLŴ VVVVVVVVVVVVVVV XW
VVVVVVVV[ʍv]ʷVLLŴ VVVVVVVVVVVVVVVVVV XW 
VVVVVVVV[ʍv]ʷVLLŴ VVVVVVVVVVVV XW
VVVVVVVV[ʍv]ʷVLLŴ VVVV XW.    
"""

# フィボナッチ数列を計算してテープを表示するコード
fib_code = "VW VW ɥɥʷLW LW LW LW Q"

print("--- HELLO WORLD 実行 ---")
Kas(hello_world_code)
print("--- フィボナッチ数列 実行 ---")
Kas(fib_code)



code = """
VVVVVVVVVV ! AY
VVVVV ! BY
°
Ay [v] ! [ʍv] ʷ VVVVVVV L X #
By W [v] ! [ʍv] ʷ VVVVVVVVVVVVV L X .
"""
Kas(code)

code = """
˖ªʬʷ
VL VVVVVVVV XW
VL VVVVV XW
VL VVVVVVVVVVVV XW
VL VVVVVVVVVVVV XW
VL VVVVVVVVVVVVVVV XW #
VL VVVVVVVVVVVVVVVVVVVVVVV XW
VL VVVVVVVVVVVVVVV XW
VL VVVVVVVVVVVVVVVVVV XW
VL VVVVVVVVVVVV XW
VL VVVV XW.
"""
Kas(code)

code = """
Ŷpㄠ
H ˇ pŷ!X
e ˇ pŷ!X
l ˇ pŷ!X
l ˇ pŷ!X
o ˇ pŷ!X #

W ˇ pŷ!X
o ˇ pŷ!X
r ˇ pŷ!X
l ˇ pŷ!X
d ˇ pŷ!X 
"""
Kas(code)

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: