KTUG마당은 KTUG를 방문하는 모든 이용자가 대화를 나누고 소식을 전하는 곳입니다.

  • 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
  • Team Blog의 글을 이곳 게시판의 "정보글"로 모았습니다. Team blog는 기고자가 올린 글에 질문을 받는 부담을 줄이기 위하여 댓글을 허용하지 않았습니다. 그러나 이곳 게시판으로 모으면서 댓글을 달 수 있습니다. 게시물을 작성하실 때 댓글을 원하지 않으시면 댓글을 허용하시지 않으시기를 바랍니다. 또한 불필요한 소모성 댓글을 달지 않도록 주의하여 주시기를 바랍니다.
  • TeX과 관련된 질문이나 답변은 QnA 마당을 이용하십시오. TeX과 관련된 질문은 지웁니다
  • MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
  • 스팸 글을 막기 위하여 짧은 시간 내에 다시 글이 등록되는 IP를 막거나, 광고 글을 막기 위하여 금지어로 .com, .net 등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
    • 금지어에서 stackexchange, stackoverflow, ctan, overleaf, , github, google.com, gmail.com, .org, .io, sil.org, wiki.com, tistory.com등은 해제하였습니다.
  • 사용하는 편집기는 CKeditor입니다. 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한줄을 비웁니다. 글줄만 바꾸려면 shift-enter 를 누르시면 <BR>가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.

자유글 재미로 해보는 피보나치 수열

2015.01.09 04:12

nanim 조회 수:28019

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




XE Login