找回密码
 注册
Simdroid-非首页
查看: 161|回复: 3

[原创]一个16世纪早期难题的程序演示

[复制链接]
发表于 2010-8-8 17:12:11 | 显示全部楼层 |阅读模式 来自 北京交通大学
一个16世纪早期的难题,在一个3*3的棋盘上,两只黑骑士和两只红骑士放在四个角上,要求用最小的部数让黑红骑士交换位置,骑士的移动方法和国际象棋中的走法是一样的。
当然这个问题已经解决,我只是用程序演示一个移动的过程,程序如下:

  1. clear;clc;close all
  2. figure('menubar','none','numbertitle','off','name','16世纪的一个难题');
  3. N=4;
  4. a=linspace(0,1,N);
  5. b=zeros(1,length(a));
  6. c=fliplr(a);
  7. x=[a b;a b+1];
  8. y=[b a;b+1 a];
  9. plot(x+y*1i);
  10. axis([-0.1 1.1 -0.1 1.1]);
  11. [xor,yor]=meshgrid(mean([a(1:end-1);a(2:end)]));
  12. seq=[7 4 1 8 5 2 9 6 3];
  13. coor=sortrows([seq',xor(:),yor(:)],1);
  14. rhorse=[1 3];
  15. ghorse=[7 9];
  16. num=size(coor,1);
  17. axis equal off
  18. for i=1:9
  19.     if ismember(i,rhorse)
  20.         h(i)=text(coor(i,2),coor(i,3),'马','fontsize',38,'fontname','隶书',...
  21.             'HorizontalAlignment','center','BackgroundColor',[.7 .9 .7],'color','r');
  22.     elseif ismember(i,ghorse)
  23.                 h(i)=text(coor(i,2),coor(i,3),'马','fontsize',38,'fontname','隶书',...
  24.             'HorizontalAlignment','center','BackgroundColor',[.7 .9 .7],'color','k');
  25.     else
  26.           h(i)=text(coor(i,2),coor(i,3),' ','fontsize',38,'fontname','隶书',...
  27.             'HorizontalAlignment','center','BackgroundColor',[.7 .9 .7],'color','g');
  28.     end
  29. end
  30. pp=title('N=0');t=1;
  31. howg=[1 6 7 2 9 4 3 8];
  32. howgtr=howg(hankel(1:numel(howg),0:numel(howg)-1));
  33. matr=howgtr(1:5,1:2:end);pause(3);
  34. for i=1:N
  35.     for j=1:N
  36.         set(h(matr(i+1,j)),'string','马','fontsize',38,'fontname','隶书',...
  37.             'HorizontalAlignment','center','BackgroundColor',[.7 .9 .7],'color',get(h(matr(i,j)),'color'));
  38.         set(h(matr(i,j)),'string',' ');
  39.         set(pp,'string',sprintf('n=%d',t));
  40.         t=t+1;
  41.         pause(1);
  42.     end
  43. end
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

发表于 2010-8-9 08:15:04 | 显示全部楼层 来自 新疆乌鲁木齐
Simdroid开发平台
q是学数学的吗?发现你写的程序思路比较特别,有点儿偏算法的意思。
回复 不支持

使用道具 举报

 楼主| 发表于 2010-8-9 19:50:51 | 显示全部楼层 来自 河北廊坊
2# bainhome
恩,我本科是学数学的
回复 不支持

使用道具 举报

发表于 2010-8-9 20:42:45 | 显示全部楼层 来自 山西太原
呵呵,不错,赞一个!

评分

1

查看全部评分

回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-6 19:28 , Processed in 0.041195 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表