Braincrash par QPython

braincrash.py


from __future__ import print_function
from sys import stdin,stdout
from brainfuck import Brainfuck
from brainfuck import op
class Braincrash(Brainfuck):
    def __init__(s,OPs="><+-.,[]|&~^",size=30000):
        Brainfuck.__init__(s,OPs,size)
    def const(s,OPs):
        Brainfuck.const(s,OPs)
        s.opDic[OPs[8]]=opOr # op |
        s.opDic[OPs[9]]=opAnd # op &
        s.opDic[OPs[10]]=opNot # op ~
        s.opDic[OPs[11]]=opXor # op ^
    def run(s,limit=1000,out=stdout):
        Brainfuck.run(s,"Hello, world!",limit,out)
        while s.pt<len(s.mem) and s.mem[s.pt] != 0:
            out.write(chr(s.mem[s.pt]))
            s.pt+=1
#end class
class opOr(op):
    def do(s,bf):
        bf.mem[bf.pt]|=bf.mem[bf.pt+1]
        bf.pt+=1
        bf.pc+=1
#end class
class opAnd(op):
    def do(s,bf):
        bf.mem[bf.pt]&=bf.mem[bf.pt+1]
        bf.pt+=1
        bf.pc+=1
#end class
class opNot(op):
    offset = int("1"*8,2)
    def do(s,bf):
        bf.mem[bf.pt]^=s.offset
        bf.pc+=1
#end class
class opXor(op):
    def do(s,bf):
        bf.mem[bf.pt]^=bf.mem[bf.pt+1]
        bf.pt+=1
        bf.pc+=1
#end class

Recommended Posts

Braincrash par QPython
Hello World! Par QPython avec Braincrash
Brainfu * k par QPython
Hello World! Par QPython avec Brainfu * k