Txet
Jump to navigation
Jump to search
Txet is a programming language that was made by User:Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff and has 2 forms of memory, a 1d tape where each cell has a one-character name, and an accumulator. Each command is 2 letters long. The first character says what to do and the second says what cell to do it on.
Commands
| Command | Description |
|---|---|
+ |
append accumulator to the end of selected cell |
p |
switch accumulator and selected cell |
` |
print selected cell |
d |
set selected cell to its name |
% |
replace "%" with accumulator in selected cell and vice versa |
> |
move forward by the 1st character in selected cell's unicode id |
< |
move backward by the 1st character in selected cell's unicode id |
i |
set selected cell to input |
q |
if selected cell is its name, skip next command |
- |
remove first character of selected cell |
r |
take 1st character of selected cell and put it at the end |
0 |
set selected cell to "" |
Duplicating values
To duplicate the value in X into Y, use this code:
pX0Y+YpX
Programs
Hello, World!
dHpH+Pdepe+Pdlpl+P+Pdopo+Pd,p,+Pd p +PdWpW+Pdopo+Pdrpr+Pdlpl+Pddpd+Pd!p!+P`P
Truth-machine
i1d\5q1>\5d0`0d\3<\3d1`1d\3<\3
Cat program
iඞ`ඞ
interpreter
def swap(text,toSwap):
_T = list(text); c = 0; __T = _T
while c < len(_T):
if _T[c] == "%":
_T[c] = toSwap #done!
elif ("".join(_T))[c:(c+len(toSwap))] == toSwap:
_T[c:(c+len(toSwap))] = '%'
c+=1
_T = "".join(_T)
return _T
def prepare(L,LN,NL):
if not(NL in LN):
LN.append(NL)
L.append("")
return [L,LN]
def compute(code):
i=0; A=""; tape=[]; tapeN=[]
while i<len(code):
__=prepare(tape,tapeN,code[i+1]); tape=__[0]; tapeN=__[1]
if code[i] == "+":
tape[tapeN.index(code[i+1])] += A
elif code[i] == "p":
__=A; A=tape[tapeN.index(code[i+1])]; tape[tapeN.index(code[i+1])]=__
elif code[i] == "`":
print(tape[tapeN.index(code[i+1])],end="")
elif code[i] == "d":
tape[tapeN.index(code[i+1])] = code[i+1]
elif code[i] == "%":
tape[tapeN.index(code[i+1])] = swap(tape[tapeN.index(code[i+1])],A)
elif code[i] == ">":
try:
i += ord(tape[tapeN.index(code[i+1])][0]) * 2
except IndexError:
pass
elif code[i] == "<":
try:
i -= (ord(tape[tapeN.index(code[i+1])][0])) * 2 + 2
except IndexError:
pass
elif code[i] == "i":
tape[tapeN.index(code[i+1])] = input()
elif code[i] == "q":
if tape[tapeN.index(code[i+1])] == code[i+1]:
i+=2
elif code[i] == "-":
try:
tape[tapeN.index(code[i+1])] = tape[tapeN.index(code[i+1])][1:]
except IndexError:
pass
elif code[i] == "r":
try:
tape[tapeN.index(code[i+1])] = tape[tapeN.index(code[i+1])][1:] + tape[tapeN.index(code[i+1])][0]
except IndexError:
pass
elif code[i] == "0":
try:
tape[tapeN.index(code[i+1])] = ""
except IndexError:
pass
i+=2
print("")
def start():
Import = input("Import a file?")
if Import == "yes":
Import = input("Please input file path:\n")
Import = open(Import,encoding='utf-8')
Import = Import.read()
else:
c = " "
Import = ""
while c != "":
c = input()
Import = Import + c + "\n"
compute(Import)
start()
input()