% #################################################################################### % П Р Е О Б Р А Ж Е Н И Е % #################################################################################### % пасхальная % энумерация % окрестовая % massive && signed % радоница % учение % вознесение % преполовение % преображение % 19-04-2020 -::- 19-08-2020 % 20-08-2020 % #################################################################################### clear all clc % события: % ##################################### % христосе явление sobytie = 0; tot = 11; draai = 1; % ##################################### % ##################################### % радоница воскресение sobytie = 1; tot = 12; draai = 1; % ##################################### % ##################################### % воскресе преполовение sobytie = 2; % феникс tot = 13; draai = 0; % феникс % ##################################### % ############ % преображение sobytie = -1; tot = 10; draai = 1; % преображение % ############ % ... ################## ... % ... присносущная жизнь ... TOT = 2^tot+1; ... % ... присносущная жизнь ... % ... ################## ... % ################## tekst = 0; % или 1 % ################## % ################ if sobytie == -1 'ΜΕΤΑΜΟΡΦΟΣΙΣ' end % ################ % ################## % главная энумерация for n = 1:TOT N(n) = n; % ################################################## zbinm = io10_(dec2bin(n)); % ################################################## if sobytie > 0 zbinm(1) = []; end % без первого бита % ################################################## zbinm_(n) = biio_(zbinm); % ################################################## % ######################################## % поколение t(n) = length(zbinm); t_(n) = nstr_(t(n)); % поколение % ######################################## % ############## % раннее событие if sobytie <= 1 draw_binm = zbinm; if n > 1 znaki(n) = zbinm(1); znakj(n) = zbinm(1); else znaki(n) = -1; znakj(n) = -1; end end % раннее событие % ############### % ############### % позднее событие if sobytie == 2 if t(n) >= 2 if zbinm(2) == 0 draw_binm = [zbinm(2) ~zbinm(3:end)]; else draw_binm = [zbinm(2) zbinm(3:end)]; end znaki(n) = zbinm(1) ~= zbinm(2); znakj(n) = zbinm(1); else draw_binm = []; znaki(n) = -1; znakj(n) = -1; end znaki_(n) = nstr_(znaki(n)); znakj_(n) = nstr_(znakj(n)); end % позднее событие % ############### % ############################### draw_binm_(n) = biio_(draw_binm); % ############################### % ############################################################ if sobytie == 0 if mod(t(n),2) == 0 draw_binm_(n) = negb_(draw_binm_(n)); end end % ############################################################ % ################################################################## if sobytie == -1 draw_binm_(n) = negb_(draw_binm_(n)); znak = 0; end % ################################################################## % ################################################### draw_chfm_(n) = zbinm_to_zchfm_pasen_(draw_binm_(n)); % ################################################### draw_c(n) = getc_(draw_chfm_(n)); draw_c_(n) = nstr_(draw_c(n)); draw_s(n) = gets_(draw_chfm_(n)); draw_s_(n) = nstr_(draw_s(n)); draw_z(n) = getz_(draw_chfm_(n)); draw_i(n) = draw_c(n) * (-1).^znaki(n); draw_i_(n) = nstr_(draw_i(n)); draw_j(n) = draw_s(n) * (-1).^znakj(n); draw_j_(n) = nstr_(draw_j(n)); if draai == 0 number(n) = (draw_i(n) ) + i * ( draw_j(n)); else number(n) = (draw_i(n) - draw_j(n)) + i * (draw_i(n) + draw_j(n)); end number_(n) = nstc_(number(n)); % ########################################################################## % словарное сравнение в порядке преображения (znak_gedaanteverandering == 0) % ########################################################################## if sobytie == -1 znak_gedaanteverandering = 0; [kern_,left_,righ_,body_,okchf] = zchfm_to_matter_pasen_(draw_chfm_(n),znak_gedaanteverandering); orderleri(n) = lexi_(left_,righ_,-1); orderleke(n) = lexi_(left_,kern_,-1); if mod(n,4) == 1 orderlebo(n) = lexi_(left_,body_,-1); end if mod(n,4) == 2 orderlebo(n) = lexi_(left_,body_,-1); end if mod(n,4) == 3 orderlebo(n) = same_(left_,body_ ); end if mod(n,4) == 0 orderlebo(n) = lexi_(left_,body_,-1); end if mod(n,4) == 1 orderboke(n) = lexi_(body_,kern_,-1); end if mod(n,4) == 2 orderboke(n) = same_(body_,kern_ ); end if mod(n,4) == 3 orderboke(n) = lexi_(body_,kern_,-1); end if mod(n,4) == 0 orderboke(n) = lexi_(kern_,body_,-1); end % μεταμόρφωσις orderkeri(n) = lexi_(kern_,righ_,-1); if n > 1 order_(n) = lexi_(draw_chfm_(n-1),draw_chfm_(n-0),-1); if order_(n) == 0 gedantenverandering = [nstr_(n) ' : ' draw_chfm_(n-1) ' > ' draw_chfm_(n-0)]; end end end % ########################################################################## % словарное сравнение в порядке преображения (znak_gedaanteverandering == 0) % ########################################################################## end % главная энумерация % ################## % ============================== % порядок преображения в порядке % ============================== if sobytie == -1 all_in_order = ([all(orderleri) ... all(orderleke) ... all(orderlebo) ... all(orderkeri)... all(orderboke)]) end % ============================== % порядок преображения в порядке % ============================== % ########### % изображение % ########### if 1 == 1 figure(1); set(1,'color',[.5,.5,.5]) plot(number,'r.','MarkerSize',10); hold on; plot(number,'w','LineWidth',2); % == plot(draw_i,draw_j); if sobytie == -1 title('ПРЕОБРАЖЕНИЕ','color','w'); end if sobytie == 0 title('ЯВЛЕНИЕ','color','w'); end if sobytie == 1 title('ВОСКРЕСЕНИЕ','color','w'); end if sobytie == 2 title('ПРЕПОЛОВЕНИЕ''color','w'); end axis off if tekst == 1 for in = 1:n; if in >= 1 text(real(number(in)),imag(number(in)),num2str(in)); end end end end % ########### % изображение % ########### % ################################# % ############### % Ф У Н К Ц И И % ############### % ################################# % ######################################################################### % пасха % zbinm_ TO zchfm_ % 19-04-2020 -::- 19-08-2020 % MASSIVE && SIGNED && OPPOSED % % ######################################################################### % ######################################################################### function [zchfm_] = zbinm_to_zchfm_pasen_(zbinm_); % the signed massive diatomic opposed zchfm_ ####################### % % of the signed massive binary zbinm_ ####################### % ######################################################################### zbinm = io10_(zbinm_); if isempty(zbinm) zchfm = []; zchfm_ = iipm_(zchfm); return; end % ###################################### tzbinm = length(zbinm); znak = zbinm(1); % ###################################### % ################################ zchfm = []; zchfm_ = iipm_(zchfm); for i = 1:tzbinm [kern_,left_,righ_,body_,okchf] = zchfm_to_matter_pasen_(zchfm_,znak); if zbinm(i) ~= znak RIGH_ = kern_ ; else RIGH_ = righ_ ; end LEFT_ = zchfm_; zchfm_ = fusi_(LEFT_,RIGH_); [biio_(zbinm(1:i)) zchfm_]; end % ################################ end % # % ################################################################################# function [kern_,left_,righ_,body_,okchf] = zchfm_to_matter_pasen_(zchfm_,znak); % идея дух сын отец сусам % ядро % ################################################################################# % пасхальная материализация % 19-04-2020 -:- 19-08-2020 % % !! знак только для начального пустого слова !! % % ################################################################################# kern = []; righ = []; left = []; body = []; zchfm = pmii_(zchfm_); % ###################################### % знак только для начальных пустых слов if isempty(zchfm) zchfm = (-1).^znak; end % знак только для начальных пустых слов % ###################################### wrd = zchfm; o = length(wrd); i = 1; [okchf,z,l,r] = ischf(wrd); [oklap,Z,L,R] = islap(wrd); ok = [okchf oklap]; zn = znak; if oklap kern = zchfm(1:Z+0); left = zchfm(1:L+0); righ = zchfm(L+1:Z); % #################### % три body возможности % две znak возможности if okchf if r > l % (01) chf: righ длинней чем left: cut righ(left) [okrig,zl,ll,rl] = ischf(left); % body is a lap (01) body = zchfm(1:o-rl); else % (11) chf: lef не короче чем rig: cut righ, то есть оставь left % body is a chf (11) body = left; end % ########## zn = 0+znak; % ########## else % (00) or (10) lap: cut one kern % body is either a lap (00) or a chf (10) body = zchfm(1:o-Z); % ########## zn = 1-znak; % ########## end end % три body возможности % две znak возможности % #################### % ###################################### if Z == 1 righ = -kern; end % ###################################### kern_ = iipm_(kern); left_ = iipm_(left); righ_ = iipm_(righ); body_ = iipm_(body); end % # % ########################## % nstc_ % ########################## function [cel_] = nstc_(num); if imag(num) == 0 if real(num) >= 0 cel_ = cellstr(['+' num2str(num) '+0i' ]); else cel_ = cellstr(['' num2str(num) '+0i' ]); end else if real(num) >= 0 cel_ = cellstr(['+' num2str(num)]); else cel_ = cellstr([ num2str(num)]); end end end % # % ########################## % nstr_ % ########################## function [cel_] = nstr_(num); cel_ = cellstr(num2str(num)); end % # % ########################## % getz_ % ########################## function [z] = getz_(word_); z = length(pmii_(word_)); end % # % ########################## % getc_ % ########################## function [c] = getc_(word_); word = pmii_(word_); c = length(find(word<0)); end % # % ########################## % gets_ % ########################## function [s] = gets_(word_); word = pmii_(word_); s = length(find(word>0)); end % # % ############################ % negb_ % ############################ function [Bin_] = negb_(bin_); Bin_ = biio_(~(io10_(bin_))); end % # % ########################### % io10_ % ########################### function [bin] = io10_(bin_); Bin_ = char(bin_); bin = zeros(1,length(Bin_)); bin(findstr('1',Bin_)) = 1; bin(findstr('0',Bin_)) = 0; end % # % ########################### % biio_ % ########################### function [bin_] = biio_(bin); BIN = ['']; BIN(find(bin==+1)) = '1'; BIN(find(bin== 0)) = '0'; bin_ = cellstr(BIN); end % # % ############################# % pmmp_ % ############################# function [DIA_] = pmmp_(dia_ ); DIA_ = iipm_(-pmii_(dia_)); end % # % ########################### % iipm_ % ########################### function [dia_] = iipm_(dia); dia_ = ['']; dia_(find(dia == +1)) = '+'; dia_(find(dia == -1)) = '-'; dia_ = cellstr(dia_); end % # % ########################### % pmii_ % ########################### function [dia] = pmii_(dia_); Dia_ = char(dia_); dia = zeros(1,length(Dia_)); dia(findstr('+',Dia_)) = +1; dia(findstr('-',Dia_)) = -1; end % # % ################################### % fusi_ % ################################### function [chf_] = fusi_(chf1_,chf2_); chf_ = iipm_([pmii_(chf1_) pmii_(chf2_)]); end % # % ####################################################### % lexi % determines whether lexicographically bino < bini % ####################################################### function [olessi] = lexi_(bino_,bini_,type) if type < 0 bino = pmii_(bino_); bino = (bino + 1)./2; bini = pmii_(bini_); bini = (bini + 1)./2; else bino = io10_(bino_); bini = io10_(bini_); end % ========================================== %if any(bino == -1) bino = (bino + 1)./2; end %if any(bini == -1) bini = (bini + 1)./2; end % ========================================== olessi = lexi(bino,bini); end % # % ################################## % lexi NON-IMPLICATION bino </- bini % ################################## function [olessi] = lexi(bino,bini) to = length(bino); ti = length(bini); j = 0; olessi = 1; % ============================== % emptyness % is smaller than % emptyness if to == 0 & ti == 0 return; end % ============================== while 1 == 1 j = j + 1; if j > ti olessi = 0; break; end if j > to break; end if bino(j) > bini(j) olessi = 0; break; end if bino(j) < bini(j) break; end end end % # % ############################################ % same_ % determines whether all(bino == bini) % ############################################ function [olessi] = same_(bino_,bini_) bino = io10_(bino_); bini = io10_(bini_); olessi = same(bino,bini); end % # % ################################ % same % ################################ function [oksam] = same(bino,bini) % works char as well to = length(bino); ti = length(bini); oksam = 0; if to == ti if all(bino == bini) oksam = 1; end end end % # % ################################# % ischf % ################################# function [okchf,z,l,r] = ischf(wrd); % ================================= if any(wrd == 0) wrd = 2*wrd-1; end % ================================= okchf = 0; z = 0; l = 0; r = 1; i = 1; o = length(wrd); if o == 0 okchf = 0; r = 1; return; end % ############### noi = negi(wrd,i); nio = negi(noi,o); % ############### rdw = wrd; for j = 0:o % ######################################################### if all(rdw == nio) l = o-j; r = j; z = l+r; okchf = z; end; % ######################################################### rdw = trni(rdw); end end % # % ########################## % negi % ########################## function [neg] = negi(wrd,i); neg = wrd; neg(i) = -neg(i); end % # % ######################### % trni % ######################### function [rdw] = trni(wrd); if length(wrd) > 1; rdw = [wrd(2:end) wrd(1) ]; else rdw = wrd; end end % # % ################################## % islap % ################################## function [oklap,Z,L,R] = islap(wrd); % ================================= if any(wrd == 0) wrd = 2*wrd-1; end % ================================= okchf = 0; l = 0; r = 1; z = 0; oklap = 0; L = 0; R = 1; Z = 0; i = 1; o = length(wrd); rdw = wrd; for j = i:o [okchf,z,l,r] = ischf(wrd(i:j)); rdw = trni(rdw); % ########################################## if (all(rdw == wrd) & okchf) oklap = j; end; % ########################################## Z = oklap; L = max(l,L); R = max(r,R); end end % # % ::::::::::::::::::::::::::::::::::::::::::::::::::: % www.chf.nu Current History of the Future 19-08-2020 % :::::::::::::::::::::::::::::::::::::::::::::::::::
ans = 'ΜΕΤΑΜΟΡΦΟΣΙΣ' all_in_order = 1×5 logical array 1 1 1 1 1