МАЛЕНЬКИЕ ПРОГРАММЫ И ИХ ОПИСАНИЕ
Маленькие программы неудобно записывать в отдельные файлы. Более разумно держать их несколько в одном файле с описанием. Так в этом файле и сделано.
#pro scom #e [b=KY; le=670;] _text @
Информация о списке каких-то операций
Если в программе много операций, то информацию о списке таких операций проще всего делать с помощью вэб-сайта. Он готовится отдельно а тут надо его показать.
#pro 0001 # s(3)=1; #pr C:\\_vk\\_Web\\__kv-u\\acl\\info.htm\E #io [op=wt; fir=t(1); n=s(5); file=runsys.bat;] #rob [mo=1; le=500;] #sys [op=rp;] # &=&&; @
Увеличение горизонтальной толщины линий на картинке символа
Задача такая: Из негатива картинки символа получена матрица чисел в диапазоне от 0 до 255. Каждая точка строки складывается с предыдущей и последующей, а затем новые значения чисел обрезаются на 255. После этого рисуется картинка символа в негативе. В самом начале надо определить размеры картинки в переменных n1 и n2, а затем напечатать имя файла без расширения, которое добавляется автоматически как (.dat). Имя либо полное, либо относительно папки РАМЫ.
#pro 0002 # n1=57; n2=65; #pr C:/0/2/03\E
# n=n1*n2; #io [op=rd; fir=r(1); mo=1; n=n; le=0; file=\Tp .dat\E]
# j=2+n; i=2; n3=n1-2; #rep n2 #rep n3 # r(j)=r(i-1)+r(i)+r(i+1); j=j+1; i=i+1; #end # j=j+2; i=i+2; #end
# j=1+n; i=1; #rep n2 # r(j)=r(i); j=j+n1; i=i+n1; #end # j=n1+n; i=n1; #rep n2 # r(j)=r(i); j=j+n1; i=i+n1; #end
# J=1+n; F=1+2*n; V0=0; V1=255; #ma [op=var; b=J; le=n;]
#d 5 A J n1 n2 -1100 11 #p [pa=0; em=0;] #pri \Tp |\Tp\E #e [n=2;] _scom # &=&&; @
Проверка файла на наличие неправильных символов
Задача такая: Есть текстовый файл, адрес которого указан. Нужно проверить наличие в этом файле символов с ASCII с номерами за пределами интервала 1 -- 127. Если такие символы есть, то указывается их положение в файле и ASCII код. Разумеется, что речь идет о файле на английском языке без юникодов. При отправке статей в Латехе в иностранные журналы они не компилируются, если там по какой-то причине остались русские буквы. И это приходиться проверять.
#pro 0003 #pr C:/_vk/_Science/My-art/251-ka23pl/ka23pl.tex\E # b=s(3)-1; !
#f [op=size; file=arg;] \T1 b\E # N=s(1); #io [op=rb; fir=i(1); n=N; le=0;] \T1 b\E
# j=1; i=1; #rep N # &=(i(j)*(128-i(j)))>0; #case 0 # r(i)=j; r(i+1)=i(j); i=i+2; #end | # j=j+1; #end # n=(i-1); &=n>0<1; !
#case 0 #m [op=win;] нет плохих символов\n\I8 N;\E #end |
#case 1 # a=s(3); i=1; #rep n #pr \I5 r(i) r(i+1);\E # i=i+2; #end # b=s(3)-a; #m [op=win;] \Ta b\E #end | # &=&&; @
Мини презентация
Задача такая: В некоторой папке есть коллекция картинок одинакового размера. Они все пронумерованы от s001 до s0nn. Расширение файлов jpg или png. Из этих картинок сделана матрица иконок в файле s099.jpg. Матрицу легко приготовить с помощью готовых ACL программ. Иконки имеют фиксированный размер, а их число равно (или больше) числа картинок. Программа показывает таблицу иконок, а после выбора одной их них -- картинку с прокруткой вперед или назад при нажатии клавиш стрелок вправо или влево. При нажатии любой другой клавиши делается запрос на повторение выбора. Входные данные w и h -- ширина и высота иконок, N1 и N2 -- число иконок по горизонтали и вертикали. И печать имени папки с картинками.
#pro 0004 # s(3)=999; w=300; h=200; N1=4; N2=4; #pr C:/_vk/_Web/__kv-u/slsh2/2201/\E
# u=s(4); v=s(5); N3=N1*N2+1; #f [op=fold; file=null;] # &=1; !
#case 1 #w [op=im; mo=0; file=\Tu v s099.jpg\E sav=1;] # w=s(12); h=s(13); #ch [n=1; xs=(s(106)-w)/2; ys=(s(107)-h)/2;]
. # x=s(102); y=s(103); k1=int(x/w)+1; k2=int(y/h)+1; n=(N2-k2)*N1+k1; &1=2; &=abs(s(2)-27)<1; !
. #case 1 &=1; !
. . #case 1 # s(3)=1; #pr \Tu v s\I-3 n;.jpg\E #f [op=size; file=\Tp\E] # &=s(1)<1; #case 1 #w [op=im; mo=0; sav=0;] # b=s(2); #end |
. . . #case 0 #pr \Tu v s\I-3 n;.png\E #f [op=size; file=\Tp\E] # &=s(1)<1; #case 1 #w [op=im; mo=0; sav=0;] # b=s(2); #end | #end |
. . . # a=2; &=b-39; #case 0 # n=n+1; &=n; #case N3 # n=1; #end | # a=1; #end |
. . . # &=b-37; #case 0 # n=n-1; &=n; #case 0 # n=N3-1; #end | # a=1; #end | # &=a; !
. . #end #m [op=yno;] Would you like to continue?\E # &1=&; !
. #end | # &=&1; !
#end # &=&&; @
Дата последнего обновления файла
Данная программа предлагает просто выбрать файл и затем показывает дату его последнего обновления. Процедуру можно продолжить по запросу. Используется суперкоманда номер 34
#pro 0005 #f [op=fold; file=null;] # &=1; #case 1
# s(3)=1; #f [op=choo; mo=0; file=proc;] #e [n=34;] _scom #pr \Tp\n\I-6 DZ;-\I-6 TZ;\E #e [n=33;] _scom !
#m [op=yno;] Continue ?\E #end # &=&&; @
Генератор карты цветов для 2D зависимостей
При изображении 2D зависимостей в виде цветной карты очень важно подобрать правильную шкалу цветов для такой карты. Данная программа дает одно из возможных решений этой задачи.
#pro 0006 # n=256; m=3; J=99; K=J; j=K; i=0; u=40; #d 15 r(1) 202 102 u 202 u 152 152 u 999 u 252 52 u 252 u !
#rep m # k=r(1+i); u=n-k; #rep k # x=(j-K-r(2+i))/r(3+i); x=255*exp(-x*x); y=(j-K-r(4+i))/r(5+i); y=255*exp(-y*y); r(j)=(x+y)<255; j=j+1; #end
. # C=r(j-1); #ma [op=vic; b=j; le=u;] # j=j+u; K=K+n; i=i+5; #end # Nm=3; !
# j=J; s(3)=1; #rep 24 #rep 32 #pr \I4 r(j);\E # j=j+1; #end #pr \n\E #end # N=s(3)-1; !
#io [op=wt; fir=t(1); n=N; file=tmp/cmtest.txt;] #rob [mo=1; le=100;]
#d 2 r(J) 0 1 #d 15 s(9) J 0 100 900 1 900 1 0 0 1 1 99999 1 50 -1 #pr tmp/cmtest\E #w [op=im; file=here; pa=3; form=\Tp\E] @
# &=1; #case 1 #e [n=16;] _scom #f [op=fold; file=null;] # s(3)=1; #e [c=1;] 0001 #e [c=2;] 0002 #e [c=3;] 0003 #e [c=4;] 0004 #e [c=5;] 0005
#e [c=6;] 0006 # a=1; #case 99 # a=2; #end | # &=a; #end
.