ページ 11

簡単な数学

Posted: 2009年9月28日(月) 17:11
by F
揃えて消すパズル
サメガメというジャンルのスコア処理の所ですが

2つ揃い消えると2点 (2*0)+2
3つ揃い消えると4点 (2*0)+(2*1)+2
4つ揃い消えると8点 (2*0)+(2*1)+(2*2)+2
5つ揃い消えると14点 (2*0)+(2*1)+(2*2)+(2*3)+2
と増えて行きます
Cで書くとこうなると思うんですが、簡単な方法がありましたら教えて頂けないでしょうか?
int score(int num){
    num --;
    int ret = 0;
    for(int i=0;i<num;i++){
        ret += 2*i;
    }
    ret+=2;
    return ret;
}

Re:簡単な数学

Posted: 2009年9月28日(月) 19:08
by たいちう
お好きな方をどうぞ。
int score(int num)
{
	int i, ret = 2;
	for (i = 1; i <= num - 2; i++)
		ret += 2 * i;
	return ret;
}

int score(int num)
{
	return 2 + 2 * (num - 2) * (num - 1) / 2;
}

Re:簡単な数学

Posted: 2009年9月29日(火) 03:49
by F
1行で掛けるんですか。
動作確認しました。見てもどういう計算しているか分からないですが、分解しながら見てみようと思います。
本当にありがとう御座います。