KTUGFaq

KTUG FAQ

로그인:
비밀번호:
가입
With clothes the new are best, with friends the old are best.
FrontPage › 작은나무/2008-03
Mar 30, 2008
Love at First Byte
Submitted by 작은나무 @ 03-30 [10:01 pm]

pdf: @LoveAtFirstByte.pdf (690.17 KB) src: @LoveAtFirstByte.tar.gz (227.17 KB)

Mar 27, 2008
두 개의 막대기
Submitted by 작은나무 @ 03-27 [09:47 pm]
회사 동료가 낸 수수께끼.
두 개의 막대기가 있다. 각 막대기의 한쪽 끝에 불을 붙여서
막대기가 모두 불에 타는데 걸리는 시간은 각각 1시간으로 같다.

그런데 각각의 막대기는 재질이 균일하지 않아서 타들어가는 속도가
늘 같지 않다. 어떤 부분은 빨리 타들어가고 어떤 부분은 아주 느리게 타고,
어쨌든 하나가 완전히 타는데는 1시간이 걸린다.

이러한 성질을 가진 두 개의 막대기로 45분을 잴 수 있을까?

만사가 그렇지만, 알고 보면 매우 쉽다. 그런데 이노무 TeX은 봐도 봐도 모르겠으니...

대충 정답을 짐작해 보면…

한 막대기에는 한쪽 끝에만 불을 붙이고, 다른 막대기에는 양쪽 끝에 불을 붙인다.
양쪽에 불붙인 막대기가 다 타면 한쪽 막대기의 나머지 끝에도 불을 붙인다.
두 막대기가 다 타면 45분 경과.
이게 정답 맞나요? -- Kunggom 2008-03-30 16:29:35

맞는거 같네요. -- 작은나무 2008-03-30 22:24:46

응용문제: 재질이 일정하지 않은 한 막대기의 한쪽 끝에 불을 붙여 다 타는 데 50분 걸린다고 한다. 그러한 또 하나의 막대기는 다 타는 데 10분 걸린다고 한다. 이 두 막대기로 잴 수 있는 시간은? --ischo

죄송한데요. 저는 이해가 잘 되지 않아요. 한쪽 끝에 불을 붙여 다 타는 데 1시간이 걸린다고 해서 양쪽끝을 동시에 붙이면 그게 다 타는데 30분이라는 걸 어케 알 수 있나요?

A├──────────────┤B

가령 A쪽에 불을 붙이면 30분까지는 1/10 만큼 타다가 나머지 30분간 9/10가 탈 수 있고요, B쪽에 불을 붙이면 59분 59초동안은 1/10 만큼 타다가 나머지 1초간 9/10 탈 수도 있잖겠어요? 그러면 양쪽에서 불을 붙여도 다 타버리지 않잖아요? -- Progress 2008-04-01 08:39:14

일단 전제가 하나의 막대기가 전소하는데 1시간이 걸리므로, 위에서 예로든 경우의 막대기는 모두 타는데는 1시간이 걸리지 않을 것 같습니다.

저도 수수께끼만 듣고 답은 듣지 못해서 정확한 답은 모르지만, Kunggom님과 같은 생각을 하고 있었습니다.

제 생각에, 문제에서 주어진 나무의 재질이 균일하지 않다고 하는 것은, 나무의 재질이 균일하다면 나무가 타들어가는 길이로 시간을 알 수 있으니까, 그러한 것을 방지하도록 한 것 같습니다.

따라서 나무의 재질이 균일하다고 하고 문제를 생각해도 될 것 같습니다.

단, 타들어간 길이로 시간을 재기 없기! -- 작은나무 2008-04-01 09:08:46

가정: 균질의 막대기는 어느 쪽에서 타들어 오든 단위시간당 타는 길이가 같다.

A||----------------|B

어떤 막대기의 A쪽 가까운 1/10만큼은 타는 데 30분 걸리는 재질이고 나머지 9/10는 타는 데 30분 걸리는 재질이라고 하자. 가정에 의해, 어느 쪽에서 불을 붙이든 30분 동안은 한 재질이 타고 나머지 30분 동안 남은 부분이 탄다. 이는 양쪽에서 동시에 불을 붙이면 다 타는 데 30분 걸린다는 것을 의미한다.

여러 재질이 섞여 있는 한시간짜리 막대기라면, 타들어 오는 방향에 관계없이 같은 재질을 태우는 시간이 동일하다는 가정하에서는, 한쪽에서 30분만큼 타고 다른쪽에서 30분만큼 타면 다 탄다. -- IsCho 2008-04-01 09:09:04

응용문제 답의 일부는...50분에 타는 막대를 긴거, 10분에 타는거를 자른거라 하여 자른거만으로 잴 수 있는 시간: 5분, 10분 긴거만으로는 25분, 50분 자른거-긴거를 직렬로 태워서 30분, 35분, 55분, 60분 자른거-긴거를 병렬로 태우면, 15분, 20분, 40분, 45분 결국 5분 간격으로 1시간을 재는 시계가 되나요~~~ -- 피라미 2008-04-01 09:55:59

평안하셨지요? 깔끔하게 정리하셨군요... "5분 단위로 1시간까지 잴 수 있다." 제가 22분 30초까지 생각하는 동안 벌써 한 시간까지 정리하셨네요. :-) -- IsCho 2008-04-01 10:17:06

학기가 벌써 3분의 1이 지납니다. 잘 지내시는지요...위의 Kunggom님 방식대로라면 답이 더 나올거 같은데 ..아이구 머리아파.. -- 피라미 2008-04-01 10:22:13

에구... 근데요. 저는 심정적으로는 동감하는데...

어떻게 타들어가든(화살표의 방향이 불을 붙어가는 방향이라하면)

A→B: 1시간, B→A: 1시간 걸리잖아요?

그런데 왜 A↔B 가 30분이냐는 것이지요. "알 수 없다"가 답 아닐까 해서요. 재질이 같으면야 trivial한 문제인데, 재질이 같지 않으면 문제가 있지 않나요? 즉 A1과 B1을 각각 A1∈{A, B}이고 B1∈{A, B}이고, A1은 A에 가깝고 B1은 B에 가까운 좌표라고 합시다. 이때 단위구간 A1과 B1에서 t|A1→B1|에 걸리는 시간과 t|A1←B1|에 걸리는 시간이 다를 수 있지 않나요? 이를 테면, A1에서 B1쪽으로 갈 때 더욱 맹렬하게 타는 화학반응(?)이 일어나는 데 비해, B1에서 A1쪽에서 갈 때는 느리게 타는 화학반응(?)이 있을 수 있지 않나요? (현실에서는 불가한 문젠가요?) @.@ -- Progress 2008-04-01 13:20:58

이런 논리 문제는 보통 관념적인 세계를 상정하고 푸는 것이기 때문에 현실적인 문제는 고려할 필요가 없을 것 같습니다. 이 문제는 어디까지나 ‘재질은 일정하지 않지만 한쪽에 불을 붙여서 정확히 1시간만에 타는 막대기가 있다’고 가정하고 푸는 것이니까요. 실제 세계에서는 이런 막대기를 만든다고 해도 여러 가지 오차가 있을 테니 ‘정확히’ 1시간만에 타지는 않겠지요. 하지만 이 문제의 막대기는 논리적이고 관념적인 세계의 막대기이기 때문에 그런 제약은 없는 셈입니다. -- Kunggom 2008-04-01 18:48:39

막대 A-B의 경우, A→B: 1시간, B→A: 1시간 걸리잖아요?

위의 문장을 근거로 하자면,
(짧은) 막대 A1-B1의 경우에도, A1→B1: x시간, B1→A1: x시간 걸린다고 봐야 하지 않겠어요? (x<1)

(물론 화학반응, 온도, 바람, 기압, 고도 등 여러 요소들은 어느 경우나 통제되어야 하겠지요...) -- IsCho 2008-04-02 03:08:26

\isqrt
Submitted by 작은나무 @ 03-27 [09:40 pm]
\newcount\x \newcount\nx \def\mysqrt#1{\x=#1 \nx=\x \isqrt{#1} \big\lfloor\sqrt{#1}\big\rfloor=\number\x} \def\isqrt#1{\nx=#1 \divide\nx by\x \advance\nx by\x \divide\nx by2 \ifnum\x=\nx \else\x=\nx \isqrt{#1}\fi} $\mysqrt{361}$

Mar 26, 2008
\llap, \hfil, \hfilneg
Submitted by 작은나무 @ 03-26 [10:57 pm]
$$\displaylines{x\equiv x;\hfil\llap{(1)}\hfilneg\cr \hbox{if}\quad x\equiv y\quad\hbox{then}\quad y\equiv x;\hfil\llap{(2)}\hfilneg\cr \hbox{if}\quad x\equiv y\quad\hbox{and}\quad y\equiv z\quad\hbox{then}\quad x\equiv z.\hfil\llap{(3)}\hfilneg\cr}$$

Mar 23, 2008
Character constants
Submitted by 작은나무 @ 03-23 [11:56 pm]
매크로를 작성하다보면, 숫자 상수(numeric constant)가 필요할 경우가 종종 있다.

65를 값으로 갖는 \const라는 이름의 숫자 상수를 만들고자 한다. 어떻게 하면 될까?

먼저 떠오르는 방법은,
\newcount\const \const=65
가장 무난하지만, 카운트 레지스터를 이용하므로 메모리 사용에 낭비를 초래하는 단점이 있다.

카운트 레지스터를 사용하지 않는 방법으로 다음을 생각할 수 있다.
\def\const{65}
첫번째 방법보다는 낫지만, \const는 매크로이므로 그 값을 얻기 위해서는 전개(expand) 해야 하고, 텍은 그 특성상 숫자가 아닌 토큰이 나올 때까지 토큰을 계속 전개하므로, \const 바로 뒤에 매크로가 나온다면, 그 매크로도 전개된다.

마지막 방법은,
\chardef\const=65
이 방법이 해답이라고 할 수 있다. 위와 같이 정의된 \const는 그가 처한 상황에 따라서 문자 또는 숫자로 사용될 수 있다.
\const BCD
와 같은 상황에서 \const는 \char65인 'A'로 사용되어 ABCD가 된다. 하지만,
\advance\total by\const 
라고 하면, 문자 'A'가 아닌 숫자 65로 사용되어, \total이라는 카운트 레지스터 값에 65를 더하게 된다.

이처럼 chardef로 상수를 정하는 방법은 첫 번째 경우처럼 카우트 레지스터를 사용한다는 단점도 없고, 두번째 방법처럼 매크로를 전개할 필요도 없다.

하지만 chardef로는 0부터 255까지의 숫자 밖에 사용할 수 없다.

255보다 큰 숫자 상수는 \mathchardef를 사용하면 된다. 이는 32767("7FFF) 까지 가능하다

\everypar
Submitted by 작은나무 @ 03-23 [10:39 pm]
\font\init=cmbx10 scaled 2488 \def\Hang#1{\leavevmode \hbox to 0pt {\hss \raise 1.4ex \vbox to 0pt{\hbox to 1cm{\init #1\hss}\vss}}% } \hsize=8.5cm \parskip=10pt \parindent=0pt \everypar={\hangindent=1cm \hangafter=-2 \Hang} This is an old-fashioned mediaeval paragraph that has lots of text and a very long first sentence. The second sentence is also long, and only serves the purpose to make this more than 2 or so lines long. For good measure we throw in a third line which should make this four lines long, if not five with a little luck. Also, the second paragraph is an old-fashioned mediaeval paragraph that has lots of text and a very long first sentence. The second sentence is also long, and only serves the purpose to make this more than 2 or so lines long. For good measure we throw in a third line which should make this four lines long, if not five with a little luck. \bye

Mar 22, 2008
컴백
Submitted by 작은나무 @ 03-22 [08:39 pm]
아르헨티나 땅에 발을 디뎠던 그 순간

이 글을 쓴 사람은 사라지고 없는 셈이다.

이 글을 다시 구성하며 다듬는 나는 더 이상 예전의 내가 아니다.

"우리의 위대한 아메리카 대륙"을 방랑하는 동안

나는 생각보다 더 많이 변했다. -- Che Guevara