iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 23
2
自我挑戰組

一週程式專案挑戰系列 第 23

[專案03]寶石搶地盤(二)六角形板塊數量公式

【初始化】

之後地圖長度不一定是5,
也有可能是其他長度,
所以就需要公式。

const mapSize =5;
var mapData={
	"empty":;
	"red":3;
	"white":3;
	"hole":3;
}
mapData.empty= (9/5)*(3**mapSize)+-(4/5)*((-2)**mapSize)-9

【公式說明】

這邊是代入遞迴公式
設n為六角形邊長

長度 1 2 3 ... n
板塊數量 1 7 13 ... 1+6(n-1)
n=1,1
n>1,f(n)=f(n-1)+6

f(n)=f(n-1)+6
f(n)-f(n-1)-6=0
X^2-X-6=0
X=3,-2

a_0= C_1*(3)^0+ C_2*(-2)^0= 1
a_1= C_1*(3)^1+ C_2*(-2)^1= 7

C_1+ C_2= 1
3*C_1+ -2*C_2= 7

C_1= 9/5
C_2= -4/5

f(n)= (9/5)*(3^n)+ (-4/5)*((-2)^n)

【修改】

人類回合和電腦回合,
應該要拆出來,
而不是放在一起。

function 選擇遊戲模式(){
  模式=單人或雙人;  
  (模式==單人)?單人():雙人();
}

function 雙人(){
  while(空地用完){
  輪到=(輪到==紅方)?人類回合(紅方):人類回合(白方);
  }
}

function 單人(){
  while(空地用完){
  輪到=(輪到==紅方)?人類回合(紅方):電腦回合();
  }
}

【心得】

寫成公式電腦計算時間是O(1),
不過別人看這行程式應該會很困惑。

可讀性和計算時間,
這二個應該怎麼取捨?

感謝撥冗閱讀,
有錯誤地方請多指教。


上一篇
[專案03]寶石搶地盤(一)規劃說明
下一篇
[專案03]寶石搶地盤(三)六角形地圖
系列文
一週程式專案挑戰26

尚未有邦友留言

立即登入留言