簡単なCの問題

あんどーなつ
記事: 171
登録日時: 8年前
連絡を取る:

簡単なCの問題

投稿記事 by あんどーなつ » 8年前

大槻雄一郎さんの「14歳からはじめるC言語わくわくゲームプログラミング教室 Visual Studio 2013編」という本を読んでいます。その「6-3 疑似3Dでダンジョンを表示する」の節で、面白い操作を見つけました。

x=[2,1,0] -> sortx = (x+1)%3 = [0,2,1]
とする操作なのですが、これは1を真ん中としたときに両端を描画してから真ん中を表示するということらしいです。sortxってなんだろうかと思いましたけど、これは「両端から真ん中に」ソートするってことで納得しました。

ただ、「両端から真ん中に」ソートするのってn=3以外の時にもありうるよなーと思って、nが奇数の時について書いてみました。

CODE:

#include 

// {0,1,2} -> zigzag3 -> {0,2,1}
int zigzag3(int index) {
	return (3 - index) % 3;
}

// {0,1,..,2n} -> zigzag -> {0,2n,1,2n-1,..,n-1,n+1,n}
int zigzag(int index, int size) {
	if (index % 2 == 0)
		return index / 2;
	return size - (index / 2) - 1;
}

int main() {
	int i;
	const int size = 7;
	for (i = 0; i < size; i++)
		printf("%d ", zigzag(i, size));
	return 0;
}
n=3の時ほど美しくなく、かといって複雑でもないので、ちょっとがっかりしました。

コメントはまだありません。