门户网站有哪几个,wordpress运行慢,网站跳转怎么做360,编程猫官网三阶魔方自动求解及动态可视化matlab代码思路与步骤三阶魔方有6个面#xff0c;每个面有333\times333小块#xff0c;用一个6336\times3\times3633的矩阵来保存魔方的状态#xff1b;定义412种魔方旋转行为#xff1a;整体旋转(左右上下共4种方式AaCc)#xff0c;侧面(6个…三阶魔方自动求解及动态可视化matlab代码思路与步骤三阶魔方有6个面每个面有3×33\times33×3小块用一个6×3×36\times3\times36×3×3的矩阵来保存魔方的状态定义412种魔方旋转行为整体旋转(左右上下共4种方式AaCc)侧面(6个侧面顺逆时针旋转共12种方式LlRrUuDdFfBb)旋转可视化界面方便调试(三维小面作图fill3创建6×3×3546\times3\times3546×3×354个小面对象对象成员属性包括颜色和4个三维坐标点定义了全局函数对小面进行绕轴旋转操作如此可以可视化调试确保程序是按人想法运行)旋转行为改变矩阵的状态矩阵定义随机打乱和逆序恢复的函数测试确保人为给出旋转公式魔方能正确旋转编写按公式恢复魔方的函数记录恢复过程的旋转过程公式(取一个魔方一边拧一边编程考虑所有情况)1)顶层拼十字简化为4次恢复顶面棱中小块(不破坏已恢复的结果)2)顶层拼四角简化为4次恢复顶面的角小块(不破坏已恢复的结果)第一层恢复完成剩下可按公式恢复魔方把第一层置底3)二层拼棱角简化为4次恢复二层棱角小块(不破坏已恢复的结果)第二层恢复完成4)按公式顶层拼十字5)按公式顶层四角对应恢复6)按公式顶面同色恢复7)按公式顶面棱边恢复第三层恢复完成编写一个公式简化的函数如消除相邻正反操作、消除4次相同操作、3次同向旋转替换为一次反向旋转操作、不相关跳跃旋转整合等未能考虑所有可化简的情况还未能化简为最少旋转步数公式。时间精力有限待以后有新思路的时候再玩。总结很多指令都是现查现用的编程模块化过程分解编程周期较长编完以后整体思路清晰但单独模块缺少注释不好看懂特别是手动旋转对应编程部分时间久了容易忘记。这是2019年1月编的代码(忘记了具体参考过哪些代码了)现在整理下思路这里三阶魔方恢复算法是普通的按公式还原算法主要难点在于判断魔方的状态我编程的过程中是实际拿着个魔方一边转一边进行状态观察遍历方法比较笨可以实现自动魔方还原但是还原步骤较多程序中通过增加一些函数进行了步骤的简化function TurnManusimplifyTurnManu(TurnManu)但是简化结果并不彻底需要更高级的简化函数或高级的魔方恢复算法。思考如果能够用快速相机记录并识别魔方高手旋转魔方的方法通过机器学习、聚类、迁移等思想改善算法数据即算法如果没有如果给定初始的算法能不能让算法自己通过运行自学习更新算法或者产生模拟高级的数据用于机器学习感觉这会不会是一个很好的案例数据为王算法为王Alpha Zero从0开始有人实现了吗参考链接没作记录忘了对参考过代码的博主表示歉意如有发现雷同的地方欢迎提醒以作补充。源代码%% 主调函数% ---定义魔方的初始状态face0ones(3,3);MFstate{face0;face01;face02;face03;face04;face05};% % MFstatefaceTurn(MFstate,r);% % MFstatesideTurn(MFstate,r);[MFstate,TurnManu]disorganize(MFstate,10);% DispTurnManu(TurnManu,1);figure;pltMoFang(MFstate);set(gcf,color,k);axis square;axis off;view(160,30)TurnManusimplifyTurnManu(TurnManu,0);TurnManu0DispTurnManu(TurnManu);disp({魔方打乱操作;TurnManu0.})% MFstatedisorganize(MFstate,TurnManu);[MFstate1,TurnManu1]InvRecover(MFstate,TurnManu);TurnManu0DispTurnManu(TurnManu1);disp({魔方逆序恢复操作;TurnManu0.})figure;pltMoFang(MFstate1);set(gcf,color,k);axis square;axis off;view(160,30)[MFstate,TurnManu2]formulaRecover(MFstate);TurnManu2simplifyTurnManu(TurnManu2,0);TurnManu0DispTurnManu(TurnManu2);disp({魔方公式恢复操作;TurnManu0.})figure;pltMoFang(MFstate);set(gcf,color,k);axis square;axis off;view(160,30)-----------------------------------------------------------------------------------------------------------------------------------%% 动画显示face0ones(3,3);MFstate{face0;face01;face02;face03;face04;face05};limL-4;limU1;close all;figfigure; fig.Color[1,1,1]; fig.Position[400 200 550 600];fig.ToolBarnone; fig.MenuBarnone; fig.NumberTitleoff; fig.Name魔方;hdspltMoFang(MFstate);set(gcf,color,k);axis([limL,limU,limL,limU,limL,limU]);axis off;view(160,30);pause(4);TurnManu_all[TurnManu;TurnManu2];for n1:length(TurnManu_all)pause(0.00001);turnAroundP(hds,TurnManu_all(n),10,0.01,limL,limU);MFstatedisorganize(MFstate,TurnManu_all(n));hold off;hdspltMoFang(MFstate);axis([limL,limU,limL,limU,limL,limU]);axis off;view(160,30);end%% 部分子函数编写%% 公式恢复魔方function [MFstate,TurnManu]formulaRecover(MFstate)TurnManu[];%---第一层恢复%将顶层拼十字numzeros(1,4);for n1:4[MFstate,TnMn,num]recoverF10(MFstate,num);TurnManu[TurnManu;TnMn];if sum(num)4;break;endMFstatefaceTurn(MFstate,r);numcircshift(num,-1);TurnManu[TurnManu;a];endTurnManu[TurnManu;(- ).];%将顶层4个角恢复完成第一层恢复numzeros(1,4);for n1:4[MFstate,TnMn,num]recoverF4(MFstate,num);TurnManu[TurnManu;TnMn];if sum(num)4;break;endMFstatefaceTurn(MFstate,r);numcircshift(num,-1);TurnManu[TurnManu;a];endTurnManu[TurnManu;(- ).];%第二层恢复 4个角恢复,完成第二层恢复[MFstate,TnMn]disorganize(MFstate,CC);TurnManu[TurnManu;TnMn];numzeros(1,4);for n1:4[MFstate,TnMn,num]recover2F4(MFstate,num);TurnManu[TurnManu;TnMn];if sum(num)4;break;endMFstatefaceTurn(MFstate,l);numcircshift(num,-1);TurnManu[TurnManu;A];endTurnManu[TurnManu;(- ).];%第三层公式恢复%---步骤1顶上拼十字[MFstate,TnMn]recover3F10(MFstate);TurnManu[TurnManu;TnMn];TurnManu[TurnManu;(- ).];%---步骤2四个角对应上[MFstate,TnMn]recover3F4(MFstate);TurnManu[TurnManu;TnMn];TurnManu[TurnManu;(- ).];%---步骤3顶面恢复[MFstate,TnMn]recover3Face(MFstate);TurnManu[TurnManu;TnMn];while isempty(TnMn)0[MFstate,TnMn]recover3Face(MFstate);TurnManu[TurnManu;TnMn];endTurnManu[TurnManu;(- ).];%---步骤4顶棱中恢复[MFstate,TnMn]recover3FArris(MFstate);TurnManu[TurnManu;TnMn];while isempty(TnMn)0[MFstate,TnMn]recover3FArris(MFstate);TurnManu[TurnManu;TnMn];endend% ---定义魔方整体旋转行为---改变朝前面% r,l,u,d 共4种行为function MFstatefaceTurn(MFstate,manu)if manurMFstate{MFstate{5};rot90(MFstate{3},2);MFstate{1};fliplr(MFstate{4}.);rot90(MFstate{2},2);fliplr(MFstate{6}).};elseif manulMFstate{MFstate{3};rot90(MFstate{5},2);rot90(MFstate{2},2);fliplr(MFstate{4}).;MFstate{1};fliplr(MFstate{6}.)};elseif manuuMFstate{MFstate{4};MFstate{6};fliplr(MFstate{3}.);MFstate{2};fliplr(MFstate{5}).;MFstate{1}};elseif manudMFstate{MFstate{6};MFstate{4};fliplr(MFstate{3}).;MFstate{1};fliplr(MFstate{5}.);MFstate{2}};elsereturn;endend----------------------------------------------------------------------------------------------------------------------------------------------------------% ---定义一个旋转过程的函数function turnAroundP(hds,TurnManu,stepNum,tSec,limL,limU)if nargin4limL-3;limU0;endif TurnManua[az,el]view();azSteplinspace(0,-90,stepNum);for n1:stepNumview(azazStep(n),el);pause(tSec);endelseif TurnManuA[az,el]view();azSteplinspace(0,90,stepNum);for n1:stepNumview(azazStep(n),el);pause(tSec);endelseif TurnManuc || TurnManuCazStep90/(stepNum1);if TurnManuCazStep-azStep;enddirect[1,0,0];origin-[1.5,1.5,1.5];for n1:stepNumfor k1:6for kk1:3for kkk1:3hhds{k}{kk,kkk};rotate(h,direct,azStep,origin);endendendaxis([limL,limU,limL,limU,limL,limU]);axis off;view(160,30);pause(tSec);endelseif TurnManur || TurnManuRazStep90/(stepNum1);if TurnManuRazStep-azStep;enddirect[1,0,0];origin-[1.5,1.5,1.5];for n1:stepNumfor k3for kk1:3for kkk1:3hhds{k}{kk,kkk};rotate(h,direct,azStep,origin);endendendfor k[1,2,4,6]for kk1:3for kkk3hhds{k}{kk,kkk};rotate(h,direct,azStep,origin);endendendaxis([limL,limU,limL,limU,limL,limU]);axis off;view(160,30);pause(tSec);endelseif TurnManul || TurnManuLazStep-90/(stepNum1);if TurnManuLazStep-azStep;enddirect[1,0,0];origin-[1.5,1.5,1.5];for n1:stepNumfor k5for kk1:3for kkk1:3hhds{k}{kk,kkk};rotate(h,direct,azStep,origin);endendendfor k[1,2,4,6]for kk1:3for kkk1hhds{k}{kk,kkk};rotate(h,direct,azStep,origin);endendendaxis([limL,limU,limL,limU,limL,limU]);axis off;view(160,30);pause(tSec);endelseif TurnManuu || TurnManuUazStep-90/(stepNum1);if TurnManuUazStep-azStep;enddirect[0,0,1];origin-[1.5,1.5,1.5];for n1:stepNumfor k6for kk1:3for kkk1:3hhds{k}{kk,kkk};rotate(h,direct,azStep,origin);endendendfor k[1,3,5]for kk1for kkk1:3hhds{k}{kk,kkk};rotate(h,direct,azStep,origin);endendendfor k2for kk3for kkk1:3hhds{k}{kk,kkk};rotate(h,direct,azStep,origin);endendendaxis([limL,limU,limL,limU,limL,limU]);axis off;view(160,30);pause(tSec);endelseif TurnManud || TurnManuDazStep90/(stepNum1);if TurnManuDazStep-azStep;enddirect[0,0,1];origin-[1.5,1.5,1.5];for n1:stepNumfor k4for kk1:3for kkk1:3hhds{k}{kk,kkk};rotate(h,direct,azStep,origin);endendendfor k[1,3,5]for kk3for kkk1:3hhds{k}{kk,kkk};rotate(h,direct,azStep,origin);endendendfor k2for kk1for kkk1:3hhds{k}{kk,kkk};rotate(h,direct,azStep,origin);endendendaxis([limL,limU,limL,limU,limL,limU]);axis off;view(160,30);pause(tSec);endelseif TurnManuf || TurnManuFazStep-90/(stepNum1);if TurnManuFazStep-azStep;enddirect[0,1,0];origin-[1.5,1.5,1.5];for n1:stepNumfor k1for kk1:3for kkk1:3hhds{k}{kk,kkk};rotate(h,direct,azStep,origin);endendendfor kk1:3hhds{3}{kk,1};rotate(h,direct,azStep,origin);endfor kk1:3hhds{5}{kk,3};rotate(h,direct,azStep,origin);endfor kkk1:3hhds{4}{1,kkk};rotate(h,direct,azStep,origin);endfor kkk1:3hhds{6}{3,kkk};rotate(h,direct,azStep,origin);endaxis([limL,limU,limL,limU,limL,limU]);axis off;view(160,30);pause(tSec);endelseif TurnManub || TurnManuBazStep90/(stepNum1);if TurnManuBazStep-azStep;enddirect[0,1,0];origin-[1.5,1.5,1.5];for n1:stepNumfor k2for kk1:3for kkk1:3hhds{k}{kk,kkk};rotate(h,direct,azStep,origin);endendendfor kk1:3hhds{3}{kk,3};rotate(h,direct,azStep,origin);endfor kk1:3hhds{5}{kk,1};rotate(h,direct,azStep,origin);endfor kkk1:3hhds{4}{3,kkk};rotate(h,direct,azStep,origin);endfor kkk1:3hhds{6}{1,kkk};rotate(h,direct,azStep,origin);endaxis([limL,limU,limL,limU,limL,limU]);axis off;view(160,30);pause(tSec);endendend% ---定义魔方整体旋转行为---改变朝前面% r,l,u,d 共4种行为function MFstatefaceTurn(MFstate,manu)if manurMFstate{MFstate{5};rot90(MFstate{3},2);MFstate{1};fliplr(MFstate{4}.);rot90(MFstate{2},2);fliplr(MFstate{6}).};elseif manulMFstate{MFstate{3};rot90(MFstate{5},2);rot90(MFstate{2},2);fliplr(MFstate{4}).;MFstate{1};fliplr(MFstate{6}.)};elseif manuuMFstate{MFstate{4};MFstate{6};fliplr(MFstate{3}.);MFstate{2};fliplr(MFstate{5}).;MFstate{1}};elseif manudMFstate{MFstate{6};MFstate{4};fliplr(MFstate{3}).;MFstate{1};fliplr(MFstate{5}.);MFstate{2}};elsereturn;endend% ---定义魔方侧边旋转行为(顺时针fliplr(~.) or rot90(~,-1)逆时针fliplr(~). or rot90(~,1))% rR,lL,uU,dD,fF,bB共12种行为(可进一步定义连续2步行为R2,L2,U2,D2,F2,B2)function MFstatesideTurn(MFstate,manu)if manurMFstate{3}fliplr(MFstate{3}.);tmpMFstate{1}(:,3);MFstate{1}(:,3)MFstate{4}(:,3);MFstate{4}(:,3)MFstate{2}(:,3);MFstate{2}(:,3)MFstate{6}(:,3);MFstate{6}(:,3)tmp;elseif manuRMFstate{3}fliplr(MFstate{3}).;tmpMFstate{1}(:,3);MFstate{1}(:,3)MFstate{6}(:,3);MFstate{6}(:,3)MFstate{2}(:,3);MFstate{2}(:,3)MFstate{4}(:,3);MFstate{4}(:,3)tmp;elseif manulMFstate{5}fliplr(MFstate{5}.);tmpMFstate{1}(:,1);MFstate{1}(:,1)MFstate{6}(:,1);MFstate{6}(:,1)MFstate{2}(:,1);MFstate{2}(:,1)MFstate{4}(:,1);MFstate{4}(:,1)tmp;elseif manuLMFstate{5}fliplr(MFstate{5}).;tmpMFstate{1}(:,1);MFstate{1}(:,1)MFstate{4}(:,1);MFstate{4}(:,1)MFstate{2}(:,1);MFstate{2}(:,1)MFstate{6}(:,1);MFstate{6}(:,1)tmp;elseif manuuMFstate{6}fliplr(MFstate{6}.);tmpMFstate{1}(1,:);MFstate{1}(1,:)MFstate{3}(1,:);MFstate{3}(1,:)fliplr(MFstate{2}(3,:));MFstate{2}(3,:)fliplr(MFstate{5}(1,:));MFstate{5}(1,:)tmp;elseif manuUMFstate{6}fliplr(MFstate{6}).;tmpMFstate{1}(1,:);MFstate{1}(1,:)MFstate{5}(1,:);MFstate{5}(1,:)fliplr(MFstate{2}(3,:));MFstate{2}(3,:)fliplr(MFstate{3}(1,:));MFstate{3}(1,:)tmp;elseif manudMFstate{4}fliplr(MFstate{4}.);tmpMFstate{1}(3,:);MFstate{1}(3,:)MFstate{5}(3,:);MFstate{5}(3,:)fliplr(MFstate{2}(1,:));MFstate{2}(1,:)fliplr(MFstate{3}(3,:));MFstate{3}(3,:)tmp;elseif manuDMFstate{4}fliplr(MFstate{4}).;tmpMFstate{1}(3,:);MFstate{1}(3,:)MFstate{3}(3,:);MFstate{3}(3,:)fliplr(MFstate{2}(1,:));MFstate{2}(1,:)fliplr(MFstate{5}(3,:));MFstate{5}(3,:)tmp;elseif manufMFstate{1}fliplr(MFstate{1}.);tmpMFstate{6}(3,:);MFstate{6}(3,:)fliplr(MFstate{5}(:,3).);MFstate{5}(:,3)MFstate{4}(1,:).;MFstate{4}(1,:)fliplr(MFstate{3}(:,1).);MFstate{3}(:,1)tmp.;elseif manuFMFstate{1}fliplr(MFstate{1}).;tmpMFstate{6}(3,:);MFstate{6}(3,:)MFstate{3}(:,1).;MFstate{3}(:,1)fliplr(MFstate{4}(1,:)).;MFstate{4}(1,:)MFstate{5}(:,3).;MFstate{5}(:,3)fliplr(tmp).;elseif manubMFstate{2}fliplr(MFstate{2}.);tmpMFstate{6}(1,:);MFstate{6}(1,:)MFstate{3}(:,3).;MFstate{3}(:,3)fliplr(MFstate{4}(3,:)).;MFstate{4}(3,:)MFstate{5}(:,1).;MFstate{5}(:,1)fliplr(tmp).;elseif manuBMFstate{2}fliplr(MFstate{2}).;tmpMFstate{6}(1,:);MFstate{6}(1,:)fliplr(MFstate{5}(:,1).);MFstate{5}(:,1)MFstate{4}(3,:).;MFstate{4}(3,:)fliplr(MFstate{3}(:,3).);MFstate{3}(:,3)tmp.;elsereturn;endend% ---作魔方正方体图形function hdspltMoFang(MFstate)for n1:6hpltMoFangface(MFstate{n},n);hds{n}h;endendfunction hdspltMoFangface(A,Fnum)if Fnum1xrepmat(0:1:3,4,1);yzeros(4);zrepmat(0:1:3,4,1).;elseif Fnum2xrepmat(0:1:3,4,1);y3*ones(4);zrepmat(3:-1:0,4,1).;elseif Fnum3x3*ones(4);yrepmat(0:1:3,4,1);zrepmat(0:1:3,4,1).;elseif Fnum4xrepmat(0:1:3,4,1);yrepmat(0:1:3,4,1).;z3*ones(4);elseif Fnum5xzeros(4);yrepmat(3:-1:0,4,1);zrepmat(0:1:3,4,1).;elseif Fnum6xrepmat(0:1:3,4,1);yrepmat(3:-1:0,4,1).;zzeros(4);endfor n1:3for nn1:3X-[x(n,nn),x(n1,nn),x(n1,nn1),x(n,nn1)];Y-[y(n,nn),y(n1,nn),y(n1,nn1),y(n,nn1)];Z-[z(n,nn),z(n1,nn),z(n1,nn1),z(n,nn1)];if A(n,nn)1C[1,0,0];elseif A(n,nn)2C[1,0,1];elseif A(n,nn)3C[1,1,0];elseif A(n,nn)4C[0,1,0];elseif A(n,nn)5C[1,1,1];elseif A(n,nn)6C[0,0,1];endhds{n,nn}fill3(X,Y,Z,C);hold on;endendend%% 随机打乱魔方的函数function [MFstate,TurnManu]disorganize(MFstate,TurnNum)% % r,l,u,d 共4种行为---更名a,A,d,D% MFstatefaceTurn(MFstate,N);% % rR,lL,uU,dD,fF,bB共12种行为% MFstatesideTurn(MFstate,N);if ischar(TurnNum)1TurnManuTurnNum;TurnNumlength(TurnManu);if size(TurnManu,2)1TurnManuTurnManu.;endif contains(TurnManu.,2)1TurnManuDispTurnManu(TurnManu);endelseTurnManuchar(TurnNum,1);flagStr[a,A,c,C,r,R,l,L,u,U,d,D,f,F,b,B];for n1:TurnNumnumrandperm(16,1);TurnManu(n)flagStr(num);endendfor n1:TurnNumflagTurnManu(n);switch flagcase aMFstatefaceTurn(MFstate,r);case AMFstatefaceTurn(MFstate,l);case cMFstatefaceTurn(MFstate,u);case CMFstatefaceTurn(MFstate,d);case rMFstatesideTurn(MFstate,r);case RMFstatesideTurn(MFstate,R);case lMFstatesideTurn(MFstate,l);case LMFstatesideTurn(MFstate,L);case uMFstatesideTurn(MFstate,u);case UMFstatesideTurn(MFstate,U);case dMFstatesideTurn(MFstate,d);case DMFstatesideTurn(MFstate,D);case fMFstatesideTurn(MFstate,f);case FMFstatesideTurn(MFstate,F);case bMFstatesideTurn(MFstate,b);case BMFstatesideTurn(MFstate,B);endendend%% 逆序恢复魔方function [MFstate,TurnManu]InvRecover(MFstate,TurnManu)% % r,l,u,d 共4种行为---更名a,A,c,C% MFstatefaceTurn(MFstate,N);% % rR,lL,uU,dD,fF,bB共12种行为% MFstatesideTurn(MFstate,N);TurnManuflipud(TurnManu);for n1:length(TurnManu)flagTurnManu(n);switch flagcase aMFstatefaceTurn(MFstate,l);TurnManu(n)A;case AMFstatefaceTurn(MFstate,r);TurnManu(n)a;case cMFstatefaceTurn(MFstate,d);TurnManu(n)C;case CMFstatefaceTurn(MFstate,u);TurnManu(n)c;case rMFstatesideTurn(MFstate,R);TurnManu(n)R;case RMFstatesideTurn(MFstate,r);TurnManu(n)r;case lMFstatesideTurn(MFstate,L);TurnManu(n)L;case LMFstatesideTurn(MFstate,l);TurnManu(n)l;case uMFstatesideTurn(MFstate,U);TurnManu(n)U;case UMFstatesideTurn(MFstate,u);TurnManu(n)u;case dMFstatesideTurn(MFstate,D);TurnManu(n)D;case DMFstatesideTurn(MFstate,d);TurnManu(n)d;case fMFstatesideTurn(MFstate,F);TurnManu(n)F;case FMFstatesideTurn(MFstate,f);TurnManu(n)f;case bMFstatesideTurn(MFstate,B);TurnManu(n)B;case BMFstatesideTurn(MFstate,b);TurnManu(n)b;endendend% %% 简化旋转魔方操作,只取有效操作% function TurnManusimplifyTurnManu(TurnManu)% N0length(TurnManu);%% % ---消除正反操作% Nlength(TurnManu);% nN;% while(n1)% if (TurnManu(n)a TurnManu(n-1)A ) || (TurnManu(n)A TurnManu(n-1)a ) || ...% (TurnManu(n)c TurnManu(n-1)C ) || (TurnManu(n)C TurnManu(n-1)c ) || ...% (TurnManu(n)r TurnManu(n-1)R ) || (TurnManu(n)R TurnManu(n-1)r ) ||...% (TurnManu(n)l TurnManu(n-1)L ) || (TurnManu(n)L TurnManu(n-1)l ) ||...% (TurnManu(n)u TurnManu(n-1)U ) || (TurnManu(n)U TurnManu(n-1)u ) ||...% (TurnManu(n)d TurnManu(n-1)D ) || (TurnManu(n)D TurnManu(n-1)d ) ||...% (TurnManu(n)f TurnManu(n-1)F ) || (TurnManu(n)F TurnManu(n-1)f ) ||...% (TurnManu(n)b TurnManu(n-1)B ) || (TurnManu(n)B TurnManu(n-1)b )%% TurnManu(n-1:n)[];% nn-1;% end% nn-1;% end%%% % ---消除4次相同操作% Nlength(TurnManu);% nN;% while(n3)% if (TurnManu(n)TurnManu(n-1)) ...% (TurnManu(n-1)TurnManu(n-2)) ...% (TurnManu(n-2)TurnManu(n-3))%% TurnManu(n-3:n)[];% nn-3;% end% nn-1;% end%% % ---3次相同操作替换为一次反向操作% Nlength(TurnManu);% nN;% while(n2)% if (TurnManu(n)TurnManu(n-1)) ...% (TurnManu(n-1)TurnManu(n-2))%% if TurnManu(n-2)90% TurnManu(n-2)TurnManu(n-2)-32;% else% TurnManu(n-2)TurnManu(n-2)32;% end%% TurnManu(n-1:n)[];% nn-1;%% end% nn-1;% end%% while(length(TurnManu)% TurnManusimplifyTurnManu(TurnManu);% N0length(TurnManu);% end%% end%% 简化显示旋转魔方操作将重复2次操作显示为操作2function TurnManuDispTurnManu(TurnManu,dispFlag)if nargin1dispFlag0;endif size(TurnManu,2)1TurnManuTurnManu.;endif contains(TurnManu.,2)if dispFlag1disp([Before: ,TurnManu.])endNlength(TurnManu);nN;while(n1)if TurnManu(n)2TurnManu(n)TurnManu(n-1);endnn-1;endif dispFlag1disp([After: ,TurnManu.])endelseif dispFlag1disp([Before: ,TurnManu.])endNlength(TurnManu);nN;while(n1)if TurnManu(n)TurnManu(n-1)num2;while n2 TurnManu(n)TurnManu(n-2)numnum1;TurnManu(n)[];nn-1;endTurnManu(n)num2str(num);endnn-1;endif dispFlag1disp([After: ,TurnManu.])endendend%% 将顶层4个角恢复function [MFstate,TurnManu,num]recoverF4(MFstate,num)TurnManu[];%---第一层恢复%记录面的位置obj1MFstate{1}(2,2);obj2MFstate{2}(2,2);obj3MFstate{3}(2,2);obj4MFstate{4}(2,2);obj5MFstate{5}(2,2);obj6MFstate{6}(2,2);if MFstate{6}(1,1)obj6 MFstate{2}(3,1)obj2 MFstate{5}(1,1)obj5num(1)1; endif MFstate{6}(1,3)obj6 MFstate{2}(3,3)obj2 MFstate{3}(1,3)obj3num(2)1; endif MFstate{6}(3,3)obj6 MFstate{1}(1,3)obj1 MFstate{3}(1,1)obj3num(3)1; endif MFstate{6}(3,1)obj6 MFstate{1}(1,1)obj1 MFstate{5}(1,3)obj5num(4)1; end%---4角拼完if sum(num)4; return;endif num(1)0if MFstate{2}(1,1)obj2 MFstate{5}(3,1)obj6 MFstate{4}(3,1)obj5[MFstate,TnMn]disorganize(MFstate,BlbL);TurnManu[TurnManu;TnMn];elseif MFstate{2}(1,1)obj6 MFstate{5}(3,1)obj5 MFstate{4}(3,1)obj2[MFstate,TnMn]disorganize(MFstate,lBLb);TurnManu[TurnManu;TnMn];elseif MFstate{2}(1,1)obj5 MFstate{5}(3,1)obj2 MFstate{4}(3,1)obj6[MFstate,TnMn]disorganize(MFstate,Ld2ldBlbL);TurnManu[TurnManu;TnMn];elseif MFstate{3}(3,3)obj2 MFstate{2}(1,3)obj6 MFstate{4}(3,3)obj5[MFstate,TnMn]disorganize(MFstate,dBlbL);TurnManu[TurnManu;TnMn];elseif MFstate{3}(3,3)obj6 MFstate{2}(1,3)obj5 MFstate{4}(3,3)obj2[MFstate,TnMn]disorganize(MFstate,dlBLb);TurnManu[TurnManu;TnMn];elseif MFstate{3}(3,3)obj5 MFstate{2}(1,3)obj2 MFstate{4}(3,3)obj6[MFstate,TnMn]disorganize(MFstate,dLd2ldBlbL);TurnManu[TurnManu;TnMn];elseif MFstate{5}(3,3)obj2 MFstate{1}(3,1)obj6 MFstate{4}(1,1)obj5[MFstate,TnMn]disorganize(MFstate,DBlbL);TurnManu[TurnManu;TnMn];elseif MFstate{5}(3,3)obj6 MFstate{1}(3,1)obj5 MFstate{4}(1,1)obj2[MFstate,TnMn]disorganize(MFstate,DlBLb);TurnManu[TurnManu;TnMn];elseif MFstate{5}(3,3)obj5 MFstate{1}(3,1)obj2 MFstate{4}(1,1)obj6[MFstate,TnMn]disorganize(MFstate,DLd2ldBlbL);TurnManu[TurnManu;TnMn];elseif MFstate{1}(3,3)obj2 MFstate{3}(3,1)obj6 MFstate{4}(1,3)obj5[MFstate,TnMn]disorganize(MFstate,D2BlbL);TurnManu[TurnManu;TnMn];elseif MFstate{1}(3,3)obj6 MFstate{3}(3,1)obj5 MFstate{4}(1,3)obj2[MFstate,TnMn]disorganize(MFstate,D2lBLb);TurnManu[TurnManu;TnMn];elseif MFstate{1}(3,3)obj5 MFstate{3}(3,1)obj2 MFstate{4}(1,3)obj6[MFstate,TnMn]disorganize(MFstate,D2Ld2ldBlbL);TurnManu[TurnManu;TnMn];elseif MFstate{5}(1,1)obj2 MFstate{2}(3,1)obj6 MFstate{6}(1,1)obj5[MFstate,TnMn]disorganize(MFstate,Ldl2BLb);TurnManu[TurnManu;TnMn];elseif MFstate{5}(1,1)obj6 MFstate{2}(3,1)obj5 MFstate{6}(1,1)obj2[MFstate,TnMn]disorganize(MFstate,bDB2lbL);TurnManu[TurnManu;TnMn];elseif MFstate{3}(1,3)obj2 MFstate{6}(1,3)obj6 MFstate{2}(3,3)obj5[MFstate,TnMn]disorganize(MFstate,rdRBlbL);TurnManu[TurnManu;TnMn];elseif MFstate{3}(1,3)obj6 MFstate{6}(1,3)obj5 MFstate{2}(3,3)obj2[MFstate,TnMn]disorganize(MFstate,rdRlBLb);TurnManu[TurnManu;TnMn];elseif MFstate{3}(1,3)obj5 MFstate{6}(1,3)obj2 MFstate{2}(3,3)obj6[MFstate,TnMn]disorganize(MFstate,rDRdBlbL);TurnManu[TurnManu;TnMn];elseif MFstate{5}(1,3)obj2 MFstate{6}(3,1)obj6 MFstate{1}(1,1)obj5[MFstate,TnMn]disorganize(MFstate,lDLDlBLb);TurnManu[TurnManu;TnMn];elseif MFstate{5}(1,3)obj6 MFstate{6}(3,1)obj5 MFstate{1}(1,1)obj2[MFstate,TnMn]disorganize(MFstate,lD2LdlBLb);TurnManu[TurnManu;TnMn];elseif MFstate{5}(1,3)obj5 MFstate{6}(3,1)obj2 MFstate{1}(1,1)obj6[MFstate,TnMn]disorganize(MFstate,lDLDBlbL);TurnManu[TurnManu;TnMn];elseif MFstate{1}(1,3)obj2 MFstate{6}(3,3)obj6 MFstate{3}(1,1)obj5[MFstate,TnMn]disorganize(MFstate,RD2rlBLb);TurnManu[TurnManu;TnMn];elseif MFstate{1}(1,3)obj6 MFstate{6}(3,3)obj5 MFstate{3}(1,1)obj2[MFstate,TnMn]disorganize(MFstate,RdrD2lBLb);TurnManu[TurnManu;TnMn];elseif MFstate{1}(1,3)obj5 MFstate{6}(3,3)obj2 MFstate{3}(1,1)obj6[MFstate,TnMn]disorganize(MFstate,RD2rBlbL);TurnManu[TurnManu;TnMn];end% 恢复完成num(1)1;endend%% 公式恢复第一层的十字function [MFstate,TurnManu,num]recoverF10(MFstate,num)TurnManu[];%---第一层恢复%记录面的位置obj1MFstate{1}(2,2);obj2MFstate{2}(2,2);obj3MFstate{3}(2,2);obj4MFstate{4}(2,2);obj5MFstate{5}(2,2);obj6MFstate{6}(2,2);if sum(num)0%将顶层拼十字%---case1:顶层有同色块if MFstate{6}(1,2)obj6 MFstate{2}(3,2)obj2elseif MFstate{6}(1,2)obj6 MFstate{2}(3,2)obj3[MFstate,TnMn]disorganize(MFstate,u);TurnManu[TurnManu;TnMn];elseif MFstate{6}(1,2)obj6 MFstate{2}(3,2)obj1[MFstate,TnMn]disorganize(MFstate,u2);TurnManu[TurnManu;TnMn];elseif MFstate{6}(1,2)obj6 MFstate{2}(3,2)obj5[MFstate,TnMn]disorganize(MFstate,U);TurnManu[TurnManu;TnMn];elseif MFstate{6}(2,3)obj6 MFstate{3}(1,2)obj3elseif MFstate{6}(2,3)obj6 MFstate{3}(1,2)obj1[MFstate,TnMn]disorganize(MFstate,u);TurnManu[TurnManu;TnMn];elseif MFstate{6}(2,3)obj6 MFstate{3}(1,2)obj5[MFstate,TnMn]disorganize(MFstate,u2);TurnManu[TurnManu;TnMn];elseif MFstate{6}(2,3)obj6 MFstate{3}(1,2)obj2[MFstate,TnMn]disorganize(MFstate,U);TurnManu[TurnManu;TnMn];elseif MFstate{6}(3,2)obj6 MFstate{1}(1,2)obj1elseif MFstate{6}(3,2)obj6 MFstate{1}(1,2)obj5[MFstate,TnMn]disorganize(MFstate,u);TurnManu[TurnManu;TnMn];elseif MFstate{6}(3,2)obj6 MFstate{1}(1,2)obj2[MFstate,TnMn]disorganize(MFstate,u2);TurnManu[TurnManu;TnMn];elseif MFstate{6}(3,2)obj6 MFstate{1}(1,2)obj3[MFstate,TnMn]disorganize(MFstate,U);TurnManu[TurnManu;TnMn];elseif MFstate{6}(2,1)obj6 MFstate{5}(1,2)obj5elseif MFstate{6}(2,1)obj6 MFstate{5}(1,2)obj2[MFstate,TnMn]disorganize(MFstate,u);TurnManu[TurnManu;TnMn];elseif MFstate{6}(2,1)obj6 MFstate{5}(1,2)obj3[MFstate,TnMn]disorganize(MFstate,u2);TurnManu[TurnManu;TnMn];elseif MFstate{6}(2,1)obj6 MFstate{5}(1,2)obj1[MFstate,TnMn]disorganize(MFstate,U);TurnManu[TurnManu;TnMn];endendif MFstate{6}(1,2)obj6 MFstate{2}(3,2)obj2num(1)1; endif MFstate{6}(2,3)obj6 MFstate{3}(1,2)obj3num(2)1; endif MFstate{6}(3,2)obj6 MFstate{1}(1,2)obj1num(3)1; endif MFstate{6}(2,1)obj6 MFstate{5}(1,2)obj5num(4)1; end%---十字拼完if sum(num)4; return;endif num(1)0if MFstate{2}(1,2)obj6 MFstate{4}(3,2)obj2[MFstate,TnMn]disorganize(MFstate,dlBL);TurnManu[TurnManu;TnMn];elseif MFstate{2}(1,2)obj2 MFstate{4}(3,2)obj6[MFstate,TnMn]disorganize(MFstate,b2);TurnManu[TurnManu;TnMn];elseif MFstate{2}(2,3)obj6 MFstate{3}(2,3)obj2[MFstate,TnMn]disorganize(MFstate,rdRb2);TurnManu[TurnManu;TnMn];elseif MFstate{2}(2,3)obj2 MFstate{3}(2,3)obj6[MFstate,TnMn]disorganize(MFstate,b);TurnManu[TurnManu;TnMn];elseif MFstate{2}(2,1)obj6 MFstate{5}(2,1)obj2[MFstate,TnMn]disorganize(MFstate,LDlb2);TurnManu[TurnManu;TnMn];elseif MFstate{2}(2,1)obj2 MFstate{5}(2,1)obj6[MFstate,TnMn]disorganize(MFstate,B);TurnManu[TurnManu;TnMn];elseif MFstate{2}(3,2)obj6 MFstate{6}(1,2)obj2[MFstate,TnMn]disorganize(MFstate,bLDlb2);TurnManu[TurnManu;TnMn];elseif MFstate{3}(1,2)obj6 MFstate{6}(2,3)obj2[MFstate,TnMn]disorganize(MFstate,rb);TurnManu[TurnManu;TnMn];elseif MFstate{3}(1,2)obj2 MFstate{6}(2,3)obj6[MFstate,TnMn]disorganize(MFstate,r2db2Dr2);TurnManu[TurnManu;TnMn];elseif MFstate{1}(1,2)obj6 MFstate{6}(3,2)obj2[MFstate,TnMn]disorganize(MFstate,f2dRbr);TurnManu[TurnManu;TnMn];elseif MFstate{1}(1,2)obj2 MFstate{6}(3,2)obj6[MFstate,TnMn]disorganize(MFstate,f2d2b2);TurnManu[TurnManu;TnMn];elseif MFstate{5}(1,2)obj6 MFstate{6}(2,1)obj2[MFstate,TnMn]disorganize(MFstate,LB);TurnManu[TurnManu;TnMn];elseif MFstate{5}(1,2)obj2 MFstate{6}(2,1)obj6[MFstate,TnMn]disorganize(MFstate,L2Db2);TurnManu[TurnManu;TnMn];elseif MFstate{5}(3,2)obj2 MFstate{4}(2,1)obj6[MFstate,TnMn]disorganize(MFstate,Db2);TurnManu[TurnManu;TnMn];elseif MFstate{5}(3,2)obj6 MFstate{4}(2,1)obj2[MFstate,TnMn]disorganize(MFstate,lBL);TurnManu[TurnManu;TnMn];elseif MFstate{5}(2,3)obj6 MFstate{1}(2,1)obj2[MFstate,TnMn]disorganize(MFstate,l2BL2);TurnManu[TurnManu;TnMn];elseif MFstate{5}(2,3)obj2 MFstate{1}(2,1)obj6[MFstate,TnMn]disorganize(MFstate,lDLB2);TurnManu[TurnManu;TnMn];elseif MFstate{1}(3,2)obj2 MFstate{4}(1,2)obj6[MFstate,TnMn]disorganize(MFstate,D2B2);TurnManu[TurnManu;TnMn];elseif MFstate{1}(3,2)obj6 MFstate{4}(1,2)obj2[MFstate,TnMn]disorganize(MFstate,dRbr);TurnManu[TurnManu;TnMn];elseif MFstate{1}(2,3)obj6 MFstate{3}(2,1)obj2[MFstate,TnMn]disorganize(MFstate,RdrB2);TurnManu[TurnManu;TnMn];elseif MFstate{1}(2,3)obj2 MFstate{3}(2,1)obj6[MFstate,TnMn]disorganize(MFstate,fd2FB2);TurnManu[TurnManu;TnMn];elseif MFstate{3}(3,2)obj2 MFstate{4}(2,3)obj6[MFstate,TnMn]disorganize(MFstate,dB2);TurnManu[TurnManu;TnMn];elseif MFstate{3}(3,2)obj6 MFstate{4}(2,3)obj2[MFstate,TnMn]disorganize(MFstate,Rbr);TurnManu[TurnManu;TnMn];end% 恢复完成num(1)1;endend%% 将第二层4个角恢复function [MFstate,TurnManu,num]recover2F4(MFstate,num)TurnManu[];%---第一层恢复%记录面的位置obj1MFstate{1}(2,2);obj2MFstate{2}(2,2);obj3MFstate{3}(2,2);obj4MFstate{4}(2,2);obj5MFstate{5}(2,2);obj6MFstate{6}(2,2);if MFstate{1}(2,3)obj1 MFstate{3}(2,1)obj3num(1)1; endif MFstate{3}(2,3)obj3 MFstate{2}(2,3)obj2num(2)1; endif MFstate{2}(2,1)obj2 MFstate{5}(2,1)obj5num(3)1; endif MFstate{1}(2,1)obj1 MFstate{5}(2,3)obj5num(4)1; end%---第二层拼完if sum(num)4; return;endif num(1)0if MFstate{1}(2,3)obj3 MFstate{3}(2,1)obj1[MFstate,TnMn]disorganize(MFstate,rURUFufUrURUFuf);TurnManu[TurnManu;TnMn];elseif MFstate{3}(2,3)obj3 MFstate{2}(2,3)obj1[MFstate,TnMn]disorganize(MFstate,ArURUFufarURUFuf);TurnManu[TurnManu;TnMn];elseif MFstate{3}(2,3)obj1 MFstate{2}(2,3)obj3[MFstate,TnMn]disorganize(MFstate,ArURUFufauFufurUR);TurnManu[TurnManu;TnMn];elseif MFstate{2}(2,1)obj3 MFstate{5}(2,1)obj1[MFstate,TnMn]disorganize(MFstate,a2rURUFufA2urURUFuf);TurnManu[TurnManu;TnMn];elseif MFstate{2}(2,1)obj1 MFstate{5}(2,1)obj3[MFstate,TnMn]disorganize(MFstate,a2rURUFufA2U2FufurUR);TurnManu[TurnManu;TnMn];elseif MFstate{1}(2,1)obj1 MFstate{5}(2,3)obj3[MFstate,TnMn]disorganize(MFstate,arURUFufAu2rURUFuf);TurnManu[TurnManu;TnMn];elseif MFstate{1}(2,1)obj3 MFstate{5}(2,3)obj1[MFstate,TnMn]disorganize(MFstate,arURUFufAUFufurUR);TurnManu[TurnManu;TnMn];elseif MFstate{3}(1,2)obj3 MFstate{6}(2,3)obj1[MFstate,TnMn]disorganize(MFstate,UFufurUR);TurnManu[TurnManu;TnMn];elseif MFstate{2}(3,2)obj3 MFstate{6}(1,2)obj1[MFstate,TnMn]disorganize(MFstate,FufurUR);TurnManu[TurnManu;TnMn];elseif MFstate{5}(1,2)obj3 MFstate{6}(2,1)obj1[MFstate,TnMn]disorganize(MFstate,uFufurUR);TurnManu[TurnManu;TnMn];elseif MFstate{1}(1,2)obj3 MFstate{6}(3,2)obj1[MFstate,TnMn]disorganize(MFstate,u2FufurUR);TurnManu[TurnManu;TnMn];elseif MFstate{3}(1,2)obj1 MFstate{6}(2,3)obj3[MFstate,TnMn]disorganize(MFstate,u2rURUFuf);TurnManu[TurnManu;TnMn];elseif MFstate{2}(3,2)obj1 MFstate{6}(1,2)obj3[MFstate,TnMn]disorganize(MFstate,UrURUFuf);TurnManu[TurnManu;TnMn];elseif MFstate{5}(1,2)obj1 MFstate{6}(2,1)obj3[MFstate,TnMn]disorganize(MFstate,rURUFuf);TurnManu[TurnManu;TnMn];elseif MFstate{1}(1,2)obj1 MFstate{6}(3,2)obj3[MFstate,TnMn]disorganize(MFstate,urURUFuf);TurnManu[TurnManu;TnMn];end% 恢复完成num(1)1;endend%% 公式恢复第三层的十字function [MFstate,TurnManu]recover3F10(MFstate)TurnManu[];flg0;while flg~1flgis10ok(MFstate);if flg1break;elseif flg2[MFstate,TnMu]disorganize(MFstate,u);TurnManu[TurnManu;TnMu];elseif flg3[MFstate,TnMu]disorganize(MFstate,U);TurnManu[TurnManu;TnMu];elseif flg4[MFstate,TnMu]disorganize(MFstate,U2);TurnManu[TurnManu;TnMu];elseif flg5[MFstate,TnMu]disorganize(MFstate,u);TurnManu[TurnManu;TnMu];end[MFstate,TnMu]disorganize(MFstate,RUFufr);TurnManu[TurnManu;TnMu];endendfunction flgis10ok(MFstate)flg0;if MFstate{6}(2) MFstate{6}(5) ...MFstate{6}(4) MFstate{6}(5) ...MFstate{6}(6) MFstate{6}(5) ...MFstate{6}(8) MFstate{6}(5)flg1;elseif MFstate{6}(4)MFstate{6}(5) MFstate{6}(6)MFstate{6}(5)flg2;elseif MFstate{6}(4)MFstate{6}(5) MFstate{6}(8)MFstate{6}(5)flg3;elseif MFstate{6}(6)MFstate{6}(5) MFstate{6}(8)MFstate{6}(5)flg4;elseif MFstate{6}(2)MFstate{6}(5) MFstate{6}(6)MFstate{6}(5)flg5;endend%% 将第三层4个角位置对应上function [MFstate,TurnManu]recover3F4(MFstate)TurnManu[];flg0;while flg~1[flg,num]is4ok(MFstate);while sum(num)2[MFstate,TnMu]disorganize(MFstate,U);TurnManu[TurnManu;TnMu];[flg,num]is4ok(MFstate);endif flg1break;elseif flg2if num(4)1[MFstate,TnMu]disorganize(MFstate,a);TurnManu[TurnManu;TnMu];endelseif flg3[MFstate,TnMu]disorganize(MFstate,A);TurnManu[TurnManu;TnMu];elseif flg4[MFstate,TnMu]disorganize(MFstate,A2);TurnManu[TurnManu;TnMu];elseif flg5[MFstate,TnMu]disorganize(MFstate,a);TurnManu[TurnManu;TnMu];end[MFstate,TnMu]disorganize(MFstate,rULuRUlU2);TurnManu[TurnManu;TnMu];endendfunction [flg,num]is4ok(MFstate)numzeros(1,4);%记录面的位置o1MFstate{1}(2,2);o2MFstate{2}(2,2);o3MFstate{3}(2,2);o4MFstate{4}(2,2);o5MFstate{5}(2,2);o6MFstate{6}(2,2);A[o1,o3,o6;o3,o2,o6;o2,o5,o6;o1,o5,o6];B[MFstate{1}(1,3),MFstate{3}(1,1),MFstate{6}(3,3);...MFstate{3}(1,3),MFstate{2}(3,3),MFstate{6}(1,3);...MFstate{2}(3,1),MFstate{5}(1,1),MFstate{6}(1,1);...MFstate{5}(1,3),MFstate{1}(1,1),MFstate{6}(3,1);...];flg0;for n1:4num(n) isfit(A(n,:),B(n,:));endif sum(num)4flg1;elseif num(1)1flg2;elseif num(2)1flg3;elseif num(3)1flg4;elseif num(4)1flg5;endendfunction flgisfit(a,b)flg0;if (a(1)b(1) a(2)b(2) a(3)b(3)) ||...(a(1)b(2) a(2)b(3) a(3)b(1)) ||...(a(1)b(3) a(2)b(1) a(3)b(2)) ||...(a(1)b(1) a(2)b(3) a(3)b(2)) ||...(a(1)b(2) a(2)b(1) a(3)b(3)) ||...(a(1)b(3) a(2)b(2) a(3)b(1))flg1;endend%% 顶面恢复function [MFstate,TurnManu]recover3Face(MFstate)TurnManu[];num0;for n1:3for nn1:3if MFstate{6}(n,nn)MFstate{6}(2,2)numnum1;endendendif num9return;%顶面恢复完成elseif num5while (MFstate{2}(3,1)MFstate{6}(2,2) || MFstate{2}(3,3)MFstate{6}(2,2))[MFstate,TnMu]disorganize(MFstate,a);TurnManu[TurnManu;TnMu];end[MFstate,TnMu]disorganize(MFstate,RUrURU2rU2);TurnManu[TurnManu;TnMu];elseif num6while (MFstate{6}(1,1)~MFstate{6}(2,2) )[MFstate,TnMu]disorganize(MFstate,a);TurnManu[TurnManu;TnMu];end[MFstate,TnMu]disorganize(MFstate,RUrURU2rU2);TurnManu[TurnManu;TnMu];elseif num7Tn0;while Tn5 ((MFstate{6}(1,3)~MFstate{6}(2,2) || ...MFstate{6}(2,3)~MFstate{6}(2,2) || ...MFstate{6}(3,3)~MFstate{6}(2,2)))[MFstate,TnMu]disorganize(MFstate,a);TurnManu[TurnManu;TnMu];TnTn1;end[MFstate,TnMu]disorganize(MFstate,RUrURU2rU2);TurnManu[TurnManu;TnMu];endend%% 顶棱中恢复function [MFstate,TurnManu]recover3FArris(MFstate)TurnManu[];if MFstate{1}(1,2)MFstate{1}(2,2) MFstate{3}(1,2)MFstate{3}(2,2)return;elseif MFstate{1}(1,2)MFstate{1}(2,2)[MFstate,TnMu]disorganize(MFstate,a2);TurnManu[TurnManu;TnMu];elseif MFstate{3}(1,2)MFstate{3}(2,2)[MFstate,TnMu]disorganize(MFstate,a);TurnManu[TurnManu;TnMu];elseif MFstate{5}(1,2)MFstate{5}(2,2)[MFstate,TnMu]disorganize(MFstate,A);TurnManu[TurnManu;TnMu];endif MFstate{1}(1,2)MFstate{3}(2,2)[MFstate,TnMu]disorganize(MFstate,F2URlF2rLUF2);TurnManu[TurnManu;TnMu];else[MFstate,TnMu]disorganize(MFstate,F2uRlF2rLuF2);TurnManu[TurnManu;TnMu];endend