shaitan's blog

長文書きたいときに使う.

TeXっぽいことを書けと言われたが

最近はTeX*1を触っていないのでネタがないのだが、書くと喜ぶ人がいるようなので昔twitterでつぶやいたネタの解説をする。

FizzBuzz問題。140文字以内にするのに苦労した記憶がある。

ちゃんとTeXで書いてある*2ので、適当なファイル(fizzbuzz.texとでもしよう)に保存して、tex fizzbuzz.texすれば、*が出てきて止まるので、\endと入れるとfizzbuzz.dviを出力してくれるはずである。いちいち入れるのが面倒な場合は末尾に\endを付けて保存しておけば大丈夫。*3

適宜分けて書く。

\let~\ifnum\let\c\newcount\let\a\advance

ここは文字数を削減するため、繰り返し出てくるコントロールシーケンスを短いものに割り当てている。
~はアクティブ文字(カテゴリーコード13)なので1文字で命令となる。\aや\cもあまり考えず名前を付けているので、何らかの文書に埋め込んで使うといった用途の場合、このあたりは修正した方が良いだろう。

\c\f\c\b\c\n

カウンタ\f,\b,\nを宣言(?)。0で初期化される。それぞれ、Fizz用、Buzz用、数字用のカウンタ。
なお、これらも衝突の危険があるため注意。

\loop~\n<100 ... \repeat

カウンタ\nを99まで回すループ。

\a\f1\a\b1\a\n1

カウンタ\f,\b,\nを1加算する。

~\f=3\f0Fizz\fi

\fが3になったら\fを0にしてFizzを出力。

~\b=5\b0Buzz\else~\f>0{\the\n}\fi\fi\ 

\bが5になったら\bを0にしてBuzzを出力し、
\bが5でないときに、\fが0でない(FizzもBuzzも出力されていない)ときには\nの値を出力。

\ 

それぞれの数に対応する出力の間の区切りのスペース。これだと最後に無駄なスペースが入ってしまうので改良の余地がある。

*1:ここではオリジナルのエンジンではなく、それに関連するもの全体を指している。多くの人がTeXと呼んでいるそれだと思っていただければよい。

*2:ここではLaTeXなどで定義された命令を使ってない、程度の意味

*3:実はオリジナルのtexエンジン使ったの初めてかもしれない。よく分からなかったのでTeXBookの6章を参照した。

東工大2010年前期3


n,mのカードを引くことと3k+3-n,3k+3-mのカードを引くことが一対一対応するので、大きいほうが3の倍数である確率もp(n)。したがってp(n)は一枚だけカードを引いたときにそれが3の倍数である確率に等しく、p(n)=\frac k{3k+2}

京大2005年後期理系問題6


求める確率は裏の出た100円玉の枚数より裏の出た500円玉の枚数の方が多い確率と等しく、投げたときにはこれらのいずれかの事象が起こり、かつ同時には起こらないから求める確率は\frac12

#######
どこまで書けばいいかよく分からない。
「いずれかの事象が起こり」「同時には起こらない」と書いてしまってるが、
表/裏の100円玉/500円玉(4通り)の枚数をN(表,100),N(表,500),N(裏,100),N(裏,500)とおくと、いずれの事象も起こらない場合、N(表,100)≧N(表,500)、N(裏,100)≧N(裏,500)であるが、n=N(表,100)+N(裏,100)≧N(表,500)+N(裏,500)=n+1より不適
みたいに書いとく方がいいのかな。

東工大11年AO II-1

g(x)=x^2+1とおくと、題意の条件はf\circ g(x)=g\circ f(x)と書ける。
また、g(x)-x=(x+\frac12)^2+\frac14>0よりg(x)>x……(*)。
g_0(x)=x, g_{k+1}(x)=g(g_k(x))とおくとg_k(x)は条件を満たす2^k次の多項式である。
以下、2^k (k=0,1,\ldots)次でないf(x)が存在しないことを示す。

0=f(g(x))-f(g(-x))=(f(x)-f(-x))(f(x)+f(-x))であるが、f(x)\pm f(-x)多項式であるからいずれか一方は恒等的に0である。
つまり、f(x)nの偶奇により偶関数か奇関数かのいずれかとなる。

(i)f(x)が奇関数のとき
f(0)=0であるから、f(g_k(0))=g_k(f(0))=g_k(0)となる。
ここで(*)よりg_k(0)の値は異なるkに対し相異なる。
従って、恒等的にf(x)=xであり、n=1=2^0である。

(ii)f(x)が偶関数のとき
(*)よりf(x)は定数関数ではないのでn>1
f(x)x^2=g(x)-1多項式として表せる。つまりg(x)多項式として表せる。
f(x)=h\circ g(x)とおくとh(x)\frac n2次の多項式であり、
f(x)の満たす条件に代入して h\circ g\circ g(x)=g\circ h\circ g(x)であるが、g(x)は1以上の任意の値をとるので恒等的に h\circ g(x)=g\circ h(x)
となるのでこれを繰り返すと条件を満たす奇数次の多項式が得られるが、(i)よりそれは恒等関数であるためn2^kと書ける。

東大1968年前期理系問題2(文系問題2)

正方形ABCDを底面とし、Vを原点とする正四角錐において、底面と斜面のなす二面角が45°のとき、となりあう二斜面のなす二面角を求めよ。

このABCDを一面とし、この四角錐V-ABCDを含む立方体ABCD-EFGHを考える。
底面と斜面のなす二面角が45°なので面ABVと面BCVはいずれも点Hを含むので点VはBH上にある。よって点Vはこの立方体の中心である。
BHを軸にこの立方体を120°回転させると元の立方体に移るが、このとき、点Aが点Cに移るようにできる。
この操作により点V,Bは変化しないので面VABがVCBに移る。
従ってとなりあう二斜面VABとVCBのなす二面角は120°である。


######
立方体まではいいのだが、その後の日本語をどう書くかというのは悩ましい。
合同な四面体V-ABFEとV-BCGFをもってきて、面EACでの断面を考える方が良かったのかも。

大学数学入試過去問題解答

shaitan.hatenablog.com
というのをまとめていたが、良さそうなページを見つけたので追加

東京大学 数学入試問題解答一覧
京都大学 数学入試問題解答一覧

京大2017年前期理系問題5

a≧0とする.
0\geq x\geq\sqrt2の範囲で曲線y=xe^{-x}, 直線y=ax, 直線x=\sqrt2によって囲まれた部分の面積をS(a)とする. 
このとき, S(a)の最小値を求めよ.
(ここで「囲まれた部分」とは, 上の曲線または直線のうち2つ以上で囲まれた部分を意味するものとする.)

直線\ell:y=xe^{-1}と曲線C:y=xe^{-x}の位置関係を考える。
\dfrac xe-xe^{-x}=x(e^{-1}-e^{-x})であるから、これらは点(0,0)と(1,e^{-1})を共有し、0< x<1の範囲ではCは\ellの上にあり、1< xでは\ellはCの上にある。

求める囲まれた部分のうち、y>axにあるものとy< axにあるものに分け、それらの領域をそれぞれA_1(a), A_2(a)、面積をそれぞれS_1(a), S_2(a)とする。そのような部分が存在しない場合は領域は空集合、面積は0とする。
直線\ellとy=axとx=1で囲まれた三角形と直線\ellとy=axとx=\sqrt2で囲まれた三角形は相似であり、相似比は1:\sqrt2であるから、直線\ellとy=axとx=1で囲まれた三角形と直線\ellとy=axとx=1とx=\sqrt2で囲まれた四角形の面積は等しい。この面積をS'とおく。
a>e^{-1}のとき、
A_1(a)A_1(e^{-1})に含まれ、A_1(e^{-1})からA_1(a)を取り除いた領域は直線\ellとy=axとx=1で囲まれた三角形に含まれるからS_1(a)-S_1(e^{-1})>-S'である。
同様にS_2(a)-S_2(e^{-1})>S'が言えるのでS(a)>S(e^{-1})
a< e^{-1}のとき、同様の議論によりS(a)>S(e^{-1})
従って、求める最小値はS(e^{-1})。以下、積分計算を行えば求まる。

#############
これは図を描いた方が分かりやすいよなあ(描く気はない)。