InfSt
Jump to navigation
Jump to search
Paradigm(s) | Imperative |
---|---|
Designed by | User:GiratronKode |
Appeared in | 2018 |
Computational class | Unknown |
Reference implementation | See #Interpreter |
Influenced by | The Infinity Stones - Marvel |
File extension(s) | .ist |
Hello, I'm GiratronKode and this is my first attempt to do an esolang, please have that in mind.
Usage
InfSt has 3 commands:
search stones => searches for an infinity stone. repeat search => to repeat the search instead of writing search stones again. snap fingers => to make Thanos snap his fingers to try and destroy half the population of the universe.
Basic Program
Always a program looks like this:
search stones repeat search repeat search repeat search repeat search repeat search repeat search repeat search repeat search repeat search repeat search repeat search repeat search repeat search repeat search repeat search repeat search repeat search repeat search repeat search repeat search repeat search repeat search repeat search repeat search repeat search repeat search snap fingers
And the output is random but one of the possible outputs is:
Stones Got: POWER REALITY TIME
Interpreter
Written in Python 3.
#Colors from colorama import * init(autoreset=True, convert=True) def colorize(text, Tcolor=None, Bcolor=None, style=None): if Tcolor == None: Tcolor="RESET" if Bcolor == None: Bcolor="RESET" if style == None: style="RESET_ALL" return getattr(Style, style.upper()) + getattr(Fore, Tcolor.upper()) + getattr(Back, Bcolor.upper()) + text import sys, random as rand, time toks=[] def open_file(f): if not f.endswith(".ist"): raise NameError("It needs to be a .ist file") else: data=open(f).read() return data def stoneList(): stones=[] for i in toks: if i != "NOLUCK": stones.append(i) print("Stones Got: ",end="") for i in stones: if i == "SPACE": print(colorize(i,Tcolor="blue",style="bright"),end=" ") elif i == "MIND": print(colorize(i,Tcolor="yellow",style="bright"),end=" ") elif i == "REALITY": print(colorize(i,Tcolor="red",style="bright"),end=" ") elif i == "POWER": print(colorize(i,Tcolor="magenta",style="dim"),end=" ") elif i == "TIME": print(colorize(i,Tcolor="green",style="bright"),end=" ") elif i == "SOUL": print(colorize(i,Tcolor="yellow",style="dim"),end=" ") print("",end="\n") def lex(data): tok="" for char in list(data): tok+=char if tok==" ": tok="" elif tok=="\n": tok="" elif tok.lower()=="search stones": stone=rand.randint(1,15) if stone==1 and "SPACE" not in toks: toks.append("SPACE") elif stone==2 and "REALITY" not in toks: toks.append("REALITY") elif stone==3 and "POWER" not in toks: toks.append("POWER") elif stone==4 and "MIND" not in toks: toks.append("MIND") elif stone==5 and "TIME" not in toks: toks.append("TIME") elif stone==6 and "SOUL" not in toks: toks.append("SOUL") elif stone>=7: toks.append("NOLUCK") tok="" elif tok.lower()=="repeat search" and len(toks)!=0: lex("search stones") tok="" elif tok.lower()=="snap fingers" and ("SPACE" in toks and "REALITY" in toks and "POWER" in toks and "MIND" in toks and "TIME" in toks and "SOUL" in toks): print(colorize("Thanos is going to snap his fingers.",style="bright")) time.sleep(2) print(colorize("Thanos WINS",style="bright")) tok="" return def run(): data=open_file(sys.argv[1]) lex(data) time.sleep(1) stoneList() run()