We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.

InfSt

From Esolang
Jump to navigation Jump to search
InfSt
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()