/*
누워서 읽는 알고리즘에 본 팰린드롬을 만들어 봤습니다.
ses, 기러기, eye 이런 앞뒤가 바뀌어도 같은 글자가 되는 것을 보고 팰린드롬이라고 한답니다.
정확히 일치하는 것은 아니지만 대부분의 수가 이 팰린드롬을 만족한다고 합니다.
한자리 수는 상관 없겠고
13과 같은 경우
13 + 31
44 가 되어서 만족하고
87의 경우
87 + 78
165 + 561 = 726
726 + 627 = 1353
1353 + 3531 = 4884 가 되어서 만족합니다.
즉 계속 팰린드롬을 수행하면서 연산을 해나가면 언젠가는 팰린드롬을 만족하는 것입니다.
물론 완벽히 적용되는지는 아직 알 수 없다고 합니다. 196을 넣으면 UInt64의 범위가 벗어 나버려서
자바의 경우 더 큰 수 처리를 위한 클래스가 있었는데(쓴지 오래되 클래스 이름조차 기억안남) C#도 물론 있겠죠. (찾아보지 않아서 잘 모르겠슴)
어찌되었던 196은 현재 7천만개의 숫자까지 진행되고 있다고 합니다.
누워서 읽는 알고리즘 재미있네요 이 전에 나온 행복한 프로그래밍도 재미있게 봤었는데...
잡지 마소에 칼럼 1월에 썼던데 이 사람... 프로그래밍 하다 짜증날때 보면 행복해지는 책이 될 것
같습니다.
*/
using System;
namespace Palindrome
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
Class1 ob=new Class1();
string str=null;
Console.WriteLine("팰린드롬을 계산할 수를 입력하세요");
str=Console.ReadLine();
ulong x=0, y=0;
x=UInt64.Parse(str);
try
{
while(true)
{
x+=y;
char[] t=x.ToString().ToCharArray();
Array.Reverse(t);
y=UInt64.Parse(new string(t));
Console.WriteLine("X={0}\t Y={1}",x,y);
if(ob.isPalindrome(x))
{
break;
}
}
}
catch
{
Console.WriteLine("ERROR 발생");
}
}
//팰린드롬인지 확인 한다.
bool isPalindrome(ulong val)
{
char[] str= val.ToString().ToCharArray();
char[] temp=new char[str.Length];
temp=(char[])str.Clone();
Array.Reverse(str);
ulong x=UInt64.Parse(new string(temp));
ulong y=UInt64.Parse(new string(str));
if(x==y)
{
return true;
}
else
{
return false;
}
}
}
}
'프로그래밍 > .net' 카테고리의 다른 글
ASP.NET으로 db연동 (0) | 2007.06.11 |
---|---|
ASP를 연습하려고 블로그를 만들었다 (0) | 2007.06.11 |
[펌] 닷넷 프레임웍과 델파이의 미래에 대해서..(2) (0) | 2007.06.11 |
[펌] 닷넷 프레임웍과 델파이의 미래에 대해서..(1) (0) | 2007.06.11 |