Talk:Son of a BitCh

From Esolang
Jump to navigation Jump to search

Interpreter

This interpreter needs to fix. Created by User:Cycwin.

⁨⁨code="<>>>>><><>>>>"
pointer=0
tape=[0]
tapepointer=0
storage="d"
output="00000000"
while pointer<len(code):
    i=code[pointer]
    if i==">":
        if storage=="d":
            if not tapepointer<len(tape)-1:
                tape.append(0)
            tapepointer+=1
                
        storage="diojn"["diojn".index(storage)+1 if storage!="n" else 0]
    if i=="<":
        if storage=="d":
            tape[tapepointer]=int(not tape[tapepointer])
            if tapepointer==0:
                tape.insert(0,0)
            else:
                tapepointer-=1
        elif storage=="i":
            #I do not understand this section.I just use if input in ascii is odd.
            print("output:"+chr(eval("0b"+output)))
            tape[tapepointer]=ord(input()[0])%2
        elif storage=="o":
            #I do not understand this too.
            output+=str(tape[tapepointer])
            if len(output)>8:
                output=output[1:]
        elif storage=="j":
            j=len(output)-1
            c=0
            t=19 if code[pointer + 1 if pointer<len(code)-1 else 0]!=">" else 38
            while c==t or j==0:
                if code[j]=="<":
                    c+=1
            pointer=j
        elif storage=="n":
            continue    
    pointer+=1                    
    print(tape,pointer,tapepointer)