Excel+VBA圖靈完備:Rule 110

本篇文章使用VBA實現Rule 110以證明Excel的圖靈完備性,關於什麼是Rule 110請看Rule 110 From Wikipedia

直接上代碼:

Sub Turing_complete()nnDim dnSet d = CreateObject("Scripting.Dictionary")nd.Item("111") = 0nd.Item("110") = 1nd.Item("101") = 1nd.Item("100") = 0nd.Item("011") = 1nd.Item("010") = 1nd.Item("001") = 1nd.Item("000") = 0nnDim cellArr(1 To 100, 1 To 50) As IntegernSheet1.UsedRange.ClearnnFor i = 1 To UBound(cellArr)n For j = 1 To UBound(cellArr, 2)n If i = 1 Thenn Randomize (Timer)n cellArr(1, j) = Round(Rnd)n Elsen Dim temp$n temp = ""n On Error Resume Nextn If j = 1 Then temp = "0"n temp = temp & cellArr(i - 1, j - 1)n temp = temp & cellArr(i - 1, j)n temp = temp & cellArr(i - 1, j + 1)n If j = UBound(cellArr, 2) Then temp = temp & "0"n n cellArr(i, j) = d.Item(temp)n End Ifn n If cellArr(i, j) = 1 Thenn Sheet1.Cells(i, j).Interior.Color = vbBlackn Elsen Sheet1.Cells(i, j).Interior.Color = vbWhiten End Ifn Sheet1.Range(Cells(1, 1), Cells(i, 50)) = cellArrn Next jnNext innEnd Subn

效果截圖:

以上。

推薦閱讀:

TAG:Excel编程 | VBA | 图灵AlanTuring |