KTUG 한국 텍 사용자 그룹

Menu

KTUG :: 마당자유글 › 재미로 해보는 피보나치 수열

nanim | 2015.01.09 04:12:43 | 메뉴 건너뛰기 쓰기

LaTeX3를 가지고 피보나치 수열 생성 함수를 만들어봤습니다.

꼬랑지 재귀가 잘 될는지 궁금해서 해본 것인데 뭐... 대략 잘 되는 듯요.

\fibo_iter:nnn 함수의 마지막에 자기 자신을 다시 호출하고 있습니다.


들리는 소문에 모 회사의 입사시험 문제였다고도 하는데, 설마 LaTeX으로 이걸 풀면 점수 줄까나요?


하는 김에 expl3에 있는 floating point 데이터타입을 이용해서 인접한 항의 비를 구했습니다. 황금비로 수렴해가는 거랍니다.


\cs_new:Npn \fibo_iter:nnn #1 #2 #3
{
    \int_compare:nTF { #1 = 0 }
    {
        \int_set:Nn \output_int { #2 }
    }
    {
        \fibo_iter:nnn { \int_eval:n { #1 - 1 } } { #3 } { \int_eval:n { #3 + #2 } }
    }
}


\NewDocumentCommand \fibo { m }
{
    \fibo_iter:nnn { #1 } { 0 } { 1 }
    $\mathrm{F}\c_math_subscript_token {#1} = \int_use:N \output_int$
}



말하자면, 다음과 같은 코드의 expl3 판입니다.


\makeatletter
\newcount\outputcnt
\long\def\fibo#1{%
   \@fibo{#1}{0}{1}%
   $f_{#1} = \the\outputcnt$ \par
}
\def\@fibo#1#2#3{%
   \ifnum0=#1
      \outputcnt=#2
   \else
      \@fibo{\numexpr#1-1\relax}{#3}{\numexpr#3+#2\relax}%
   \fi
}
\makeatother


스크린샷 2015-01-09 오전 4.11.02.png

첨부 [2]

댓글 [14]

댓글 쓰기

목록 삭제

KTUG 한국 텍 사용자 그룹