個人專案 數獨遊戲

2021-10-01 16:29:18 字數 1608 閱讀 3499

數獨 ( 二 ) ——生成數獨終局

數獨 ( 三 ) ——解數獨

數獨(四)——測試與效能分析

數獨(五)——總結

數獨(六)—— ui介面

下面是我預計在專案上花費的時間。

psppersonal software process stages

預估耗時(分鐘)

實際耗時(分鐘)

planning

計畫25

* estimate

* 估計任務用時

25development

開發2015

* analysis

* 需求分析(包括學習新技術)

50* design spec

* 生成設計文件

40* design review

* 設計複審

15* coding standard

* **規範

10* design

* 具體設計

70* coding

* 具體編碼

1500

* code review

* **複審

130* test

*測試200

reporting

報告130

* test report

* 測試報告

55* size measurement

* 計算工作量

40* postmortem & process improvement plan

* 總結並題出改進計畫

35total

合計2170

數獨是一種邏輯遊戲。在乙個九行乘九列的**中填入1-9這九個數字。它要求滿足每一行、每一列、每乙個九宮格(3×3)內的數字均含1-9且不重複。數獨題的要求為數獨要有唯一解,表中已填滿的空格不能與它所在的行、列、組重合。

該作業涉及生成數獨終局、解數獨、生成數獨題目(ui介面裡面涉及)三個部分。

我玩過數獨遊戲,對於解數獨有一定的了解,但是對於生成數獨終局卻毫無頭緒。

對此,我在網上查詢了一些資料,怎麼生成數獨終局,怎麼快速解數獨之類的帖子和部落格。

對於解數獨,按照人的思維,常用的有三種方法:

1) 摒除法就是通過哪些格仔不能填這個數從而得到乙個唯一的這個數的填法。

2) 唯餘法就是通過分析這個格仔不能填什麼數而得到這個格仔的唯一填法。

3)強弱鏈則是通過分析數字與數字之間的邏輯關係而得到答案。

但是上述三種方法通過人的思維是很容易實現的,但是對於電腦程式而言,是很困難的。

對於計算機而言,猜測法才是最為實用的,dfs遞迴暴力破解,演算法簡單。

對於生成數獨,我一開始的想法是直接隨機在某些空格上生成數字形成數獨題。但是經過思考後,我發現我找不到數獨題目的特點,而且不一定有唯一解,我認為直接隨機生成數字形成數獨題目是很困難的。

經過學習,我發現生成數獨題目的步驟是:

1)產生乙個數獨終盤(9x9)

2)在第一步產生的數獨終盤中,根據難易程度,在終盤上挖掉不同數目的數字。

而產生乙個數獨終盤的辦法有很多,比如矩陣轉換法、兩個數互相交換法、調整行或者列、隨機法。

對於該項目的具體思路、設計過程還有開發過程會在之後的文章中提到。

個人專案數獨

2 每一行都要有1 9這9個數字填入 3 每一列都要有1 9這9個數字填入 4 每一塊都要有1 9這9個數字填入。所以,01模型中列的定義就出來了。i,j,k表示在棋盤上i行j列填入數字k。1到81,表示棋盤中9 9 81個格仔是否填入了數字。如果是,則選取的01行在該01列上有1。對應的01列編號...

個人專案 數獨

個人專案 數獨 再附psp表乙份 personal software process stages 估計耗時 分鐘 實際耗時 分鐘 計畫30 40需求分析 包括學習新技術 00 生成設計文件00 設計複審00 規範00 具體設計 300360 具體編碼 600530 複審 5030 測試200 23...

軟體工程個人專案 數獨

專案位址 github倉庫 psp 2.1 personal software process stages 預計耗時 分鐘 實際耗時 分鐘 planning 計畫50 60estimate 估計這個任務需要多久 300360 development 開發240 270analysis 需求分析 2...