Chinaunix首页 | 论坛 | 博客
  • 博客访问: 44325
  • 博文数量: 20
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 230
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-21 22:20
文章分类
文章存档

2011年(1)

2009年(19)

我的朋友
最近访客

分类:

2009-02-08 19:24:13

提取华容道场景的主像和镜像
 
   

    华容道游戏的场景,除了左右对称的场景,其余可以把它一分为二,一部分我把它称为正像场景,另一部分我把它称为镜像场景。左右对称的场景正像等于镜像。

    其实主像与镜像是相对的。为了便于定义,我把两个相对应的像,编号小的称为正像,编号大的称为镜像

    正像与镜像在通关方法上左右互换,最佳步数完全一致,因此研究华容道,可以放弃镜像场景,仅仅研究正像场景和对称场景就可以了。看来分离正像和镜像还是必要的。

 

    下面是分离正像和镜像的 VB 程序,以二横为例


Private Sub Form_Click()
 Dim d As String, d1 As String
 Dim i As Integer, a As Long, s As Long

 Dim t As Currency

 

 t = Timer

 a = 0 

 Open App.Path & "\二横场景按序排列101010.dat" For Random As #1 Len = 26

  For s = 1 To 101010

   Get #1, s, d '......................主像场景
   If Left$(d, 1) <> "4" Then 
    d1 = ""
    For i = 0 To 4 '...................镜像场景
     d1 = d1 & Mid$(d, i * 4 + 4, 1) & Mid$(d, i * 4 + 3, 1) & Mid$(d, i * 4 + 2, 1) & Mid$(d, i * 4 + 1, 1)
    Next i
   
    If d <= d1 Then '...................主像 <= 镜像
     a = a + 1

     Open App.Path & "\二横正像按序排列.dat" For Random As #2 Len = 26
      Put #2, a, d
     Close #2
    End If
   End If

  Next s

 Close #1

 Text1.Text = Timer - t & "\" & a

End Sub

此程序效率极高,不包括记录时间仅1.5秒。

    关于华容道的起始部分到这里告一段落,接下来就是“用程序解华容道游戏”了,敬请关注。

未完待续

                                  自然牛 2009-2-8

阅读(588) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~