User:Gamer
Jump to navigation
Jump to search
yo whats up guys its gamer here ok actually my name is iBrow but i cant change my username on this website so fuck
i'm a 16 year old esolang noob ok bye
Esolangs
I've created 1 esolang with User:Andrew3335: TPLHBPTBOTEW
Implementations
Madbrain (Python 3)
Syntax (Windows): C:\path\to\folder>python madbrain.py program.mb
#!/usr/bin/env python import sys def main(): f = open(sys.argv[1], 'r') prg = f.read().splitlines() f.close() prgPos = 0 ptr = 0 stk = [] cmds = { '*': 'mul', '/': 'div', '+': 'add', '-': 'sub', '>': 'ga', '<': 'la', '^': 'gs', 'v': 'ls', '?': 'gza', '!': 'gzs', ':': 'eza', ';': 'ezs', '.': 'lza', ',': 'lzs', '=': 'ea', '_': 'es', '#': 'nea', '@': 'nes' } def j(): nonlocal prgPos prgPos = stk.pop() - 1 def g(): nonlocal ptr j() ptr += stk.pop(0) def q(): nonlocal ptr j() ptr -= stk.pop(0) def i(): nonlocal ptr ptr += stk.pop() def d(): nonlocal ptr ptr -= stk.pop() def x(): sys.exit(0) def mul(): stk.append(stk.pop() * stk.pop(0)) def div(): stk.append(stk.pop() / stk.pop(0)) def add(): stk.append(stk.pop() + stk.pop(0)) def sub(): stk.append(stk.pop() - stk.pop(0)) def r(): inp = input('\nAwaiting input: ')[0] while not inp.isdigit(): inp = input('Input must be a digit.\nAwaiting input: ') stk.append(int(inp)) def p(): print(stk.pop(), end='') def c(): i = stk.pop() if 0 <= i <= 255: print(chr(i), end='') def ga(): nonlocal ptr ptr += stk.pop() > stk.pop(0) def la(): nonlocal ptr ptr += stk.pop() < stk.pop(0) def gs(): nonlocal ptr ptr -= stk.pop() > stk.pop(0) def ls(): nonlocal ptr ptr -= stk.pop() < stk.pop(0) def gza(): nonlocal ptr ptr += stk.pop() > 0 def gzs(): nonlocal ptr ptr -= stk.pop() > 0 def eza(): nonlocal ptr ptr += stk.pop() == 0 def ezs(): nonlocal ptr ptr -= stk.pop() == 0 def lza(): nonlocal ptr ptr += stk.pop() < 0 def lzs(): nonlocal ptr ptr -= stk.pop() < 0 def ea(): nonlocal ptr ptr += stk.pop() == stk.pop(0) def es(): nonlocal ptr ptr -= stk.pop() == stk.pop(0) def nea(): nonlocal ptr ptr += stk.pop() != stk.pop(0) def nes(): nonlocal ptr ptr -= stk.pop() != stk.pop(0) while prgPos < len(prg): cmd = prg[prgPos][ptr] if (cmd in 'jidpc?!:;.,' and len(stk) < 1) or (cmd in 'gq*/+-><^v=_#@' and len(stk) < 2): raise IndexError('at ' + cmd + ': insufficient items in stack') if cmd.isdigit(): stk.append(int(cmd)) prgPos += 1 continue try: exec(cmds.get(cmd, cmd) + '()') except NameError: pass prgPos += 1 if __name__ == '__main__': main()