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.
Examine individual changes
This page allows you to examine the variables generated by the Abuse Filter for an individual change.
Variables generated for this change
| Variable | Value |
|---|---|
Edit count of the user (user_editcount) | 33 |
Name of the user account (user_name) | 'Win7HE' |
Age of the user account (user_age) | 617562 |
Page ID (page_id) | 8479 |
Page namespace (page_namespace) | 0 |
Page title without namespace (page_title) | 'Deadfish x' |
Full page title (page_prefixedtitle) | 'Deadfish x' |
Action (action) | 'edit' |
Edit summary/reason (summary) | '' |
Old content model (old_content_model) | 'wikitext' |
New content model (new_content_model) | 'wikitext' |
Old page wikitext, before the edit (old_wikitext) | ''''Deadfish x''' is a superset of Jonathan Todd Skinner's [[Deadfish]]. There are twice as many commands and uses the XKCD variant.
I ([[firefly431|User:firefly431]]) will be writing a Python interpreter, but you guys can write whatever you want.
== Commands ==
{| class="wikitable"
|-
| x || Add 1 to x.
|-
| k || Output x to the console.
|-
| c || Square x.
|-
| d || Subtract 1 from x.
|-
| X || Start a function. The next character is the function name.
|-
| K || Output x as an ASCII character.
|-
| C || End the function or execute a function.
|-
| D || Set x to 0.
|}
== Rules ==
X (the variable) can only go from 0 to 255. If it goes above or below, it will be set to 0.
You can type as many commands as you want on a line, but the prompt will only be shown when you push enter.
== Sample Programs ==
To run these, save them and run them, or just copy and paste.
<pre><nowiki>
xxcxxxxcxxxxxxxxKDxxcxxxxxxcxKxxxxxxxKKxxxKDxxxxxxxcdddddKDxxxxxxcddddKDxxxcxxcddKddddddddKxxxKddddddKddddddddKDxxxxxxcdddK
</nowiki></pre>
Prints out "Hello, world!"
<pre><nowiki>
XUxKCxxcxxxxcCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCU
</nowiki></pre>
Prints out the entire alphabet.
== Interpreter ==
=== Python ===
My interpreter. Put something here if you find a bug.
<pre><nowiki>
# Deadfish x Programming Language
# By firefly431
# This is free and unencumbered software released into the public domain.
# Visit <http://unlicense.org/> for the full thing.
x = 0;
funcname = "";
curfunc = "";
lastc = '';
functions = {};
q_="i;iyratnrt gatmivpo";
_q=[0, 14, 17, 18, 4, 6, 10, 5, 7, 9, 2, 11, 8, 12, 16, 15, 13, 3, 1];
tar = [];
for i in _q: tar.append(q_[i]);
tar="".join(tar);
import webbrowser;
def openxkcd(num):
webbrowser.open("http://xkcd.com/"+str(num)+"/");
def process(c): #Finite State Machine
global x;
global funcname;
global curfunc;
global lastc;
global functions;
if x<0 or x>255:
x=0;
if (lastc == 'X'): #we are starting a function
funcname = c;
print("Function start: "+c);
lastc = ''; #so if the name is C or X we don't process it
return;
if (lastc == 'C'): #we are executing a function
print("Execute function: "+c);
lastc = ''; #same thing
if (c in functions):
for q in functions[c]: #c is taken
process(q);
else:
print("Function '"+c+"' does not exist.");
return;
if funcname != "" and c != 'C': #We are in a function
print("In function");
curfunc += c;
lastc = c;
return;
#check commands, function commands pass.
if c == "x":
x+=1;
elif c == "k":
print(str(x));
elif c == "c":
x*=x;
elif c == "d":
x-=1;
elif c == "X":
pass;
elif c == "K":
print(chr(x),end="");
elif c == "C":
if funcname != "":
print("End Function");
lastc = ''; #so we don't execute a function
functions[funcname] = curfunc;
funcname = "";
curfunc = "";
return;
elif c == "D":
x=0;
lastc = c;
def getInput(str = ""):
global x;
global tar;
if str=="":
inp = input(">> "); #change this to raw_input() if using python 2.x
else:
inp = str;
if inp == tar:
openxkcd(1061%354);
for c in inp:
process(c);
import sys;
fname = "";
lines = [];
if len(sys.argv)>1:
fname = sys.argv[1];
if fname != "":
try:
fp = open(fname,"r");
lines = fp.readlines();
fp.close();
except:
print("Could not open file '"+fname+"'.");
if len(lines)>0:
for line in lines:
getInput(line);
else:
try:
while True:
getInput();
except KeyboardInterrupt:
print("Bye!");
</nowiki></pre>
=== Lua ===
<pre><nowiki>
-- Deadfish x in pure Lua
-- By Atenfyr
local functions = {}
function deadfishx(str, tx)
local ignore = {}
local tx = tx or 0
for i = 1, #str do
if tx < 0 or tx > 255 then tx = 0 end
if not ignore[i] then
local instr = str:sub(i, i)
if instr == "x" then
tx = tx + 1
elseif instr == "k" then
io.write(tx)
elseif instr == "c" then
tx = tx ^ 2
elseif instr == "d" then
tx = tx - 1
elseif instr == "X" then
local _, nextC = str:sub(i+2):find("C")
nextC = nextC+i+1
for n = i+1, nextC do
ignore[n] = true
end
functions[str:sub(i+1, i+1)] = str:sub(i+2, nextC)
elseif instr == "K" then
io.write(string.char(tx))
elseif instr == "C" then
ignore[i+1] = true
tx = deadfishx(functions[str:sub(i+1, i+1)]:sub(1, -2), tx)
elseif instr == "D" then
tx = 0
end
end
end
return tx
end
-- If it's being loaded as a library (for some reason), then they now have the deadfishx function and the file can be closed
if pcall(debug.getlocal, 4, 1) then
return
end
local q_ = "i;iyratnrt gatmivpo"
local _q = {1, 15, 18, 19, 5, 7, 11, 6, 8, 10, 3, 12, 9, 13, 17, 16, 14, 4, 2}
local tar = {}
for _, i in pairs(_q) do
tar[#tar+1] = q_:sub(i, i)
end
tar = table.concat(tar, "")
local function openXKCD(n)
if package.config:sub(1,1) == "\\" then
os.execute('start "" "http:///xkcd.com/' .. n .. '/" >nul 2>&1')
else
-- I don't want to install Linux so if this breaks Linux users please let me know
os.execute("xdg-open http://xkcd.com/" .. n .. "/ &> /dev/null")
end
end
local x = 0
local tArgs = {...}
if tArgs[1] then
local open = io.open(tArgs[1], "r")
if not open then print("File does not exist!") os.exit() end
local content = open:read("*a"):gsub("\r\n", ""):gsub("\n", "")
open:close()
deadfishx(content, x)
os.exit()
end
while true do
io.write(">> ")
local cmd = io.read()
if cmd == tar then
openXKCD(1061%354)
else
x = deadfishx(cmd, x)
end
io.write("\n")
end
</nowiki></pre>
[[Category:Joke languages]]
[[Category:Output only]]
[[Category:Implemented]]
[[Category:Languages]]' |
New page wikitext, after the edit (new_wikitext) | ''''Deadfish x''' is a superset of Jonathan Todd Skinner's [[Deadfish]]. There are twice as many commands and uses the XKCD variant.
I ([[User:firefly431|firefly431]]) will be writing a Python interpreter, but you guys can write whatever you want.
== Commands ==
{| class="wikitable"
|-
| x || Add 1 to x.
|-
| k || Output x to the console.
|-
| c || Square x.
|-
| d || Subtract 1 from x.
|-
| X || Start a function. The next character is the function name.
|-
| K || Output x as an ASCII character.
|-
| C || End the function or execute a function.
|-
| D || Set x to 0.
|}
== Rules ==
X (the variable) can only go from 0 to 255. If it goes above or below, it will be set to 0.
You can type as many commands as you want on a line, but the prompt will only be shown when you push enter.
== Sample Programs ==
To run these, save them and run them, or just copy and paste.
<pre><nowiki>
xxcxxxxcxxxxxxxxKDxxcxxxxxxcxKxxxxxxxKKxxxKDxxxxxxxcdddddKDxxxxxxcddddKDxxxcxxcddKddddddddKxxxKddddddKddddddddKDxxxxxxcdddK
</nowiki></pre>
Prints out "Hello, world!"
<pre><nowiki>
XUxKCxxcxxxxcCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCU
</nowiki></pre>
Prints out the entire alphabet.
== Interpreter ==
=== Python ===
My interpreter. Put something here if you find a bug.
<pre><nowiki>
# Deadfish x Programming Language
# By firefly431
# This is free and unencumbered software released into the public domain.
# Visit <http://unlicense.org/> for the full thing.
x = 0;
funcname = "";
curfunc = "";
lastc = '';
functions = {};
q_="i;iyratnrt gatmivpo";
_q=[0, 14, 17, 18, 4, 6, 10, 5, 7, 9, 2, 11, 8, 12, 16, 15, 13, 3, 1];
tar = [];
for i in _q: tar.append(q_[i]);
tar="".join(tar);
import webbrowser;
def openxkcd(num):
webbrowser.open("http://xkcd.com/"+str(num)+"/");
def process(c): #Finite State Machine
global x;
global funcname;
global curfunc;
global lastc;
global functions;
if x<0 or x>255:
x=0;
if (lastc == 'X'): #we are starting a function
funcname = c;
print("Function start: "+c);
lastc = ''; #so if the name is C or X we don't process it
return;
if (lastc == 'C'): #we are executing a function
print("Execute function: "+c);
lastc = ''; #same thing
if (c in functions):
for q in functions[c]: #c is taken
process(q);
else:
print("Function '"+c+"' does not exist.");
return;
if funcname != "" and c != 'C': #We are in a function
print("In function");
curfunc += c;
lastc = c;
return;
#check commands, function commands pass.
if c == "x":
x+=1;
elif c == "k":
print(str(x));
elif c == "c":
x*=x;
elif c == "d":
x-=1;
elif c == "X":
pass;
elif c == "K":
print(chr(x),end="");
elif c == "C":
if funcname != "":
print("End Function");
lastc = ''; #so we don't execute a function
functions[funcname] = curfunc;
funcname = "";
curfunc = "";
return;
elif c == "D":
x=0;
lastc = c;
def getInput(str = ""):
global x;
global tar;
if str=="":
inp = input(">> "); #change this to raw_input() if using python 2.x
else:
inp = str;
if inp == tar:
openxkcd(1061%354);
for c in inp:
process(c);
import sys;
fname = "";
lines = [];
if len(sys.argv)>1:
fname = sys.argv[1];
if fname != "":
try:
fp = open(fname,"r");
lines = fp.readlines();
fp.close();
except:
print("Could not open file '"+fname+"'.");
if len(lines)>0:
for line in lines:
getInput(line);
else:
try:
while True:
getInput();
except KeyboardInterrupt:
print("Bye!");
</nowiki></pre>
=== Lua ===
<pre><nowiki>
-- Deadfish x in pure Lua
-- By Atenfyr
local functions = {}
function deadfishx(str, tx)
local ignore = {}
local tx = tx or 0
for i = 1, #str do
if tx < 0 or tx > 255 then tx = 0 end
if not ignore[i] then
local instr = str:sub(i, i)
if instr == "x" then
tx = tx + 1
elseif instr == "k" then
io.write(tx)
elseif instr == "c" then
tx = tx ^ 2
elseif instr == "d" then
tx = tx - 1
elseif instr == "X" then
local _, nextC = str:sub(i+2):find("C")
nextC = nextC+i+1
for n = i+1, nextC do
ignore[n] = true
end
functions[str:sub(i+1, i+1)] = str:sub(i+2, nextC)
elseif instr == "K" then
io.write(string.char(tx))
elseif instr == "C" then
ignore[i+1] = true
tx = deadfishx(functions[str:sub(i+1, i+1)]:sub(1, -2), tx)
elseif instr == "D" then
tx = 0
end
end
end
return tx
end
-- If it's being loaded as a library (for some reason), then they now have the deadfishx function and the file can be closed
if pcall(debug.getlocal, 4, 1) then
return
end
local q_ = "i;iyratnrt gatmivpo"
local _q = {1, 15, 18, 19, 5, 7, 11, 6, 8, 10, 3, 12, 9, 13, 17, 16, 14, 4, 2}
local tar = {}
for _, i in pairs(_q) do
tar[#tar+1] = q_:sub(i, i)
end
tar = table.concat(tar, "")
local function openXKCD(n)
if package.config:sub(1,1) == "\\" then
os.execute('start "" "http:///xkcd.com/' .. n .. '/" >nul 2>&1')
else
-- I don't want to install Linux so if this breaks Linux users please let me know
os.execute("xdg-open http://xkcd.com/" .. n .. "/ &> /dev/null")
end
end
local x = 0
local tArgs = {...}
if tArgs[1] then
local open = io.open(tArgs[1], "r")
if not open then print("File does not exist!") os.exit() end
local content = open:read("*a"):gsub("\r\n", ""):gsub("\n", "")
open:close()
deadfishx(content, x)
os.exit()
end
while true do
io.write(">> ")
local cmd = io.read()
if cmd == tar then
openXKCD(1061%354)
else
x = deadfishx(cmd, x)
end
io.write("\n")
end
</nowiki></pre>
[[Category:Joke languages]]
[[Category:Output only]]
[[Category:Implemented]]
[[Category:Languages]]' |
Unified diff of changes made by edit (edit_diff) | '@@ -1,5 +1,5 @@
'''Deadfish x''' is a superset of Jonathan Todd Skinner's [[Deadfish]]. There are twice as many commands and uses the XKCD variant.
-I ([[firefly431|User:firefly431]]) will be writing a Python interpreter, but you guys can write whatever you want.
+I ([[User:firefly431|firefly431]]) will be writing a Python interpreter, but you guys can write whatever you want.
== Commands ==
' |
New page size (new_size) | 5993 |
Old page size (old_size) | 5993 |
Lines added in edit (added_lines) | [
0 => 'I ([[User:firefly431|firefly431]]) will be writing a Python interpreter, but you guys can write whatever you want.'
] |
Unix timestamp of change (timestamp) | '1732546509' |