codeEagle[] :: 피보나치 + 팩토리얼
글쓴이: cppig1995 / 작성시간: 수, 2008/01/02 - 7:38오후
일종의 코드 골프 글타래입니다.
* 피보나치 수열과 팩토리얼을 구하는 라이브러리를 작성한다.
* 사용법에는 상관이 없다. 그러나 꼼수로 인정될 만한 방법은 안 된다.
* 사용 언어에는 제한이 없되, 프로그래밍 언어의 기본 기능만 사용해야 한다.
* 언어 표준에 의해 이 프로그램이 23번째 피보나치 수, 7!까지 구할 수 있어야 합니다. (솔직히 C, C++ 때문에 생긴 제한입니다.)
* 계산할 숫자는 컴파일 시간에 주어짐.
정도입니다.
일단 시작은 가볍게 C++로 해보겠습니다. 150바이트입니다. (개행 = 1바이트, 마지막 개행은 세지 않음)
#define T template< #define S(s,x) >struct s{enum{_=x};}; T int n S(F,F<n-2>::_+F<n-1>::_)T S(F<2>,1)T S(F<1>,1)T int n S(f,f<n-1>::_*n)T S(f<0>,1)
시간복잡도가 O(0)입니다.
사실, 실행 시간에 아무 것도 하지 않는데다, 컴파일러가 알아서 기존에 구했던 값에 캐시를 적용해 줍니다.
피보나치 수열의 n번째 숫자를 구하려면 F::_를, n!을 구하려면 f::_를 하면 됩니다.
...많은 /*괴악한 괴수*/ 분들의 참여 부탁드리겠습니다.
Forums:
하스켈
펙토리얼(17bytes)
f n=product[1..n]
피보나치(45bytes)
f=(g!!)where g@(x:y)=1:1:[a+b|(a,b)<-zip g y]
------------------------
http://agbird.egloos.com
------------------------
http://agbird.egloos.com
팀장어 ...
http://kldp.org/node/89814 읽고 내일까지 보고해.
---------
귓가에 햇살을 받으며 석양까지 행복한 여행을...
웃으며 떠나갔던 것처럼 미소를 띠고 돌아와 마침내 평안하기를...
- 엘프의 인사, 드래곤 라자, 이영도
즐겁게 놀아보자.
http://akpil.egloos.com
---------
귓가에 햇살을 받으며 석양까지 행복한 여행을...
웃으며 떠나갔던 것처럼 미소를 띠고 돌아와 마침내 평안하기를...
- 엘프의 인사, 드래곤 라자, 이영도
즐겁게 놀아보자.
루비로 해봤습니다.
팩토리얼
함수를 사용할 필요 없다고 하면
n이 항상 양수라고 가정하면
피보나치수열은 제가 참여하고 있는 코드골프 문제가 있기 때문에 비공개 :P