M♪o 之學習筆記本《子》開關︰【䷝】狀態編碼

派生碼訊

子 鼠

最高樓‧杜甫

城尖徑厭施篩愁,獨立縹緲之飛樓。
峽坼雲霾龍虎臥,江清日抱黿鼉游。
扶桑西枝對斷石,弱水東影隨長流。
杖藜嘆世者誰子?泣血迸空回白頭。

︰老杜倡議拗體詩,誰知拗得拗不得?

今天小企鵝學堂上,吵吵鬧鬧,此時那些小企鵝們正憤愾的議論著禮拜天還『補課』之事的呢 !!

有的主張︰既然是天放假,幹嘛要補課。

有的辯證︰就算今天不補,改天補還不是一樣?

有的議論︰早補早了,有什麼好議論的!!

有的搞笑︰『始』安息日,『終』禮拜天!不就一天嗎??

那你可有說法?

哦!我唱ㄏㄡˇ你ㄗㄞ︰今天不只要補課,……

而且ㄍㄡˋ要實習,但是用的是『咸澤碼訊』

‧高級的

‧沒學過的

‧ㄍㄚˋ伊講不通的

唔是□派○生的呦!!

啞是甲意喝一杯咖啡??

BabyTux

graphics-tux-638974

sonictux

starbucks_tux_linux_art-555px

長 長︰同學們請安靜。大雪之故,實習的材料

P1070822

遲了,不得已改用『咸澤碼訊』。學長們正忙著設定,等會實習時,請按造指示去作。就我所知,跟平常是一樣的。

☆ 編者言說明

原來 M♪o 是班長 長 的啊!由於那『沒有之物』尚且沒有,恰好借此處說明一下,此物的規格可以見之於

樹莓派「瑞士軍刀」擴展板(SAKS)

,DIY 教程請參考

樹莓派「瑞士軍刀」擴展板(SAKS)DIY 教程

目前編者不過是假借側寫罷了,不論同或不同,都只為借假修真的吧!

 

派 ︰《天下一指、萬物一馬︰二進制》裡講︰

人們習以為常的語言、文字都是符號系統。當我們講到玫瑰花,是指「可以看、聞、摸的那種植物的花」,如果缺乏感官經驗,也許根本不能知道玫瑰花是什麼?或者正因為經驗的自然平常,以致於我們忘了玫瑰花只是個符號。 有人說玫瑰花即使換個名字‥ Rose ,依然芬芳香甜,指的就是這個道理。如同月亮高掛天空,只能一指說月;天下廣大,當然也只能一指而知,所以說萬物雖然眾多,可以用像談馬一樣的東西去理 解。在歷史上大數學家邱奇的 λ 演算 ,把數學的形式系統推上了高峰,同時加深了人們對『數是什麼 ?』的認識。

一朵花、一隻鳥、一座山、一片林…都是一,知道『』、又知道『加上一』,就可以知道數的無窮無盡。然而對於無窮無盡的數又該怎樣命名呢?古代中國發明了十倍為單位的記數法︰ 十十為百、十百為千、十千為萬…。初期用一、二、三、四、五、六、七、八 、九、十來書寫,而後因為需要發展了大寫數字‥壹、貳、參、肆 、伍、陸、柒、捌、 玖、拾。至於說為什麼用十呢?也許因為人有十個手指頭,常用來數數指物。那為什麼沒有零呢?中國古代並沒有零的符號,在概念上『九章算術』用「無入」來表 達,算盤上用「空位」去說明。現在所使用的阿拉伯記數法︰0、1、2、3、4、5 、6、7、8、9,是在漫漫歷史長河中逐步變遷而來。由上述可知三百、參 佰、300 雖然說的是同一個數,它的符號卻是不同的。同樣可以知道阿拉伯記數法用位置代表數量級,所以 0 的加入是必要的 。

……

 

生 ︰《紙張、鉛筆和橡皮擦》中說︰

圖靈百年之後,『計算』並沒有變得更『簡單』,『爆炸』般的『知識』也沒使得『邏輯』推演更加『清晰』。或許那台『仙女計算機』並沒有『使用手冊』?還是她有使用手冊,祇可惜缺少那個伴隨著通過『圖靈測試』之『演算法』的呢??

拉丁語 tertium non datur 聲稱︰

任何命題 P, \ (P \ \vee \sim P) 必真。

這個叫做『排中律』的概念,有直覺主意的數學家反對,後來還成立了一個『數學建構主義』的流派。這不就是句『空話』的嗎?又何必需要反對?原因在於並非所有的概念都是可以,像『真假』、『是非』與『對錯』般的『二分』,在『黑白』之外不只有『』,甚至還有『』。所以使用排中律一不小心就可能產生『虛假兩難論證』False dilemma。比方說有人論證想反駁『小三之歌』的『沒有拆不散的家庭,只有不努力的小三』︰

假使愛情堅定,無論如何考驗也不會改變;如果愛情不堅定,沒有小三也難長存。只有愛情堅定才會攜手建立家庭,所以再努力的小三也沒有用。

作者不知『堅不堅定』的兩極之間,果真該不該有『其他愛情』的存在?因此無法判斷這個論證對錯是否如此??而『直覺邏輯者』卻認為應該取消排中律︰

平面上任何一條不自相交連續之『封閉曲線C,將平面分成『』個區域,『C 之外或C 之內』之『二分』不包含著『C 之中』,但它不是才是 C 的啊!!

看來仙女早已遠離,那就說說存在的這台『圖靈機』吧!根據『 Hopcroft, John E.; Ullman, Jeffrey D. (1979). Introduction to Automata Theory, Languages, and Computation (1st ed.)』所定義︰

單磁帶』one-tape 圖靈機是一個有序七元組 M= \langle Q, \Gamma, b, \Sigma, \delta, q_0, F \rangle ,此處

Q 是一個有限非空的『狀態』 state 集合

\Gamma 是一個有限非空的『磁帶上字母符號』集合

b \in \Gamma 是一個『空白符號』,唯一允許在任意計算步驟中無限次出現在磁帶上的符號

\Sigma\subseteq\Gamma\setminus\{b\} 是不包含空白符號的『輸入符號』集合

q_0 \in Q 是『初始狀態

F \subseteq Q 是『最終狀態』或稱作『接受狀態』,一般可能有 q_{accept}, q_{reject},q_{HALT}

\delta: Q \setminus F \times \Gamma \rightarrow Q \times \Gamma \times \{L,R\} 是稱作『轉移函式』transition function,其中 L,R 代表『讀寫頭』之向『左,右』移動,還有的增加了『不移動』no shift 的擴張

220px-Maquina

300px-Turing_machine_2b

500px-State_diagram_3_state_busy_beaver_4_

220px-Lego_Turing_Machine

220px-Hopcroft-ullman-old

圖靈機 M 將以下面方式運行:

開 機的時候首先將輸入符號字串 \omega=\omega_0\omega_1\ldots\omega_{n-1} \in \Sigma^* 依序的從左到右填寫在磁帶之第 0, 1, \ldots , n-1 編號的格子上, 將所有其它格子保持空白 ── 即填以空白符 b ──。 然後 M 的讀寫頭指向第 0 號格子,此時 M 處於狀態 q_0。 機器開始執行指令,按照轉移函式 \delta 所描述的規則進行逐步計算。 比方如果當前機器的狀態是 q,讀寫頭所指的格子中的符號是 x, 假使 \delta(q,x) = (q', x', L), 那麼機器下一步將進入新的狀態 q', 且將讀寫頭所指的格子中的符號改寫為 x', 然後把讀寫頭向左移動一個格子。 設使在某一時刻,讀寫頭所指的是第 0 號格子, 然而根據轉移函式它的下一步又將繼續向左移,此時它停在原處不動,也就是說,讀寫頭永遠不會移出了磁帶的左方界限。 設若在某個時刻 M 根據轉移函式進入了某種最終狀態 q_{final}, 則它立刻停機並留下磁帶上的結果字串。由於轉移函式 \delta 是一個部分函式,換句話說對於某些 q,x, \ \delta(q,x) 可能沒有可用的轉移定義, 如果在執行中遇到這種情況,機器依設計約定也將立即 q_{HALT} 停機。

……

△ 實習所用之狀態編解碼對照表︰

數碼代表狀態LED 燈號
0未運行綠無,紅無
1正常工作綠有,紅無
2工作異常綠無,紅有
3系統故障綠有,紅有

 

PEP 0263 — Defining Python Source Code Encodings

Abstract

This PEP proposes to introduce a syntax to declare the encoding of
a Python source file. The encoding information is then used by the Python parser to interpret the file using the given encoding. Most notably this enhances the interpretation of Unicode literals in the source code and makes it possible to write Unicode literals using e.g. UTF-8 directly in an Unicode aware editor.

……

 

碼 ︰一台圖靈機,上有紅綠 LED 兩燈號,意義如狀態編解碼對照表所說。據統計資料,此自動機一年歲休一天【一年以三百六十五天計】,三天異常,兩日故障,其餘工作正常,試寫一『派生 』 Python 程式模擬之。

☿ 答︰

#!/usr/bin/python3
# -*- coding: utf-8 -*-

# 載入所需程式庫
import RPi.GPIO as GPIO
from time import sleep
import random

# 選擇 BCM 編號制
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

# 指定紅綠 LED 編號
紅LED = 35
綠LED = 47

# 設定輸出模式與給定初始值
GPIO.setup(紅LED, GPIO.OUT)
GPIO.setup(綠LED, GPIO.OUT)

GPIO.output(紅LED, GPIO.LOW)
GPIO.output(綠LED, GPIO.LOW)

# 題意假設
歲休日 = 1

異常日一 = 100
異常日二 = 200
異常日三 = 300

故障日一 = 177
故障日二 = 344

# 隨機模擬
while True :
    模擬日 = random.randint(1,365)
    if 模擬日 == 歲休日 :
        GPIO.output(紅LED, GPIO.LOW)
        GPIO.output(綠LED, GPIO.LOW)
    elif 模擬日 == 異常日一 or 模擬日 == 異常日二 or 模擬日 == 異常日三 :
        GPIO.output(紅LED, GPIO.HIGH)
        GPIO.output(綠LED, GPIO.LOW)
    elif 模擬日 == 故障日一 or 模擬日 == 故障日二 :
        GPIO.output(紅LED, GPIO.HIGH)
        GPIO.output(綠LED, GPIO.HIGH)
    else:
        GPIO.output(紅LED, GPIO.LOW)
        GPIO.output(綠LED, GPIO.HIGH)
    sleep(0.01)

執行︰

pi@raspberrypi ~ $ sudo -s

root@raspberrypi:/home/pi# echo none > /sys/class/leds/led0/trigger
root@raspberrypi:/home/pi# echo none > /sys/class/leds/led1/trigger
root@raspberrypi:/home/pi# python3 LED.py

 

行 ︰雖說是寫了,卻也不知符不符合題意的ㄚ˙?!

 

訊 ︰時光一去不回頭,補課容易難補天。