圖靈機之謎 $(Turing~Machine)$

T18 第一次留社考

圖靈機,這個戰爭中的產物,卻成為了今天所有計算器的始祖。這個由艾倫·圖靈提出的模型,締造了$21$世紀的電腦王國。究竟是什麼精妙的概念,夠格做所有計算器的鼻祖呢?

圖靈構造出一台假想的機器,該機器由以下幾個部分組成:

  1. 一條無限長的紙帶。紙帶被劃分為一個接一個的小格子,每個格子上包含$0$或$1$。紙帶上的格子從左到右依次被編號為$0,1,2,...$。
  2. 一個讀寫頭。該讀寫頭可以在紙帶上左右移動,它能讀出當前所指的格子上的符號,並能改變當前格子上的符號。
  3. 一套控制規則。它根據當前機器所處的狀態以及當前讀寫頭所指的格子上的符號來確定讀寫頭下一步的動作,並改變狀態暫存器的值,令機器進入一個新的狀態。
  4. 一個狀態暫存器。它用來儲存圖靈機當前所處的狀態。圖靈機有一個特殊的狀態,稱為停機狀態。(簡單來說就是停止執行)

根據不同的紙帶、狀態和控制規則,理論上圖靈機就能處理所有的問題。(理論上)

現在假定某圖靈機有$5$種狀態$(A,B,C,D,E)$,並且有以下的控制規則:

例如:

    狀態為$A$時,若讀取到$0$,則右移$1$格並將狀態改為$B$;若讀取到$1$,則將$1$改為$0$後向右移$2$格,並將狀態改為$D$
    狀態為$B$時,若讀取到$0$,則將$0$改為$1$後向左移$1$格,並將狀態改為$D$;若讀取到$1$,則停機(停止運作)
    狀態為$C$時,若讀取到$0$,則將$0$改為$1$後向右移$2$格,並將狀態改為$E$;若讀取到$1$,則將$1$改為$0$後向左移$2$格,並將狀態改為$A$
    狀態為$D$時,若讀取到$0$,則將$0$改為$1$後向右移$1$格,並將狀態改為$C$;若讀取到$1$,則右移$1$格並將狀態改為$E$
    狀態為$E$時,若讀取到$0$,則右移$1$格並將狀態改為$A$;若讀取到$1$,則左移$1$格並將狀態改為$C$
    設紙帶編號$0$ ~ $L-1$,目前位置為$m$,若$m < 0 $或$ m > L-1$則停機

現在,根據不同的紙帶資料,請輸出經圖靈機改變後紙帶上的資料

(初始狀態為$A$,從第$0$格開始讀起)

輸入說明

單筆測資,表示紙帶上原有的內容 字串長 $\leq 50$

輸出說明

輸出經圖靈機運算至停機後,修改的紙帶內容 若圖靈機運行超過$10000$次(不包含$10000$),則第$10001$次運算視為停機(也就是只輸出執行$10000$次的內容)

範例

輸入輸出說明

111001

011001

初始:                          ( 111001 ) 讀寫頭在$0$號位置讀到$1$,將$1$改為$0$,狀態變為$D$,移到$2$號位置  ( 011001 ) 讀寫頭在$2$號位置讀到$1$,狀態變為$E$,移到$3$號位置       ( 011001 ) 讀寫頭在$3$號位置讀到$0$,狀態變為$A$,移到$4$號位置       ( 011001 ) 讀寫頭在$4$號位置讀到$0$,狀態變為$B$,移到$5$號位置       ( 011001 ) 讀寫頭在$5$號位置讀到$1$,停機

101010101

001000100

提示

$just~do~it!!$

配分方法

$100\%$字串長 $\leq 50$ (有寫出來一定過)
$0\%$努力討好侃哥的印象分數