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
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
댓글 14
-
likesam
2015.01.09 14:24
-
작나
2015.01.09 22:01
앞에 있는 계단을 오르려 합니다.
나는 계단을 한 번에 한 계단 혹은 두 계단씩 오를 수 있습니다.
계단이 총 n개로 되어있다면, 이 계단을 오르는 방법의 수는 모두 몇 가지 일까요?
-
nanim
2015.01.10 14:55
n번째 계단까지 가려면,
- (n-1)번째 계단까지만 가면 거기서 n번째로 가는 방법은 유일하니까, 일단 (n-1)번째 계단까지 가는 방법의 수를 구하고,
- (n-2)번째 계단까지만 가면 거기서 두 계단 오르기로 n번째 계단까지 가는 방법은 유일하니까, (n-2)번째 계단까지 가는 방법의 수를 구하여
n번째 계단까지 가는 방법의 수 = (n-1)번째 계단까지 가는 방법의 수 + (n-2)번째 계단까지 가는 방법의 수.
-
작나
2015.01.10 15:20
그래서 n번째 계단까지 가는 방법의 수를 \(f(n)\)이라고 하면, 이 문제의 해답은 설명하신대로
\[f(n)=f(n-1)+f(n-2), \quad f(1)=1, f(2)=2\]가 됩니다. 피보나치 수열! 참고로, 미쿡 페북 본사의 소프트웨어 개발자의 입사 면접 문제였다고 합니다.
-
DohyunKim
2015.01.11 14:59
$$ f(2) = 2 $$ 가 되어야 하지 않나요? 한 계단씩 올라가는 경우와 두 계단을 한꺼번에 올라가는 경우가 있으니까요.
-
작나
2015.01.11 16:59
네, 그렇습니다.
-
nanim
2015.01.11 17:18
그냥 "언어적 오류"인 듯. "계단의 수"가 명확한 의미로 주어지지 않아서 생기는 문제겠지요.
\(n\)을 올라가는 사람이 설 수 있는 플로어의 수라고 생각하면
출발점, \(f(1)\)
상자를 하나 쌓아서 올라갈 플로어가 2개가 된 상황을 \(f(2)\)
\(f(2)=f(1)=1\)입니다.
-
DohyunKim
2015.01.12 15:54
네, 그렇게도 이해할 수 있겠습니다. 우리는 건물 지상층을 1층이라고 여기며 살고 있으니까요.
유럽 친구들은 우리의 2층을 1층이라고 부릅니다. 저는 유럽식으로 생각했네요.
-
지나가다
2015.01.11 05:15
여기서 유일성(밑에 분이 말씀하신 배반사건)은 어떻게 증명하나요?
-
nanim
2015.01.11 18:02
문제에 "한 번에 한 계단 또는 두 계단을 오를 수 있습니다."
이것은 either... or 조건으로서 배반사건입니다.
그리고 "유일성"은 이 문제의 전제와 동일한 의미입니다.
-
참가번호2
2015.01.10 18:11
n개의 계단을 오르는 방법의 수를 a_n 이라고 하면
첫번째 발걸음을 한 계단을 오르면 남은 n-1 개의 계단을 오르고
첫번째 발걸음을 두 계단을 오르면 남은 n-2 개의 계단을 오르면 되므로
그리고
위의 두 사건은 서로 배반사건이므로
a_n=a_{n-1}+a_{n-2}.
-
처음처럼
2015.01.12 14:41
야~~!!!
Tex 이.. C 풀그램을.. 하디니.. 대단~@!! 그리고 충격!! ㅡ.ㅜ
-
처음처럼
2015.01.12 15:21
제가 수학쌤이라 ㅎ.. 한번 답변을 드릴게요~
일단.. 위에 말씀하신 모든 루틴과 댓글은.. 정답이 될수 있습니다.
피보나치 수열이 아름다운건.. "자기 반복"입니다. 이것이 자연의 이치에 있다는 것을 과학적으로 밝혀냈기 때문이죠
질문한것 중에 중요한 것은 초기 조건입니다.
f(0)=f(1)=1, f(n+2)=f(n+1)+f(n)
을 만족하는 무한수열은 피보나치수열이고, 초기조건인 f(0)과 f(1)이 같지않은 복잡한 수열을 루카스수열이라고 합니다.
질문하신 수열은... 초기 조건만 따지면, 루카스 수열입니다.
-
Progress
2015.01.16 08:50
초기조건인 f(0)과 f(1)이 같지않은 복잡한 수열을 루카스수열이라고 합니다.
스타워즈 만든 조지 루카스인가요? :)
> 들리는 소문에 모 회사의 입사시험 문제였다고도 하는데, 설마 LaTeX으로 이걸 풀면 점수 줄까나요?
소프트웨어 개발사 : 이건 무슨 언어인가요?
출판사 : 그냥 타이핑 치면 되지, 왜 이렇게 어렵게 하나요?
라는 답을 받지 않을까요?