上次的數獨程式(偽數獨)原來是錯的,真正數獨的規則:在九個九宮格裡,填入1到9的數字,讓每個數字在每個行、列及九宮格裡都只出現一次,也就是說向下圖所示:只要將此規則將9X9方格內填滿數字即可,所以上次的程式必須重寫(泣T.T)
所以要以這規則用JAVA實現,一開始以為很簡單卻搞了三、四天,不是數字重複,要不就是RUN很久迴圈跳不出來,就算跑出來了小九宮格裡的數字又重複了~~
終於今天把他搞定了~~
原來還是要用簡單的想法就好,有時想的太複雜反而不會成功,下面是執行的結果,速度相當快,而且相當亂,又能符合規則
run:
==================
8|1|7|5|9|3|6|4|2|
5|9|3|6|4|2|8|1|7|
6|4|2|8|1|7|5|9|3|
9|7|6|4|3|8|1|2|5|
4|3|8|1|2|5|9|7|6|
1|2|5|9|7|6|4|3|8|
3|6|1|2|8|9|7|5|4|
2|8|9|7|5|4|3|6|1|
7|5|4|3|6|1|2|8|9|
==================
8|1|7| | |3|6| |2|
5| | |6| | | | | |
| | | | |7|5| | |
| |6| |3|8| |2| |
| | | |2| |9|7|6|
1|2| |9| |6|4|3|8|
| | | |8|9| | | |
| |9| |5| | |6|1|
7| |4| |6|1| | | |
==================
成功建置 (總時間:0 秒)
程式部份寫法如上(只有宣告部份).....................
下次將它轉換至Android吧~~~加油!!!
2011年6月23日 星期四
2011年6月20日 星期一
Android手機程式自學方案-番外篇之來喝「爪哇咖啡」
此為番外篇~~因為Android也是用JAVA寫的,所以目前都是先用JAVA練習後,再將程式轉成Android,之前看到一個「河洛之數」的題目,所以拿來發揚光大一下.......
河洛之數的規則是這樣:
數字範圍為1~9且為3*3的數字矩陣,其縱向、橫向、對角線之3個數字總和皆為15,每次執行之矩陣排列皆不相同。
例如:
6 1 8
3 5 7
4 9 2
這算是一個還滿簡單的程式,所以我將它放大成 9 X 9,其縱向、橫向數字總和皆為45,且數字不能重複,結果如下:
=====================================================
6 8 3 5 9 4 1 7 2
8 1 4 3 2 5 7 6 9
5 7 6 1 4 9 3 2 8
1 6 5 4 7 2 8 9 3
2 5 7 8 6 3 9 1 4
7 3 9 2 8 1 6 4 5
9 2 8 7 5 6 4 3 1
3 4 2 9 1 7 5 8 6
4 9 1 6 3 8 2 5 7
=====================================================
9 3 5 2 4 6 1 8 7
7 1 4 8 5 9 2 3 6
6 9 8 5 3 4 7 2 1
5 8 1 9 7 3 4 6 2
1 6 3 4 2 8 9 7 5
3 5 2 6 1 7 8 9 4
2 4 6 7 9 1 3 5 8
8 7 9 1 6 2 5 4 3
4 2 7 3 8 5 6 1 9
=====================================================
雖然判斷式寫的很長,不過速度上還蠻快的,呈現效果就像「數獨」一樣,下次將將它套用在Android上,改裝成「數獨遊戲」。
河洛之數的規則是這樣:
數字範圍為1~9且為3*3的數字矩陣,其縱向、橫向、對角線之3個數字總和皆為15,每次執行之矩陣排列皆不相同。
例如:
6 1 8
3 5 7
4 9 2
這算是一個還滿簡單的程式,所以我將它放大成 9 X 9,其縱向、橫向數字總和皆為45,且數字不能重複,結果如下:
=====================================================
6 8 3 5 9 4 1 7 2
8 1 4 3 2 5 7 6 9
5 7 6 1 4 9 3 2 8
1 6 5 4 7 2 8 9 3
2 5 7 8 6 3 9 1 4
7 3 9 2 8 1 6 4 5
9 2 8 7 5 6 4 3 1
3 4 2 9 1 7 5 8 6
4 9 1 6 3 8 2 5 7
=====================================================
9 3 5 2 4 6 1 8 7
7 1 4 8 5 9 2 3 6
6 9 8 5 3 4 7 2 1
5 8 1 9 7 3 4 6 2
1 6 3 4 2 8 9 7 5
3 5 2 6 1 7 8 9 4
2 4 6 7 9 1 3 5 8
8 7 9 1 6 2 5 4 3
4 2 7 3 8 5 6 1 9
=====================================================
雖然判斷式寫的很長,不過速度上還蠻快的,呈現效果就像「數獨」一樣,下次將將它套用在Android上,改裝成「數獨遊戲」。
2011年6月19日 星期日
Android手機程式自學方案-03
上次寫了一個計算BMI值的程式,應該算是在做數學運算與型態轉換的練習。
接著來做做陣列吧~~~寫一個樂透程式
主要注意的是:
1. 數字必須是亂數產生
2. 數字範圍 1~49 (這是廢話嗎!!)
3. 數字不能重複
第一與第二個問題是:使用亂數產生命令..Math.random()產生0~1的亂數
要產生範圍值則: Math.random()*(max-min)+min,所以要產生1~49的亂數,Math.random()*(49-1)+1
後續的問題是,數字不能重複,這問題比較大,因為用純JAVA寫的話,如下:
不包含迴圈,只要五行就解決了,但是直接套用至Android上,卻發生亂數會重複的問題,問題出在哪???這個就有待之後探討~
所以要能夠達成亂數不重複,只好用暴力比對法了,一筆一筆比對,雖然會慢一點(感覺不出來),不過一樣可以達成目的,如下寫法:
所以樂透程式就這樣誕生了~~執行畫面如下:
接著來做做陣列吧~~~寫一個樂透程式
主要注意的是:
1. 數字必須是亂數產生
2. 數字範圍 1~49 (這是廢話嗎!!)
3. 數字不能重複
第一與第二個問題是:使用亂數產生命令..Math.random()產生0~1的亂數
要產生範圍值則: Math.random()*(max-min)+min,所以要產生1~49的亂數,Math.random()*(49-1)+1
後續的問題是,數字不能重複,這問題比較大,因為用純JAVA寫的話,如下:
不包含迴圈,只要五行就解決了,但是直接套用至Android上,卻發生亂數會重複的問題,問題出在哪???這個就有待之後探討~
所以要能夠達成亂數不重複,只好用暴力比對法了,一筆一筆比對,雖然會慢一點(感覺不出來),不過一樣可以達成目的,如下寫法:
所以樂透程式就這樣誕生了~~執行畫面如下:
2011年6月14日 星期二
Android手機程式自學方案-02
應該要改成「腦殘」的自學方案才對~~~
終於對了~~~!!!!!!
又花了近二個小時,終於完成BMI計算程式....................的畫面,沒錯只有畫面,還不會計算.....光是一個畫面就把我搞死了,原因是不習慣在上面直接編輯,後來找到一套編輯軟體,熟悉操作後,就改善許多了~~~下一步是......計算.......哈哈!好像以前剛學程式一樣.....寫些超簡單程式
這是在 Ubuntu Linux下完成的 畫面~~~(上面的真的只是畫面,不能計算)
2011-06-18開始撰寫程式碼~~~~~
2011-06-18開始撰寫程式碼~~~~~
OK~把程式碼寫進去啦~!JAVA變數宣告~搞不太清楚!!所以算出來的答案是錯的~
因為是用Integer所以沒有小數點
正確答案應該是 75/((180*180)/10000)=23.15
結果變成 75/((180*180)/10000) = ˙75/3 = 25
晚點搞清楚變數宣告吧~~!!!
2011-06-19..............更改程式碼
終於對了~~~!!!!!!
2011年6月11日 星期六
Android手機程式自學方案-01
在職進修的課程找不到,只好搞自學啦!!
只是自學能有多大的效果............啊知~就走一步算一步,等有在職進修課程再去上吧。
第一步當然樣先架構好開發Android程式的環境了
我用的作業系統是 Ubuntu Linux 10.04....(當然也可以選擇用Windows)
開發環境需要下列四項東西:
- Java開發工具包(Java Development Kit, JDK)
- Android 軟體開發工具包(software development kit, SDK)
- Eclipse整合開發環境(Integrated Development Environment, IDE)
- Eclipse專用之Android開發工具外掛(ADT Plugin for Eclipse)
首先上Android官網 : http://developer.android.com/sdk/index.html
下載 Android SDK
安裝 JDK..Java開發工具包(Java Development Kit, JDK)
用ubuntu Linux的好處是不用下載,直接用 套件管理程式 搜尋 JDK.....選 default-jdk 再套用即可安裝了~~!!!
再來安裝 Eclipse整合開發環境(Integrated Development Environment, IDE)
可以到Eclipse 官網下載最新版本 : http://www.eclipse.org/downloads/
用ubuntu Linux不用下載,直接用 套件管理程式 搜尋Eclipse.....選 Eclipse 再套用即可安裝了~~!!!不過Ubuntu提供的版本是3.5.2,官網是 3.6版。
安裝完後,就可以啟動 Eclipse
再來安裝 Eclipse專用之Android開發工具外掛(ADT Plugin for Eclipse) ,這可也還蠻簡單的。
只要在 Eclipse 的工具列 直接點選”Help”下拉式選單當中的”Install New Software”選項,當出現”Install”對話視窗時,請在”Work with”文字框中,鍵入 https://dl-ssl.google.com/android/eclipse/ (有錯誤時改成 http://dl-ssl.google.com/android/eclipse/ )網址,並按下”Add…”按鈕
當出現”Add Repository”對話視窗時,在”Name:”對話視窗中,輸入一個英文代號名稱。因為,這個名稱只是說明這個網址為何?所以,可以自由輸入一個英文代號名稱。輸入後,按下”OK”按鈕。
按下”Select All” 按鈕,以便選取所有ADT Plugin for Eclipse的相關工具,即可安裝!!!
剩下Android 軟體開發工具包(software development kit, SDK),最早之前下載的SDK,在Linux系統下解開壓縮檔 android-sdk-linux_X86 後 ,在文字模式或是終端機 進入剛剛解開的目錄裡的tools目錄,下android update sdk的指令: 如下
test@test-laptop:~/下載/android-sdk-linux_x86/tools$ ./android update sdk
既可安裝下列我寫的第一支程式: 在手機畫面上秀 Android program test by Dino
搞了二、三個小時,重灌二次Ubuntu ,才完成這個程式,這就是自學的成果 (應該是後果~XD)
後面還有 XML、JAVA、資料庫......哩哩叩叩的東西一堆........真是自作孽啊~~
訂閱:
文章 (Atom)