_대문 | 방명록 | 최근글 | 홈피소개 | 주인놈
FrontPage › CSharp-요술사각형

/*
 * Created by SharpDevelop.
 * User: dwa2007
 * Date: 2011-10-16
 * Time: 오후 12:05
 * 
 * 요술사각형 - 가로, 세로, 대각선의 합의 같음
 * 1행의 중간을 1로 시작하여, 좌측 대각선 방향으로 올라가면서 빈칸에 1씩 증가된 숫자를 채운다.
 * 
 * 상단을 벗어나면 행의 최하단으로, 좌측을 벗어나면 같은 행의 최우측으로 이동하되, 이동하려는 칸이 비어 있지 않으면
 * 바로 빝의 칸으로 내려와 계속 실행한다. 
 * 
 * 각 행과 열 및 대각선의 합은 반드시 같아야 하고, 사각형의 행과 열의 개수는 같고, 반드시 홀수개어야 한다.
 */
using System;

namespace test
{
	class Program
	{
		public static void Main(string[] args)
		{
			int [,] Arr = new int[7,7];
			
			int r,c,val;
			val = 1;
			r = 0; // row 초기세팅
			c = 3; // col 초기세팅 
			
			Arr[r,c] = val;
			
			while(val <= Arr.Length -1){
				val++;
				
				if(r == 0 && c == 0) 
				{
					r++; //[0,0]이면 [0,1]로 값을 저장할 배열주소 세팅
				} else {
					if(r-- == 0) r = Arr.GetLength(0) - 1; //row가 0이면 
					if(c-- == 0) c = Arr.GetLength(1) - 1; //col이 0이면 
				}
										
				if (Arr[r,c] != 0){ //세팅한 배열주소에 이미 값이 존재하면 
					r += 2;
					c += 1;
				}
				
				//Console.WriteLine("{0},{1}", r,c);
				Arr[r,c] = val;
			}
			
			//여기부터는 값을 보여주는 곳 
			String s_val;	
			for(int i = 0; i < Arr.GetLength(0); i++){
				for(int j = 0; j < Arr.GetLength(1); j++){
					s_val = Arr[i,j].ToString();
					s_val = ("  " + s_val);
					s_val = s_val.Substring(s_val.Length - 2); //right함수
					Console.Write("{0}  ", s_val);
				}
				Console.WriteLine();
			}
			
			
			Console.Write("Press any key to continue . . . ");
			Console.ReadKey(true);
		}
	}
}

/*
28  19  10   1  48  39  30
29  27  18   9   7  47  38
37  35  26  17   8   6  46
45  36  34  25  16  14   5
 4  44  42  33  24  15  13
12   3  43  41  32  23  21
20  11   2  49  40  31  22
Press any key to continue . . .
*/

댓글 남기기..
이름: : 오른쪽의 새로고침을 클릭해 주세요. 새로고침
EditText : Print : Mobile : FindPage : DeletePage : LikePages : Powered by MoniWiki : Last modified 2018-04-13 23:12:54

해가 들면 어떻고 바람이 불면 어떻고 눈이 오면 어떠랴. 해가 들어주어도 고맙고 바람이 불어주어도 고맙고 눈이 와주어도 고마울 뿐. 그렇다 고맙지 않은 것이 없다. 밤은 밤이어서 고맙고 새벽은 새벽이어서 고맙고 낮은 낮이어서 고맙다. 아 고마운 삼라만상이여! (정채봉)