getbyte(p,i) p%i
putbyte(p,i,v) p%i=v
cis=0 cos=1
selectinput(f) cis=f
selectoutput(f) cos=f
wrch(c) std.fputc(c,cos)
rdch() std.fgetc(cis)
newline() wrch('*n')
reads(s) [%s=0;@[s%(%s+=1)=rdch();s%%s&&s%%s<>'*n'];%s-=1]
writes(s;e) [e=s+%s;s<e@wrch(%++s)]
writet(s,d) [writes(s);d=d-%s;(d-=1)>=0@wrch('*s')]
writebin(n,d) [d>1?writebin(n>>1,d-1);wrch((n&1)+'0')]
writeoct(n,d) [d>1?writeoct(n>>3,d-1);wrch((n&7)+'0')]
writehex(n,d) [d>1?writehex(n>>4,d-1);wrch("0123456789abcdef"%((n&15)+1))]
writed(n,d;t%10,i,j,k) [
k=n<0?[--d;-n],n;i=0;@[t$%i=k#10+'0';++i;k/=10];
j=i+1;j<=d@[wrch('*s');++j];n<0?wrch('-');
j=i-1;j>=0@[wrch(t$%j);--j]
]
writen(n) writed(n,0)
writeu(n,d;m) [(m=(n>>1)/5)?[writed(m,d-1);d=1];writed(n-m*10,d)]
str2numb(s;a,i,dig) [
a=i=0;++i<=%s@[dig=s%i-'0';(dig>=0)&&(dig<=9)?a=a*10+dig];
s%1=='-'?-a,a
]
decval(c) c>='a'?c-'a'+10,c>='A'?c-'A'+10,c-'0'
capitalch(c) c-(c>='a'?c<='z'?32)
compch(c1,c2) capitalch(c1)-capitalch(c2)
compstring(s1,s2;l,i,r) [
l=%s1<%s2?%s1,%s2;
i=0;++i<=l@(r=compch(s1%i,s2%i))?=r;
%s1-%s2
]
writef(s;args!10,t,e,c) [
t=args$;e=s+%s;s<e@(c=%++s)=='%'?[
c=%++s;c=='s'?writes(!t),c=='n'?writen(!t),c=='c'?wrch(!t),
c=='i'?writed (!t,decval(%++s)),c=='u'?writeu (!t,decval(%++s)),
c=='b'?writebin(!t,decval(%++s)),c=='o'?writeoct(!t,decval(%++s)),
c=='x'?writehex(!t,decval(%++s)),c=='t'?writet (!t,decval(%++s)),
[wrch(c);t-=2];t+=2],wrch(c)
]