P5 # PROLAN/M SUM.PRM by Keymaker 5 1 4 0+0=?
P5 # PROLAN/M SUM.PRM by Keymaker (0,0) RESULT 23 40 255 1 0+0*= 25 0+*A.= 13 0+*A=. 24 0+*A=0 35 0*P...........A=0 2 0*P..........A.=0 2 0*P.........A..=0 2 0*P........A...=0 2 0*P.......A....=0 2 0*P......A.....=0 2 0*P.....A......=0 2 0*P....A.......=0 2 0*P...A........=0 2 0*P..A.........=0 2 0*P.A..........=0 2 0*PA...........=0 13 0*PA..........=.0 13 0*PA.........=..0 13 0*PA........=...0 13 0*PA.......=....0 13 0*PA......=.....0 13 0*PA.....=......0 13 0*PA....=.......0 13 0*PA...=........0 13 0*PA..=.........0 13 0*PA.=..........0 13 0*PA=...........0 14 0*PA=#0 25 *A.PA=#0 12 *AP.A=#0 2 *APA.=#0 13 *APA=.#0 24 *APA=0#0 39 *APA=0_# 37 *APA=0# 61 APA=0# 62 APA=0 63 0PA=0 63 0P0=0 73 0+0=0
P5 # XKCD Random number 5 1 4 0+0=?
P3 # //chosen by fair dice roll.;\n guaranteed to be random.// 4 4 4 0 4 0 4 0 4 0 4 0 4 4 4 0 0 0 4 0 0 0 4
Interpreter sketch
Meta-interpreter: https://raw.githubusercontent.com/iannmiui-png/Pgmpietoncracklangplus/refs/heads/main/pgmpietoncracklang_plus.py
P5
# Pgmpietoncracklang+
203 89
255
import sys,re
def main():
d=open(0,encoding='l1').read().split('\n');c=d[1];v=int(d[3].split()[0])
if'XKCD'in c:print('P3\n# //chosen by fair dice roll.;\\n guaranteed to be random.//\n4 4\n%d'%v+''.join('\n'+''.join('%3d '%(v*int(x))for x in r)for r in'0101 0101 0111 0001 0001'.split()));sys.exit()
m=re.search(r'\((\d+),(\d+)\)',c);s=m.expand(r'\1+\2=?')if m else'\n'.join(d[4:]).strip()
R=[l[1:-1].partition(',')for l in P.split('\n')if l];T=[]
while 1:
for i,(a,_,b)in enumerate(R):
j=s.find(a)
if j>=0:break
if a=='':break
s=s[:j]+b+s[j+len(a):];T+=['%4d %s'%(i,s)]
w=max(map(len,T));print('P5\n%s RESULT\n%d %d\n%d\n'%(c,w,len(T),v)+''.join(t.ljust(w)for t in T),end='')
P=r"""($, PROLAN/M sum program, written by Keymaker )
(=?,*=)
(.A,A.)
(.B,B.)
(.C,C.)
(.D,D.)
(.E,E.)
(.F,F.)
(.G,G.)
(.H,H.)
(.I,I.)
(.J,J.)
(.P,P.)
(.=,=.)
(=...........,=#)
(=..........,=9)
(=.........,=8)
(=........,=7)
(=.......,=6)
(=......,=5)
(=.....,=4)
(=....,=3)
(=...,=2)
(=..,=1)
(=.,=0)
(0*,*A.)
(1*,*B..)
(2*,*C...)
(3*,*D....)
(4*,*E.....)
(5*,*F......)
(6*,*G.......)
(7*,*H........)
(8*,*I.........)
(9*,*J..........)
(+*,*P...........)
(a_,_bbbbbbbbbb)
(_,)
(b,a)
(#0,_#)
(#1,_b#)
(#2,_bb#)
(#3,_bbb#)
(#4,_bbbb#)
(#5,_bbbbb#)
(#6,_bbbbbb#)
(#7,_bbbbbbb#)
(#8,_bbbbbbbb#)
(#9,_bbbbbbbbb#)
(=@,=1)
(0@,1)
(1@,2)
(2@,3)
(3@,4)
(4@,5)
(5@,6)
(6@,7)
(7@,8)
(8@,9)
(9@,@0)
(a,@)
(*,)
(#,)
(A,0)
(B,1)
(C,2)
(D,3)
(E,4)
(F,5)
(G,6)
(H,7)
(I,8)
(J,9)
(P,+)
(,)"""
main()
Directory
<-Pgmpietoncracklang
->Pgmpietoncracklang/Pgmpietoncracklang++
Pgmpietonracklang++
You can do Spoon by introducing delimiters. The delimiter is a gradient which differentiates the inner part of the strings rather than the edges.
| brainfuck | Spoon syntax | Pgmpietonracklang++ syntax | Description |
|---|---|---|---|
| + | 1 |
0\0\0\ | Increment the memory cell at the pointer |
| - | 000 |
0\123456789876543210\ | Decrement the memory cell at the pointer |
| < | 010 |
0\1234567898765432102345678987654321 | Move the pointer to the left |
| > | 011 |
0\0\1234567898765432102345678987654321 | Move the pointer to the right |
| [ | 0011 |
0\0\123456789876543210\0\ | Jump past the matching ] if the cell at the pointer is 0 |
| ] | 00100 |
0\0\123456789876543210\123456789876543210\ | Jump back to the matching [ if the cell at the pointer is nonzero |
| . | 001010 |
0\0\123456789876543210\12345678987654321023456789876543210\ | Output the character signified by the cell at the pointer |
| , | 0010110 |
0\0\123456789876543210\1234567898765432102345678987654321023456789876543210\ | Input a character and store it in the cell at the pointer |
00101110 |
/// | 'print "\n",m,"\n";', | |
| EOF | 00101111 |
0\0\123456789876543210\12345678987654321023456789876543210234567898765432102345678987654321 | Terminate program execution. |
Pgmpietonracklang++///
This will be Slashes implemented in such a manner as the previous iterations. Miui (talk) 13:59, 1 September 2026 (UTC)