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.
掛軸key
掛軸key (pronounced "kakejiku key") is an esoteric programming language in the string-rewriting paradigm. Programs are a formed by matching a key to a script mandala (a "kakejiku"). In essence the programs here are locks so a ConstantLanguage() is used to enumerate the system.
A kakejiku
The first line contains a magic number (generally "P2" or "P5") followed by a program description.
P2 <-> P5
# This line is the program description. A series of programs is presented to attempt to describe a sequential replacement system as if it were a key being turned in a lock. A key here is described as part of a kakejiku (Kanji:掛軸) or a "hung script."
掛軸
P5
# non-breaking spaces -> 255
140 213
255
G =
(t, e)= >{l et h,
l= "", r=0 ,o =ato b(
t) ,s =[] ;f or( h =0
;h<o.l engt h ;h ++)l+
=(o.charC od eA t(h) +2 5 6 ) .toString(
2).sl ic e (1 ) ;let p=t=>pars eIn t(l .s ubstr
(r, t) ,2 ,r +=t);for(let t =0 ;t <e .le ng
th;t ++ ){ l et [l ,r ,o ]= e[ t], a=
p(5); fo r( ;a -- ;){le t t ,e= p(3
),a=[] ,f = [ ] ;for(t=0;t < e ;t+ +) a. push(
[4*p(7)* o+l, 4* p(7)*o+r]);for( t=0;t<4;t+ +) f. pus h(
3 .5*p(3 )*o) ;let i=e>2? [[2*a[0][ 0]-a[1] [ 0 ] ,2* a[0
] [1]-a[1] [1 ]],... a , [2*a[e-1 ] [0 ]- a[ e-2][0],
2* a[e-1 ] [1]-a[e - 2][1] ]]:0,n= [] ;i f( i)for(h=0;h<i.
length-3;h++ ){l et[e,l ,r,o]=i.s li ce( h , h+4);for(t=0;t
<1 4 ;t++) {let h=t/1 3;n.push( [0 ,1 ].m ap(t =>.5*(2*
l[t]+( r[t] -e[ t])*h + (2*e[t]-5 *l [t] +4 *r[ t]-o[t ])
*h*h+( 3*l[t] -e[t]-3*r[t]+o[t] )*h**3) )) }} else fo r
(t=0; t< 1 4;t++)n. push([0,1].map(e =>a [0 ][e]+( a
[ 1][e ]- a [0 ][e])*t/13)); let u =n.l en g th-1,m
=[],M=[] ; n. ma p( ([t,e], h) =>{l e t l=h/u *3, r=Math.mi
n(0|l,2) , o= f[r ]+(f[r +1]- f[r ] ) *(l-r ) , [ s,p]=n[
M ath.ma x (0 ,h -1 ) ],[ a ,i]=n[ M ath .min (u,h+
1 )] ,g= a- s, c=i -p , d= M ath. h yp ot(g, c)||1
;m.p ush ( [t-c/d * o ,e+ g/ d*o ] ) ,M .p ush(
[t+c /d * o, e- g/d *o ])}) ,s. pu sh (" M"+[..
.m ,. .. M. re ver se()].map( t= >t [ 0] .toFi
xe d (1) + " "+t[1].toFixed ( 1 ) ). join("
L")+" Z") }}return s};G= ( t, e)= >{le
t h,l =" ",r= 0,o=ato b( t), s =[];
for( h =0 ;h < o.lengt h;h ++) l +=(o.ch
arCode A t(h )+2 56).t oS tr in g (2).sl
ice(1) ; let p= t=>p arseI nt (l .su bstr(r
,t),2 ,r+ =t );fo r(let t=0;t<e . l eng th ;t++
){l et [l ,r ,o] =e[t],a=p(5 );for(;a -- ;){let
t,e =p (3) ,a=[], f=[];for(t=0;t<e ;t+ +)a. push( [
4*p(7) * o +l,4 *p( 7 )*o+r]); f or ( t=0;t <4 ;t ++) f
.pus h (3.5*p (3 )*o); let i=e>2 ?[ [2* a[0][ 0]-a[1
][0], 2*a[0] [1 ]-a[1 ][1]],...a ,[2 *a [e-1 ][0] -
a[e-2] [ 0 ] ,2*a[e- 1][1] -a[e -2] [1] ]] :0, n
=[ ]; if( i )for ( h=0;h<i.le ng th-3; h+ +){let [
e ,l,r ,o ]=i .sli ce(h,h+4);fo r(t =0; t<1 4;t++ )
{let h=t /13 ;n. push([0,1 ]. map (t= > .5* (2* l[t
]+(r [t] - e[t ]) *h +(2*e[t ]-5 *l[t ]+4 *r [ t
]-o [t ] )*h *h+( 3 *l[t]-e [t] -3 *r[ t] +o
[ t])* h** 3)))} }else fo r(t= 0; t<14;t ++) n
. pu sh([ 0 , 1].map(e=> a[ 0] [ e]+( a[
1] [e]- a [0 ][e ])*t/13)); let u=n .length
-1, m =[] , M=[ ];n.ma p(( [t, e],h)=>{le
t l = h/u* 3 ,r= Math.m in( 0|l, 2), o=f[r]
+(f [ r+1] - f[ r ])*(l -r), [s ,p ]=n[Ma th.
max(0, h- 1)],[ a,i] = n[Math.m in(u,h+1)],g=a- s,c =i-
p,d=Ma t h .h ypot(g,c ) ||1;m.push([t-c/d * o, e+ g/d*
o]),M. p us h ([t+ c/d*o,e-g/d*o])}),s.push ("M"+[ ...
m, ... M.re ve rse()].map(t=>t[0] .t oFi x e d( 1) +"
"+t[1] .t oF ix e d(1)).join("L" )+" Z") } }r eturn
s};G=( t ,e) =>{l et h,l="",r= 0, o= at ob(t)
,s=[] ; f or (h=0; h<o.length;h ++) l+= (o .cha
rCode At(h )+ 256 ) .toString( 2).sli c e( 1);l
et p =t = >pa rs eInt(l.substr(r,t) , 2 ,r +=t);
for( let t = 0;t< e.len gt h;t ++) {l et [l,r ,o] =
e[t] ,a=p (5 ) ; f or(;a--;){let t,e=p (3) ,a =[],f
= []; for( t=0; t< e;t++)a.push([4*p( 7)*o +l ,4 *p
( 7)* o+ r]) ; for(t=0;t<4;t+ + ) f . p us h
(3.5* p (3)*o);let i=e>2?[ [ 2 *a [0 ]
[0]-a [ 1][0 ],2*a[0][1]-a[ 1 ] [1 ]] ,..
.a,[ 2* a[e -1][0]-a[e- 2 ] [0 ], 2*a[
e-1] [ 1]-a[e-2][1]]]:0 ,n=[] ; if (i)f
or( h= 0 ;h<i.length-3 ;h++ ){le t [e, l,r,
o]= i.s li ce( h,h+4); for( t=0;t < 14 ;t++
){let h =t/1 3; n.push([0, 1].ma p (t =>.
5*(2* l[ t]+(r [t]-e [t]) *h + ( 2*e[
t]-5*l [t ]+4*r[ t]- o[t])*h*h+(3*l[ t ]-e[t
]-3* r [t ]+ o[t])*h** 3 )) )}}else for(t=
0;t<1 4 ; t++ )n .pus h([0,1 ] .map(e=>a[0
][e]+(a [1][e] -a[0] [ e])* t/13)); l et u=n. le
ngth -1,m=[], M= [] ;n.map(( [t,e],h)=> { le t l =h
/u* 3,r=Math .m in (0|l,2 ),o =f[r] + ( f[ r+1]-f
[r])*( l-r) ,[ s ,p ]=n[Mat h.max(0,h - 1)],[a
,i ]=n[ Math. mi n(u,h+1 )],g= a- s ,c=i-p,
d= Mat h.hyp ot (g,c )|| 1 ; m.push([t
-c/d*o,e +g/ d* o]), M.pu sh( [t+ c/d*o,
e-g/d*o])}) , s. p ush( "M "+ [.. .m,...M
.revers e()]. m ap (t=>t[ 0] .toFi xed(1 )
+" " +t[ 1] . to Fixe d(1) ).joi n("L") +
"Z ") } }r eturn s}; G= ( t,e ) =>{le
t h,l =" " ,r=0,o=a t ob (t ),s =[] ;for(
h=0 ; h< o .l ength; h++)l + =(o .charC o
deAt ( h)+ 2 56 ).toStri ng (2).sli ce(1 );let
p=t= > pa rseInt (l.substr(r , t ) ,2 ,r+=t
);for (l e t t =0 ;t<e.len g th ; t++
){let [l ,r, o] = e[ t],a=p( 5 );f o r(;a
--;){l et t,e= p (3),a=[] ,f=[];for( t=0;t
<e;t++) a. pu sh( [4 * p(7)*o+l, 4*p(7)*o+r] ); for(
t=0 ;t < 4 ; t ++)f. pus h(3.5*p(3)* o ); let i
=e>2? [[ 2 * a [ 0][0]-a[1][0],2*a [ 0] [1]-a[1
][1]] , . . .a , [2*a[e-1][0]-a [ e- 2 ][0 ],
2*a[ e -1][1] -a[e-2][ 1]] ] :0 , n=[];
if(i ) for(h= 0;h < i .lengt
h-3;h + +){let[e, l , r ,o]=i .
slic e (h,h+4);fo r ( t=0;t<1
4 ;t++){ let h=t/ 1 3;n.push
([0, 1 ] .ma
key
P2 # 御本尊 -> Gohonzon (P5) 140 213
example
Nope.
</nowiki>
<br><br>
<br> <br><br>
<br><br><br><br>
<br><br><br><br><br><br>
<br> <br> <br> <br><br>
<br><br> <br><br><br><br>
<br><br><br> <br><br><br><br><br><br>
<br><br><br><br><br><br><br><br>
<br> <br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br> <br> <br> <br> <br> <br> <br> <br><br>
<br><br> <br><br> <br><br> <br><br><br><br>
<br><br><br> <br><br><br> <br><br><br> <br><br><br><br><br><br>
<br><br><br><br> <br><br><br><br><br><br><br><br>
<br> <br><br><br><br><br> <br> <br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br> <br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br> <br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br> <br> <br> <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br> <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br> <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br> <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br><nowiki>
then Nah. (myoho renge kyo)
Interpreter
日本の創価学会における日蓮大聖人の仏法:| 御 本 尊 | 南 無 妙 法 蓮 華 経 | ![]() |
御本尊 = "Gohonzon"
- 南無妙法蓮華経 = "namu myōhō renge kyō"
See also
External Resources
- This tio link demonstrates the 掛軸key for a Gohonzon program in javascript by exploiting 'SyntaxError: Unexpected token ()'
- This tio link demonstrates the reverse quine (javacript string-rewriting)
- https://iannmiui-png.github.io/wiki/%E6%8E%9B%E8%BB%B8key/interpreter This is an interactive self-interpreter (utilizing javascript)
- https://en.wikipedia.org/wiki/Gohonzon
