這次的作業仍然是結對程式設計,我們隊伍的成員為:梁傑、夏天晗、謝祖三。上次我們是選擇了乙個時間大家聚在一起進行程式設計,效果不錯,所以這次我們還是決定採用這種方式。由於大家平時比較忙,這週六日我又有事,所以最後決定周五晚上大家一起進行程式設計。
周五晚上吃完飯,我們就開始了討論。
這次最大的乙個改變就是語言。
上次我們使用的是python,是因為我和夏天晗對python比較熟悉,並且夏天晗的第2次作業比較好,所以決定使用python。
這次作業,因為我們三個都選了一門ruby課程,也都想挑戰一下自己,所以我們決定使用ruby來進行編寫。
語言決定了,下面就是分工了。因為上次主要是我和夏天晗同學進行**編寫,謝祖三同學主要進行**複審,所以這次我們決定換一下角色,由謝祖三同學擔任主要部分的**編寫,我和夏天晗同學負責資料讀入、結果輸出、解法輸出、**複審等輔助工作。
分工之後,我們就正式開始了關於題目的討論。
第4次作業我們開始的時候並沒有很好的思路,所以上週一直沒有做。這周上課時候聽了亞研院一位老師的方法,感覺有一些啟發。老師的方法主要是深度優先搜尋,我們決定在這個思路上進行思考。
難點1:深度優先搜尋起始點的選擇
這個問題和第乙個問題很相近,所以我們同樣決定採用隨機方法進行測試。
難點3:如何防止卡死
我們的搜尋方法是結合隨機和深搜的方法,所以可能會出現在乙個小範圍內一直迴圈的問題,也就是卡死。為了解決這種問題,我們採用了一種比較折衷的解決辦法,就是當搜尋在一定範圍內迴圈次數超過閾值時,隨機從矩陣中刪除一些已有單詞,來解除卡死。
難點4:如何判斷結果是否正確
題目的要求很多,比如單詞不能重複,四角必須有單詞等等。當我們進行測試的時候,怎麼判斷結果是否正確成了乙個大問題。為了解決這個問題,我們最終決定編寫乙個解題函式並用視覺化的方法顯示出來,這樣就可以直觀的判斷是否滿足要求。執行**之後生成的solution.txt檔案就是解法
討論出思路之後,我們就開始了實際編寫**。雖然之前思路和分工都已經很明確了,但是編寫起來並不輕鬆,因為我們對ruby都不算很熟悉,所以編寫過程中經常遇到一些小問題。不過因為我們是一起編寫的,所以一旦遇到問題大家就會馬上討論,三個臭皮匠頂個諸葛亮嘛!在我們的不斷討論和搜尋之後問題往往都能被很快解決。上次編寫**時夏天晗同學的變數命名習慣並不是很好,這次有了明顯的改變,**可讀性提高了很多。
我們選擇的測試方法是人工測試。因為我們編寫了生成解法的函式,所以可以直接檢視解法來判斷是否正確。測試過程如下:
首先我們來執行一下程式,因為一開始並不知道矩陣大小,所以我們先嘗試一下20x20(單詞就不在這裡列出了,可以檢視allwords.txt檔案):
可以看到很快就執行出了結果,我們檢視一下solution.txt:
可以看到滿足了題目要求。
因為執行速度非常快,所以我們考慮可能20x20有點大,下面我們嘗試一下16x16:
可以看到程式一直在嘗試放置單詞,但是有十幾個單詞一直放不進去,說明矩陣尺寸太小了。
再嘗試一下17和18(這裡不截圖了,和上面的差不多),我們發現18x18的時候矩陣可以出結果,說明最小矩陣就是18x18了。
當然,矩陣並不一定要是nxn,你也可以使用nxm,如果矩陣的長寬無法放入最長的單詞會提示出錯。
這是我們第二次結對程式設計,大家表現比上次好了很多,雖然使用了乙個新語言,遇到很多問題,但是我們沒有退縮,仍然完成了作業。
我們的作業經過測試,可以滿足老師提出的要求:8方向,無重複,四角有單詞,矩陣最小。我們甚至還編寫了乙個生成視覺化解法的函式,讓檢測結果正確性變得非常簡單。
personal software process stages
時間百分比(%)
實際花費的時間 (分鐘)
原來估計的時間 (分鐘)
計畫
10%18 12·
估計這個任務需要多少時間,把工作細化並大致排序
10%18
12開發
85%153
102·
需求分析 (包括學習新技術)
15%2718·
設計複審
(和同事審核設計文件
)10%
1812
·**規範
(制定合適的規範)5%
96·具體設計
10%1812·
具體編碼
35%6342·
**複審5%9
6 ·測試(自我測試,修改**,提交修改)5%9
6總結報告
5%96總計
100%
總用時 180
總估計的用時 120
SQL學習相關04
在表中建立索引,可以在不提取整個表的前提下通過索引可以查詢資料 在表中建立索引,使用者是看不到的,值得注意的是,帶有索引的表更新的時間是長於不帶索引的表的,因為索引也需要更新,因此在實際使用時,我們一般給需要經常查詢的列建立索引 create index index name on table na...
CS131 homework1 關於互相關的疑問
根據相關性的定義,並根據題目要求,寫了對應的如下 執行出來的結果如下,發現並沒有對應到相應的位置上。但是想一想也是,因為所取的點是最大的點,那麼在進行互相關運算的時候,如果運算的區域基本上都是有白色畫素組成,那麼根據相關性計算出來的值必定是要大於與模板一樣的區域。然後作業提示使用zero mean,...
04 MongoDB相關操作
show dbs 查詢全部資料庫 db 顯示當前資料庫use database name例子 use test02有test02資料庫則切換到此資料庫,沒有則建立 注意 新建立的資料庫不顯示,需要至少包含乙個集合 db.dropdatabase 例子 刪除test02資料庫 先切換資料庫 use t...