:::

[作品]數獨sudoku解答計算器

布丁布丁吃布丁

[作品]數獨sudoku解答計算器

數獨sudoku,在每一個小九宮格中,分別填上1至9的數字,讓整個大九宮格每一列、每一行的數字都不重複。

這個程式的使用方法是:

  1. 先填入題目
  2. 按下「開始計算」
  3. 等待計算完畢,你可以看到計算的過程喔!
  4. 解答出來囉

不管怎麼說,來玩玩看吧!這邊也提供一個從報紙上抄下來的範例作為題目,按下「範例1」就會自動填入喔!

這個演算法是很基礎的N-QUEEN回溯法,計算方式如下

  1. 從第一格開始判斷,方向為前進
  2. 將該格數字+1並模數10,進行檢查是否符合規則
  3. 檢查通過,跳下一格,方向為前進
  4. 如果數字為0(即10 mod 10),則代表所有可能都計算過,這格沒有可能解,必須退回檢查上一格
  5. 如果該格為題目,則跳下一格(方向為前進)或上一格(方向為後退)

詳細演算法可以自行查詢本網頁的原始碼當中JavaScript的sudoku這個函式。

不過,這個演算法只能說是基礎,還有更好的作法:先列出每一格當中的可能數字,先從擁有最少可能的數字開始進行運算測試,再做下一個,這樣不斷地到所有格子都完成。這跟基礎演算法關鍵性的不同是:進階演算法是利用最可能取得答案的那格開始計算,基礎演算法只是很笨地從第一格開始計算而已。這個程式撰寫時,我也已經留好寫入進階演算法的空間,改天會把它完成吧。

接下來閒聊一下。

數獨sudoku(数獨‧看發音儼然是日文),這玩意兒不知為何在各個場所流行起來了。不僅班上同學特地買了書來玩,連各大報紙每天都有不同的數獨題目。在這個9*9的小空間裡面,數獨的變化可說是變化無窮。

我個人對這種東西就有點不行了,比起花時間向機器般地推敲這個遊戲,我可能比較喜歡玩東方永夜抄訓練手指(汗)。

話說回來,最近演算法上到回溯,可說是越聽越不懂啦。之前的演算法,大部分我都可以直接轉換成程式語言來實作。可是這個回溯的道理雖然簡單,但是要實作起來可就麻煩了。

昨晚吃晚餐的時候,隨意拿起了身邊的報紙來看,又是數獨。之前我就有想過要來寫個簡單的小程式來解數獨了,吃飯的時候跟隆基討論了一下演算法,然後就上機實作當作飯後消化吧。最後是花了三個多小時完成了,之間發生很多無所謂的Bug就不說了,總之完成的那種感覺很爽。

趁月圓的時候,買罐飲料向月亮舉杯,慶賀一下吧XD。


(more...)

[圖資]讀者服務942期中考

布丁布丁吃布丁

[圖資]讀者服務942期中考

圖資三讀者服務
九十四學年度下學期 期中考

OPEN BOOK EXAM

全壹題 (整合題)

假設你已經是在「執業」的專業參考館員,有個讀者來要求提供參考服務。他說:「我想知道現在世界上最好的生意是什麼?」

請根據Katz第七章所說的「參考晤談」和第八章的「搜尋法則」,擬定此個案的「工作計畫」(例如透過reference interview),確認使用者的真正需求...,運用translation of the question之類的「專業技巧」,開始進行專業的「資訊蒐集指導」。

請斟酌考試時間作答。期間有答題的原則性問題可以問老師。

(more...)

[圖資]作業系統942期中考

布丁布丁吃布丁

[圖資]作業系統942期中考

作業系統
九十四學年度第二學期期中考

一、解釋名詞

  1. 布雷第異常現象(Belady's anomaly)
  2. 需求分頁(Demand Paging)
  3. dynamic linking

二、何謂純程式碼(pure code)?若記憶體管理方式採需求分頁,它是有利或不利?請簡單敘述你的理由。

三、請說明在分頁法中為何要使用翻譯測看暫存區 (translation look-aside buffer, TLB)這樣的硬體機制?

四、 請比較內部斷裂(internal fragmentation)與外部斷裂(external fragmentation)?並請就分頁法與分段法討論兩種斷裂發生的狀況?

五、在記憶體管理中何謂翻轉(Thrashing, 輾轉)現象?如何解決此現象(要說明解決的概念)?

六、何謂分頁錯誤(page fault)?並請簡單舉出三種撰寫程式時,若不注意較易發生分頁錯誤的情形。

七、以下列分頁參考串列為例:

1, 2, 3, 4, 2, 1, 5, 6, 2, 1, 2, 4, 3, 5, 6, 7, 6, 3, 2, 1, 2, 3, 6

試對下列分頁替換法而言,將分別產生多少次分頁錯誤?假設分配頁框數為4個頁框

  1. LRU
  2. FIFO
  3. Second-Change Algorithm
(more...)

[圖資]演算法942期中考

布丁布丁吃布丁

[圖資]演算法942期中考

演算法
九十四學年度第二學期期中考

一、

  1. 將下列待排序的串列(初始狀態),建成Heap tree的過程描述出來
    66 34 21 49 71 21 81 54

  2. Hea排序法是否為穩定的(Stable)排序法

二、試說明B-tree與AVL-tree之異同

三、

  1. 簡單說明雜湊法(Hashing)?它的時間複雜度為何?

  2. 並請簡單說明何謂碰撞(collision)?請提出兩個解決方法?

四、簡單說明內插搜尋法(Interpolation search)?

五、請畫出要在下列3-2 tree中 (1)插入35 (2)刪除13 兩個資料,整棵樹的調整過程。

(more...)

[圖資]媒體資源服務942期中考

布丁布丁吃布丁

[圖資]媒體資源服務942期中考

媒體資源服務
九十四學年度第二學期期中考

問答題

  1. 何謂“Red Eyes”? 何謂Double Vision?何謂RPA?
  2. 何謂“Ergonomics”?如何讓圖書館使用者使用電腦更健康?
  3. 簡述在規劃兒童所使用的工作站時,必須注意的人因考量?
  4. 說明電腦長期操作所導致電腦操作者症候群(video operation distress syndrome, VODS)。
  5. 引起電腦工作者Eyestrain之Glare有哪些?如何避免?
  6. 說明無障礙設計的產品中Direct accessibility與Accessibility via Standard Opions of Accessories設計之差異。
  7. 圖書館的環境應該考量哪些無障礙的規劃?
(more...)

[日記]一日隆基‧日理萬機

布丁布丁吃布丁

[日記]一日隆基‧日理萬機

哈哈,第二天的電腦助教工作在十幾分鐘就下班啦。

今天也發生了很多事情,因為有用電腦剪輯的部份,所以很多地方已經不是我可以處理的程度了。還好隆基即時回來,解決了Digital 8無法使用IEEE1394與DV對錄的方式,而用D2電腦的擷取卡來擷取。不知道是擷取卡的品質好,還是D8錄影的品質就不錯,擷取出來的影像可說是非常漂亮,令人驚艷。總之是學到一課了。

除了這件事情之外,其他問題就不大了。感謝隆基特地拉線給我用,讓我今天不用看CRT看到頭暈,可以比較有精神地工作 (雖然我下午還是不小心睡了一個小時XD)。教育學程的助教幫我買了便當,份量多,但是叉燒吃起來怪怪的。

的,為什麼寫著寫著變成流水帳日記啦?我只是想在下班之前把這兩天的心得寫一寫而已啊。

上課氣氛相當熱鬧、和氣,是個非常宜人的上課氣氛。這不僅是講師口才好、知識多、教材佳,學生積極的配合也是很重要。這兩天來上課的學生,應該全部都是具有社會經驗的大人,年紀應該跟隆基差不多吧。學生自己是老師,卻在課堂上說著:「謝謝老師」的這種話,學習的態度讓他們看起來就像是小孩子一樣,討論及作品中時常露出那種孩童玩樂般的氣息。我為他們自身的謙遜態度感到敬佩。

講師的能力也是非常厲害,昨天上課十分鐘就知道他是專業的。上課時不僅講話挑重點講,更重要的是會用現場的狀況逗同學大笑,讓氣氛不會冷場。即使這是不熟悉的電腦教室,他也能夠發揮他豐富的知識,處理了許多問題,讓我這個電腦助教在很多場合都只是站起來露個頭,卻發現問題已經解決而坐下。即使如此,講師並不會因為自己的地位而難以讓人親近,我這個半吊子的助教處理問題發生錯誤時,他也會用開玩笑的口吻逗大家笑,讓我不會太過尷尬。總之,是不可多得的好老師啊!

看完感想很簡單:希望我也能夠像他們這樣,認真地聽老師上課,快樂地做老師交待下來的作業。

好啦,我可以下班了沒啊?XD

(more...)

[評論]淺談TraceBack

布丁布丁吃布丁

[評論]淺談TraceBack

TrackBack,簡單來說,就是看你從哪裡來的一種方法。

詳細來說TraceBack是一種網頁伺服器的技術,可以記錄瀏覽該網頁的使用者,是由哪個網頁連結而來的。例如你是從Google的搜尋頁面連結到我的網站,那麼在我的伺服器當中,就會紀錄某個ip從google的頁面連結到我這邊的訊息。

從Blog流行之後,TraceBack這名詞才開始盛行。這個技術其實是很早就有的網路標準,在網頁伺服器當中,就會有一個記錄檔案,記錄著誰從哪個網頁連結到這個伺服器,這就是TraceBack的前身。只是這個資訊基本上只有系統管理者可以看到,基本上是不公開的,所以也不是很盛行。

那麼,TraceBack到底可以拿來幹麻呢?就商業網站來說,得知使用者從那裡進入你的網站是很重要的一點,老闆可以從這個資訊判斷我該將廣告費用投資在哪裡才會有最大效益;對於私密網站來說,如果有非從正常網頁連結進入、而是發生異常的TraceBack,這就得特別去注意是否有hack的發生。對於公開連結、沒有商業利益的Blog來說,這個TraceBack的存在則並非是從利益性的角度,而是以促進社群產生的立場而產生的。

透過TraceBack,你可以得知自己的Blog被誰連結,或是被什麼東西搜尋。相較於難以判別的ip位置,讓人開放觀賞的Blog要得知誰在看你的Blog,TraceBack則是個很實在的方法。舉例來說,你寫的一篇文章被某個朋友的Blog引用,也就是有人從那個人的Blog上面的連結,連結到你這個文章,你就可以知道你的朋友或看你朋友Blog的人,也會因此而看到你的文章。

這也牽扯到Blog的創立目的的問題:你的Blog到底是為特定人士而寫?還是為了你自身的目的而寫呢?這好像變成雞生蛋蛋生雞的問題了。文字是一種溝通的方式,溝通具有人、事、時、地、物等種種要素,也就是說,不論我要寫什麼東西,都必須有個目標對象,以調整我文章的用語難度、深度,以及我決定是否公開的資訊內容。至於到底是否要在意別人的眼光,我覺得這倒不是主要問題。會來看你的文章的,幾乎都是會對你的文章主題、或是你自己感到興趣的人。這樣一來,雞生蛋蛋生雞其實都是同一目的,就沒有繼續探討的必要了。

布丁布丁吃?這個Blog的目標對象並不限於特定對象,基本上我是將這些文章貢獻給網際網路,而儘可能地將每篇文章寫得淺顯易懂,讓即使不知道該領域的使用者,也不會整篇看得霧煞煞。當然,如果你認識我的話,也可以從我的文章裡面發現許多我最近發生的事情或想法,不過對我來說這僅是文章寫完之後的雜談而已,並不是主體。我希望,我的Blog並不是只有一篇篇日記的心情筆記本,這也呼應了這個Blog的描述內容啦(差點忘記改回來了)。

(more...)