TSG 部報 201 号 〔駒祭総決起コンパ号〕


「狼が来たぞー。」 --More--
  ----------           ------------      ------------
  |..)./*..|           |..ddd.....|      |......+=..|
  |.>......+###########..ddd...$...######....^......|
  -------.--           |.dd.....!.|      |......[...|
         #             ----...-----      |......._..|
         #                ##@ #          ------------
       ###              ## ###
       #               .---...-----       ------
    ---+---           #|..@..@....|       |....|
    |     |          # |....@.....+#######+...<|
    |     |            |..@.@@....|       ------
    -------            ------------

TSGer ギーグ  強:15 早:16 耐:16 知:12 賢:15 魅:7  中立
地下:4  $:47  体:48(68) 魔:7(7) 鎧:2  経験:5 歩:1532

目次


占い

すーゆー

今年の駒場祭のTSG占い企画は「13星座星占い」をやります (予定)。 かつて、部長の命令のもと各自が持ってきた占いの案の中から、 長い論議の末に多数決という極めてありきたりな方法によって選ばれたのでした。 最近ブームになりかけているので話題性としてはいい線だと思います。

プログラムは、プリンタ制御のめんどくささから WinAPI を用いての共通化を 目論んでいるので WinAPP となります。そして、開発環境は MSVC 4.0 しか 無いため、自然と Win32 になってしまいました。BC 3.1 もあるにはあるので Win16 でもよかったのですが、今回 MFC を使ってみて MS に染まるのも予備知識 としては悪くないかなと考えたのです。

肝心の現在の進行状況ですが、皆さんにデータを入力していただいている 最中です (予定)。ただ、プログラムの方が MFC に染まっているわけで 当然のことながらインターフェースが事務的になってしまいがちである等、 問題が山積しています。 いざとなったら、印刷をテキストのみにして DOS に落ちてしまうかも知れません。 今思い付いたのですが、インターフェースは html にして Netscape で客に 操作させたら良いかもしれませんね。あっ、これ結構いいかも!

肝心の惑星の位置計算は現在、どこぞの PACK8K にユリウス歴を用いるという よくわからない BASIC のプログラムがあったので、それを移植して代用して います。しかし、一昨年のソースを頂いたので、せっかくだからそれを使って 軌道計算してみようと思い、現在企画副担当のばんだい君に作成を依頼しています。 僕のほうもインターフェース&印刷が終わったらそちらに移る予定ですが、 どうなるかは駒祭前日までわかりません。もしかしたら、1日目と2日目では 計算結果が微妙に異なるということも有り得ます (笑)。もちろんできるだけ 前日には完成しているように努力はするつもりです。


フライトシミュレーター

高野

とりあえずなんか3Dもんをやる予定でいます:-)

もっともこの企画は部長であるわたる氏指導のもとでわたしがサブに回り、彼 がメインプログラム、私がその回りの小物を作る予定でした。が、その部長は 結核のため (マジ) 入院していまい、私が主導になって行わなくてはならなく なりました。(T_T) といってもこの企画に関わっていたのは私と部長 の二人だけだったのでその気になればつぶしてしまうこともできたのですが、 それでは部長の遺作となった (^^;;; ポリゴンライブラリが無用の長 物になって、きっと彼も浮かばれず、生き霊として私を苦しめるに違いないと 思ったので、規模を縮小してでも企画を続行することに決めました。:-)

はじめはフライトシュミレーターのドッグファイトをやる予定だったのですが 陸地で飛び回るよりも、宇宙に出た方がめんどくさい計算なども考えずにすむ と思ったので、まずはそう企画変更しました。あと、音を出すにもドライバー が必要なのですが、今回は使ったコンパイラーが djgpp という DOS-Extender なの でリアルモード用のドライバーは使えません。自分でかかなきゃならんのです がこれも面倒と言うことで音は鳴らさない。これで大分軽くなりました。ただ 対戦ものにするかどうかは最後まで悩んでいたのですが、どうやら竹島氏がそ この部分を手伝ってくれそうなのでなんとかできそう、、、できるでしょう、 、できるといいなぁ...(^^;;;

とまあ、企画は着実に進むはず... だったのが大幅な路線変更が求められて しまったのではたして自分でも満足のいくまともなものが作れるのかはたはた 疑問ですが、まぁあと一ヶ月頑張ってみようと思います。


command.comtcommand のおはなし。

竹島

いつのまにか、こんなものを書くことになっちゃってました。けど、書いてい る本人もあんまりよくわかっていないので、そのつもりで読んでください。はっ きりいって内容はかなりかったりー分類に入る上に、ある程度の予備知識が必 要な原稿なので、読み飛ばしちゃったほうがいいかもしれません (^_^;

では前置きはここまでにして、

MS-DOS の command.com には、大きく分けると4つの機能があります。

  1. ユーザからコマンドを受け取る。
  2. ユーザのコマンドを解釈し、実行する。内部コマンドでなければ子プロセスを起動する。パイプ、リダイレクトも実現する。
  3. バッチファイルを実行する。
  4. command /c コマンド名 という形式で、他のプログラムに代わりコマンドの解釈を行う。

tcommand は command.com がなくても動く必要があるので、これを全部自分で 作ります。1.では、1行編集やヒストリを作ります。どこにでもあるルーチン ですが、ヒストリのバッファは MS-DOS のメモリの制限から EMS に確保する ことになります。このへんはかったるいのでパス (^_^;

2.の解釈ルーチンで、いくつか注意することがあります。まず、パイプ記号 '|'は 0x7C というコードなので、シフト JIS の2バイト目のときもあ ります(;_;) しょーがないので、パラメータの最初からシフト JIS 判 定をします。例えば C(or C++) 言語ならこんなふうにして避けることができま す。ここでは文字を unsigned char で扱っていますが、signed char のとき も同様です。

/* シフト JIS の1バイト目であるかをチェックする */
int iskanji(unsigned char c)
{
	if ((0x81 <= c && c <= 0x9f) || (0xE0 <= c && c <= 0xfc)) return 1;
	return 0;
}

/* パイプのチェックルーチン */
/* unsigned char *p; に、パラメータの先頭アドレスを入れておきます。 */

	while (*p != '\0') {
		if (*p == '|') {/* パイプ記号を検出したときの処理 */ p++;}
		else if (iskanji(*p++)) {
			/* ヘンな文字列でもハングしないように */
			if (*p == '\0') break;
			else p++; /* 2バイト目なので無視 */
		}
	}
	/* パイプ記号はなかった */

シフト JIS では、パスの区切りを表す '\' も 0x5C なので、パスを 扱うたびにこういう問題に悩まされるわけです。あまり知られていないようで すが、MS-DOS 本体は、パスの区切り文字として '/' でも '\' でも同じように扱います。ですから、手抜きするのなら、'\' は '/' に変換すればおしまいです。別に 0x7C と同じように扱ってもい いですけど。'/' を '\' に戻すのは簡単なので、内部では '/' で処理して、画面表示のときは '\' で表示すれば普通の プログラムにも使えます。シフト JIS はこういうの全然考えていないので困 りますね。JIS や EUC では不要な判定ルーチンで余計な手間がかかってしま います。

さて、子プロセスを呼ぶルーチンですが、まず、環境変数 PATH を見てフルパ ス名に変換します。そのあと、システムコールを使って呼び出すわけですが、 C言語に用意されている exec/spawn 系の関数では、やってみると分かります がかなり空き(メイン)メモリがかなり減ってしまいます (tcommand なら、40K バイト程度減少します)。すべてのコードをメモリにおいているのですから当 然です。そこで、ローダとメインルーチンに分け、子プロセスを呼ぶときにメ インルーチンを解放してしまいます。速度を犠牲になりますが、これが一番簡 単な方法です。もし、速度もほしいのなら XMS や EMS にメインルーチンを保 存しておけばいいのですが、まあそこまでする必要もないでしょう。あと、ロー ダをCで書くとでかくなる (といっても2、3K程度ですが) のでアセンブラで書 くようにします。

パイプはリダイレクトを組み合わせて実現します。簡単にいえば、

A>DIR /B | SORT

は、

A>DIR /B >AACADBAA
A>SORT<AACADBAA
A>DEL AACADBAA

のように処理します。これは MS-DOS がシングルタスク OS なので仕方がないです。 リダイレクトなら、標準入出力をファイルに置き換えるだけで実現できます。

3.では、ファイルから1行ずつ読んで2.のルーチンに渡すだけです。おもしろくな いのでこれもパス。 4.も、2.のルーチンに渡すだけです。結局、command.com のメインルーチンは 2. であることになります。

ということでやっと終わりました。かったりー原稿につきあってくれた方、どうもです 。tcommand は駒場祭に展示される予定ですので、そっちも見てやってください (__)


RPG PROJECT

うえ

1. RPG PROJECTとは?

RPG PROJECTがスタートしたのは、6月あたりのことでした。それから、数多 くの話し合いやプログラムを経て、現在の状況に至っています。このRPGの特 徴といえば、「タクティカルバトル」「シナリオ選択制」「スキルレベルを採 用」「死んだら基本的に生き返らない」「セーブはシナリオの途中だと1度ロー ドすると消える方式を取る。」などなど、なかなか味のあるRPGになっており ます。(ただの制作者の趣味だったりする。)

2. RPG PROJECTに関わっている人々

プログラマーは、村井さんと花岡君 (う゛ぇあ) です。最近のプログラムの ソースを見ると、そのinclude文や、関数の多さに圧倒されます。ソース自体 も非常に長くなっており、これからの苦労が容易に予想できる状態です。あと 1ヶ月、がんばってもらうしかない!

ゲームシステムとデータ、音楽は植原 (うえ) が担当しています。ゲームシ ステムは上にも書いたように僕の趣味をもろに出しています。(タクティクス・ オウガとソード・ワールドRPGを足して2で割ったような物になる予定。) しか し、設定すべきデータの多いこと多いこと・・。あと、音楽に関しては好きな CDから読み込んで演奏するか、RPG用に作った音楽を演奏するか選択できる物 になるはずです。

グラフィッカーは野村さん (窓明) と村井さんです。HEというエディタを使っ た、きれいなドット絵が出来ています。(野村さんのモンスターは特によいで す。) ただ、要求されるグラフィックの量は非常に多く、まだまだグラフィッ カーが足りない状況です。グラフィッカー大募集! (もちろん他のスタッフも 募集してます。)

あと、CDから音楽を呼び出すプログラムと、FMPで音楽を鳴らすプログラムを 竹島さんが作っています。CDから呼び出すプログラムはどれくらい進んでいる のでしょう。(僕はよく分かっていない。)

シナリオに関しては、みんなで少しずつ書くことになっています。この内容 については次の章で。

3. RPG PROGECTの内容

はじめにも書きましたが、一応「シナリオ選択制」のRPGになる予定です。 (つまりテーブルトーク・RPGみたいな物) このシナリオについては今のところ いくつか出ていますが、受けが良かったのは「Qハチ君を倒せ」というもので、 その名のとうりCanbeなどで活躍しているQハチ君がボスだというシナリオです。 その後、「実はQハチ君の背後にビル・ゲイツ (仮名) が潜んでおり、彼が真 のボスであった」というシナリオに変更されています。しかし、こんな物を一 般に出すのはどうか、ということでこのシナリオはTSG限定版になるかもしれ ません。 個人的な趣味ですが、基本的に勧善懲悪物のストーリーは作りたく ないです。むしろ、悪いことをした方が儲かる、人の良心に訴える (?) シナ リオがいいと思っています。まあ、RPGによくあるシナリオも用意するつもり ですが。(探索物、救出物など)

戦闘シーンはタクティカルコンバットになっています。(見たい人は305の 9821の村井さんのディレクトリにあるTACBATを立ち上げて下さい。) ロードス 島戦記の戦闘シーンによく似ています。(というか、村井さんによると、ロー ドス以外のRPGをやったことがないので、そのほかの形では作りにくかったそ うです。) 広範囲魔法なども設定されており、なかなか愉快です。

レベルはスキル制です。つまり、「剣レベル6,弓レベル3,白魔法レベル4」な どといった形式になっています。戦闘に置いてはとった行動におおじて経験値 が入り、シナリオをクリアすると好きなスキルに振り分けられる経験値が手に はいるようになっています。

4. そして駒祭へ・・

駒祭まであと約1ヶ月。RPG PROJECTも追い込みに入りました。たとえ完成し たとしても、デバッグやゲームバランスの調整にかなり時間がかかる物と思わ れます。駒祭直前に徹夜を繰り返さずにすむように、今のうちに十分作業をやっ ておく必要があります。それでは関係者の皆さん、頑張りましょう。


大気のシミュレーション...

Aleph-NULL

1. ぷろろーぐ

えーと、駒場祭の企画はいくつあるのでしょう (^^;

このネタは没にしようと思ってるのですが... 一応書いておきましょう。

僕がやろうとしてたのは*1 地球の大気の状態をシミュレートしてやろうというプロジェクトです。

もちろん天気予報なんてできるわけありません :) が、 とりあえず太陽定数と温室現象にともなう不思議な振舞いを 再現できればと思ったのがことの始まりです。

実はこの内容というのは数学科にいっても地球流体をやっている 林先生の全学自由研究ゼミナール「地球流体力学入門」の 内容そのままです。このゼミも参加者3名というのんきなぜみで、 しかも僕以外はプログラミングの経験無しということもあって ぜんぜん進まなかったのですが、なかなか愉快なゼミです。

http://dennou.ms.u-tokyo.ac.jp/ なんてのも御覧下さい。

2. できること

2.1 南北

南北1次元モデルというものがあります。要するに、太陽光線の 入射量と熱の移動から、南北方向の熱の分布を再現するものです。

普通に考えれば、熱の分布なんてものは、太陽からの熱量の変化に 対して連続変化をしても良さそうなものですが、

       太陽定数減少
            ↓
    入ってくる熱量減少 ←  地表の反射増加
            ↓                   ↑
       地表温度低下    → 一部の大地が氷結

という positive feedback があるために、意外な変化をします。 具体的には、ある程度以上太陽の光が弱くなると、急に全地表面が 赤道まで凍結してしまいます。緯度にして約 60°より赤道よりに 氷線*2 が来ることはないのです。

2.2 上下

なんにも特別なことがなければ、上下方向の熱の分布は熱圏の手前までは 指数的に単調減少するはずです。これは、下からの入射をある層の大気が吸収して、 あらゆる方向に放射するはずなので、単純な微分方程式ですね。 これを灰色大気というそうです。太陽からの上からの入射は素通りすると 仮定していますからね。実際太陽からの入射が 6000K 相当、 地球からの放射は 300K 相当なので、大気の吸収はかなり違います。

ところが、実際には2つの余計なファクターがあります。

1つは対流の存在で、地表付近では断熱膨張の温度変化より上記の 放射平衡の温度変化が急になるので、対流でその差を埋めてしまいます。 もう1つはオゾン層の存在で、このために中間圏という逆転層が存在します。

さて、オゾン層でない普通の大気にも温室効果物質というものは存在します。 水蒸気とかですね。さて、こういう物質を増やしていくとどうなるでしょう。

       温室効果物質増加
              ↓
    地球放射の大気吸収増加 ← 水蒸気量増加
              ↓                   ↑
      地表付近の温度上昇   →  海水の蒸発

またも positive feedback です (^^)。というわけで、 ある程度以上いくとこのループが暴走しまして、 海はどっかにいっちゃいます。 これを暴走温室効果といいます。

3. その後

さて、僕がやりたかったのは、この2つを組み合わせたシミュレーション モデルを作って、実際に動的にパラメータを変更して、暴走を 目に見えるようにしようと思ったのでした。

ところが、ふと気がつきました。

グラフを見てわかる人って何人いるんだろう (いねー

終ってますね (^^;

[IMAGE]

一応説明しておくと、x 軸が緯度の sin φ です。y 軸が温度です。 不連続なところが氷線です。っていっても興味ほとんどわかないでしょ (^^;

でもビジュアルにしようと思うといろいろ問題が出てきます。

そんなこんなで、挫折しました。

4. えぴろーぐ

個人的にまだやりたいなーという気はあります。が、とても 時間的に駒場祭に出せるものではありません。

やりはじめると、TSGer 名簿編集が崩壊しそうなので、手をつけるのは 現時点であえて避けています。

とりあえずハンズ大賞は遠慮しておきます。(^^;

というわけで事前に予告しておくと。

現時点でこれを企画に作り上げる気はあまりありません。

まぁ気が向いたら手をつけます、ということで...

5. ぽすとすくりぷと

時間割表をぼーっとながめていました。

「お、『続地球流体力学入門』なんてのがあるやんけ。」

しかし良く見ると、必修と重なっています (T_T)

しょうがないので、必修の演習が終ってから、資料だけもらおうかと 教室である数理科学科の某計算機室にいきました。

「今日だれも来なかったよ。」

うーむ (^^;

だれも受講者がいないと資料作らないらしいので、資料がないのと 僕が困るのでだれか受講して下さい。(ぉ

─────────
*1 すでに過去形 :)
*2 地表凍結地域の境界線


Making of ぶほ

編集長の孤独な日々 (嘘)
Aleph-NULL

さて、穴埋めもいいところですが、部報のできるまでです。 *1

企画

まずは、いつごろ部報を出すかを決めます。あわせて、何をメインに持ってくるかも きめちゃいます。といっても、大体はイベントに合わせて出すので、内容は 自ずと決まりますね。200号みたいに中途半端にだすものだと、ねたあつめに 困ります。

本当は、「プログラミング特集号」みたいなのも作りたいのですが、 今年はライター不足に悩まされています (ぉ

ここらで、原稿の大体の量も予測しなければいけません。予測を誤ると、 今号のような困った状況になります。(^^;;

原稿集め

ねたがきまると、いぬ。に原稿の募集を流すなどして原稿の回収に勤めます。 だいたい何もいわなくても締切日に原稿が届くことはまずありません。いつ載 せてもいいような原稿、たとえばくりすさんの「文字コードの話」とか、 Sumii さんの特別寄稿「Linux お気楽デバイスドライバ」のような 一般記事は投稿されてから企画に組み込むので困ることはないのですが、 今号のようなねただと、原稿が集まるのはまず印刷日の前日です。

編集

原稿が集まり出すと、編集を始めます。

今年は編集は見ればわかる通り LaTeX を使っています。スタイルファイルは、 僕が高校の時に作った jbook の改造版を使っています。同時に、同じマクロ を使えるようにする jarticle 用のマクロも作ってあり、そちらで推敲した後 で直接部報全体のファイルに \input で流し込めるようにいろいろと 細工がしてあります。

LaTeX の原稿で投稿された場合、まずはヘッダを修正して、 記事の頭に \ARTICLE というタイトルバナーを埋め込んで、 必要なら \subsection\section などの 一括置換をして、LaTeX にかけてしまいます。あとは見栄えをいじって、 必要なら プログラムリストなどの整形をして、おしまいです。 楽ですね。みなさん LaTeX で投稿しましょう。

でも、LaTeX で投稿されることはまずありません (^^;;;。 大抵は Plain Text で原稿が届きます。しかも、全角の英数字が 山ほどあります。これは、"Alphabet" のように印刷すると みっともないので、部報では原則として半角に統一しています。

で、DOS で編集していたころはどうしていたかというと、 XTR というテキスト処理系を sed の用に使って、全角の英数字を 一括して半角に置き換えてしまいます。同時に拡張子を .tex に付け替えて、 先頭のヘッダを付けます。 これを vz で読み込んで、がりがりと LaTeX のマクロを埋め込んでいきます。 想像つくと思いますが、めんどくさいです。

いまは、mule を使っているので、半角置き換えは M-x hankaku-region RET で 一発です:)。でも、そのあとのタグづけはやっぱり面倒です。

プログラム系の原稿だと、ちゃんと言語のトークンを typewriter にし てやったり、文法定義の部分はちゃんと italic にしたりしてやると、 ぐんと見栄えが良くなります。人には凝り性とか散々にいわれますが、 やっぱり印刷物としてはそれくらいやっておきたいです。

font-define-sequence:
   \font\control-sequence=font-definition
   \newfont{control-sequence}{font-definition}
font-definition:
   tfm-name font-modify-postfix
font-modify-postfix:
   at size
   scaled scale-factor
   \magstephalf
   \magstep mag

よりは

font-define-sequence:
\font\control-sequence=font-definition
\newfont{control-sequence}{font-definition}
font-definition:
tfm-name font-modify-postfix
font-modify-postfix:
at size
scaled scale-factor
scaled \magstephalf
scaled \magstepmag

の方が意味がはっきりしますからね。で、それをやると作業量は10倍になるのでした。

困ったこととしては、hilit19 という、mule に色つけをしてリストの編集を しやすくするという便利な elisp パッケージがあるのですが、部報の編集中は 原則として使えません。なぜかというと、編集中の部報の原稿は LaTeX としては ぐちゃぐちゃだからですね。0から原稿を書いている時には問題ないのですが、 あとからタグづけをしている時は、マクロの方が混乱してしまうので 最悪の場合 C-g しないと戻ってこなくなります。(;_;)

部報にとっては、図版も結構重要な問題です。

DOS のころは、TSG のロゴは METAFONT で作ったもので、 あまりのでかさに dviprt が暴走したので3文字に分割してあります。

その他の図はすべて手で切り張りです。.mag で渡された図は、Windows 環境 で開いて、gv で bmp にし、昔の Stelth VRAM についていた画像処理プログ ラムで印刷しました。

いまは、プリンタは ghostscript のおかげでソフト的には PostScript にみえています。そこで、画像ファイルはまず xv で pnm に変換し、 pnmtops で PostScript (EPS) にします。で、epsf.sty というスタイル ファイルで原稿ファイルに取り込んでおしまいです。TSG のロゴは Tellur さんに PostScript にしてもらいました。図に関しては 大分楽になりました。

印刷

原稿が出来上がるのは大抵印刷日の朝です。大抵は印刷は土曜日なので、 学校はおやすみです。

眠い目をこすりつつ朝の学館にいき、予約してあった印刷機をゲットします。 まずは、原稿を4枚とり、4ページ目と1ページ目を並べて、印刷機にかけます。 余った2ページ目と3ページ目は、とりあえずよけておきます。

印刷機の印刷位置は大抵ずれているので、最初の数枚の試し刷りで位置を合わ せます。この時点で左右をきちんと合わせてしまうと、裏の印刷までスムーズ にいきます。左右がずれたまま印刷に突入してしまうと、裏の印刷が破滅します。

さて、75部刷り終ると、刷り上がりをまた避けて、次の印刷に移ります。 また、4枚をとり、5ページ目と8ページ目を印刷機にかけ、 6ページ目と7ページ目は、さっきの2枚のよけた原稿の上に重ねます。 刷り上がったら、これもさっきの印刷結果の上に積みます。

こうすると、2つの紙の山が、FILO のスタック構造になります。この構造は、 裏の印刷に重要です。:)

[IMAGE]

原稿がなくなるまでこれを繰り返すと、表の印刷は終了です。 裏の印刷にはいるのですが、まずさっきの原稿の山から一番上の2枚をとり、 印刷機にセットします。ついで印刷結果の山からも1束をとり、セットします。 この2つはきちんと対応しているので、ちゃんと 4−1 の裏には 2−3、 8−5 の裏には 6−7 と対応します。このためにスタック構造は重要な 役目を果たします。

... まぁ今回くらい薄ければどうでもいいのですが... (^^;

製本

印刷が終ったら、電動裁断機の鍵を入手し、すべての印刷結果を真中から 2 つに切ります。あとは人海戦術でぐるぐる回りながらページ順に並べると、 これまた両面印刷した表紙にはさんで、きちんとそろえてからホチキスで 留めます。

これだけだと紙のはしは揃いませんね。よくこの段階で終っている製本を 良く見かけますが、なんとなく奇麗な本に見えないし、めくりづらいです。 どうしても紙のサイズには差異がありますし、手で揃えるのにも限度が ありますから。

そこで、綴じた側以外の 3 辺を裁断機で 5mm 程度ずつ切り落としてしまいます。 こうするとふちが奇麗になって、見栄えがぐんとよくなります。

できたら部室に担いでいき、適当に置いておくとどんどんと減っていきます。 コンパまでは4時間ほどあるので当然のごとく椅子を3つ占領して仮眠に入りま す。 :)

おわりに

というわけで、原稿は早めに出して下さいね (^^;

─────────
*1 のっけからなげやりな書き方だなぁ>自分


300番問題

油すまし: 出題

Aleph-NULL です。あたしが合宿中はまっていた (200号参照) 300番問題 です。

問題は単純です。

四角形ABCDにおいて、角 ABD, DBC, BCA, ACD が それぞれ a, b, c, d のとき、角ADBは何度か。

というだけです。

[IMAGE]

ではスタート。

       a   b   c   d          a   b   c   d          a   b   c   d
[  1]  10  10  20  80  [ 51]  10  30  70  30  [101]  20  10 130  30
[  2]  10  10  30  40  [ 52]  10  30  70  40  [102]  20  20  20  80
[  3]  10  10  30 110  [ 53]  10  30  80  20  [103]  20  20  30  50
[  4]  10  10  40  30  [ 54]  10  30  80  30  [104]  20  20  30 100
[  5]  10  10  40  70  [ 55]  10  30  80  50  [105]  20  20  40  40
[  6]  10  10  40 110  [ 56]  10  30 100  20  [106]  20  20  40  70
[  7]  10  10  50  50  [ 57]  10  30 100  30  [107]  20  20  40 100
[  8]  10  10  50  80  [ 58]  10  30 110  20  [108]  20  20  60  60
[  9]  10  10  60  40  [ 59]  10  30 110  30  [109]  20  20  80  50
[ 10]  10  10  60  60  [ 60]  10  30 120  20  [110]  20  20 100  30
[ 11]  10  10  60  80  [ 61]  10  40  30  40  [111]  20  20 100  40
[ 12]  10  10 100  30  [ 62]  10  40  50  20  [112]  20  20 100  50
[ 13]  10  10 100  40  [ 63]  10  40  50  30  [113]  20  20 110  30
[ 14]  10  10 100  50  [ 64]  10  40  80  20  [114]  20  20 110  40
[ 15]  10  10 110  30  [ 65]  10  40  80  30  [115]  20  20 120  30
[ 16]  10  10 110  40  [ 66]  10  40  80  40  [116]  20  30  20  60
[ 17]  10  10 120  20  [ 67]  10  40 100  20  [117]  20  30  30  40
[ 18]  10  10 120  30  [ 68]  10  50  60  20  [118]  20  30  30  80
[ 19]  10  10 120  40  [ 69]  10  50  60  40  [119]  20  30  50  30
[ 20]  10  10 130  20  [ 70]  10  50  80  20  [120]  20  30  50  60
[ 21]  10  10 130  30  [ 71]  10  60  40  20  [121]  20  30  50  80
[ 22]  10  10 140  20  [ 72]  10  60  70  30  [122]  20  30  70  40
[ 23]  10  20  20  40  [ 73]  10  60  80  20  [123]  20  30  80  30
[ 24]  10  20  30  70  [ 74]  10  70  40  30  [124]  20  30  80  40
[ 25]  10  20  40  20  [ 75]  10  70  50  20  [125]  20  30  80  60
[ 26]  10  20  40  40  [ 76]  10  70  50  30  [126]  20  30 100  30
[ 27]  10  20  40  80  [ 77]  10  70  60  20  [127]  20  30 100  40
[ 28]  10  20  50  30  [ 78]  10  70  80  20  [128]  20  30 110  30
[ 29]  10  20  50  50  [ 79]  10 100  30  20  [129]  20  40  20  50
[ 30]  10  20  50  80  [ 80]  10 100  40  20  [130]  20  40  40  30
[ 31]  10  20  70  30  [ 81]  20  10  20 120  [131]  20  40  40  70
[ 32]  10  20  70  40  [ 82]  20  10  30  80  [132]  20  40  60  40
[ 33]  10  20  80  20  [ 83]  20  10  40  60  [133]  20  40  60  50
[ 34]  10  20  80  40  [ 84]  20  10  40 100  [134]  20  40  70  40
[ 35]  10  20  80  50  [ 85]  20  10  40 120  [135]  20  40  80  30
[ 36]  10  20 100  20  [ 86]  20  10  50  50  [136]  20  40  80  50
[ 37]  10  20 100  30  [ 87]  20  10  50  80  [137]  20  40 100  30
[ 38]  10  20 100  40  [ 88]  20  10  50 100  [138]  20  50  40  60
[ 39]  10  20 110  20  [ 89]  20  10  70  40  [139]  20  50  70  30
[ 40]  10  20 110  30  [ 90]  20  10  70  70  [140]  20  50  70  40
[ 41]  10  20 110  40  [ 91]  20  10  70  80  [141]  20  60  20  40
[ 42]  10  20 120  20  [ 92]  20  10  80  50  [142]  20  60  30  50
[ 43]  10  20 130  20  [ 93]  20  10  80  60  [143]  20  60  50  30
[ 44]  10  30  20  30  [ 94]  20  10 100  40  [144]  20  60  50  50
[ 45]  10  30  30  20  [ 95]  20  10 100  50  [145]  20  60  70  30
[ 46]  10  30  30  50  [ 96]  20  10 100  60  [146]  20  60  70  40
[ 47]  10  30  40  30  [ 97]  20  10 110  30  [147]  20  60  80  30
[ 48]  10  30  40  60  [ 98]  20  10 110  40  [148]  20  80  30  40
[ 49]  10  30  60  20  [ 99]  20  10 110  50  [149]  20  80  40  30
[ 50]  10  30  60  40  [100]  20  10 120  40  [150]  20  80  40  40

       a   b   c   d          a   b   c   d          a   b   c   d
[151]  20  80  50  30  [201]  30  50  60  60  [251]  50  20  40 100
[152]  20 100  20  30  [202]  30  50  70  40  [252]  50  20  70  80
[153]  20 100  40  30  [203]  30  50  80  40  [253]  50  30  20 100
[154]  30  10  20 130  [204]  30  70  20  50  [254]  50  30  30  80
[155]  30  10  30 100  [205]  30  70  30  40  [255]  50  30  40  70
[156]  30  10  30 130  [206]  30  70  50  50  [256]  50  30  40 100
[157]  30  10  40  80  [207]  30  70  60  40  [257]  50  30  60  80
[158]  30  10  40 110  [208]  30  80  30  50  [258]  50  30  70  70
[159]  30  10  60  60  [209]  30  80  40  40  [259]  50  30  80  60
[160]  30  10  60  80  [210]  30 100  20  40  [260]  50  50  20  80
[161]  30  10  60 100  [211]  30 100  30  40  [261]  50  50  60  60
[162]  30  10  70  70  [212]  40  10  30 110  [262]  60  10  30 120
[163]  30  10  70  80  [213]  40  10  50  80  [263]  60  10  40 120
[164]  30  10  80  50  [214]  40  10  50 100  [264]  60  10  70  80
[165]  30  10  80  70  [215]  40  10  50 110  [265]  60  20  20 120
[166]  30  10 100  50  [216]  40  10  80  60  [266]  60  20  30 100
[167]  30  10 100  60  [217]  40  10  80  70  [267]  60  20  30 120
[168]  30  10 110  40  [218]  40  10 100  60  [268]  60  20  50  80
[169]  30  10 110  50  [219]  40  20  20 110  [269]  60  20  50 100
[170]  30  10 120  40  [220]  40  20  40  70  [270]  60  20  70  80
[171]  30  20  20 100  [221]  40  20  40 110  [271]  60  20  80  70
[172]  30  20  30  70  [222]  40  20  50  80  [272]  60  40  30  80
[173]  30  20  30 110  [223]  40  20  60  70  [273]  60  40  50  80
[174]  30  20  50  50  [224]  40  20  60  80  [274]  60  60  20  80
[175]  30  20  50  70  [225]  40  20  80  50  [275]  60  60  40  70
[176]  30  20  50 100  [226]  40  20  80  70  [276]  70  10  20 140
[177]  30  20  60  60  [227]  40  20 100  50  [277]  70  10  40 110
[178]  30  20  80  40  [228]  40  30  30  70  [278]  70  10  50 100
[179]  30  20  80  60  [229]  40  30  30 100  [279]  70  10  50 110
[180]  30  20  80  70  [230]  40  30  40  60  [280]  70  10  60 100
[181]  30  20 100  40  [231]  40  30  40  80  [281]  70  30  20 110
[182]  30  20 100  50  [232]  40  30  50  80  [282]  70  30  30 110
[183]  30  20 110  40  [233]  40  30  70  60  [283]  70  30  50  80
[184]  30  30  20  80  [234]  40  30  70  70  [284]  70  30  60  80
[185]  30  30  40  70  [235]  40  30  80  50  [285]  70  40  20 100
[186]  30  30  80  50  [236]  40  30  80  60  [286]  70  40  30 100
[187]  30  30 100  40  [237]  40  40  20  80  [287]  70  40  40  80
[188]  30  40  30  50  [238]  40  40  40  70  [288]  70  40  50  80
[189]  30  40  30  80  [239]  40  40  60  60  [289]  80  20  30 110
[190]  30  40  40  60  [240]  40  40  80  50  [290]  80  20  40 100
[191]  30  40  40  80  [241]  40  60  30  70  [291]  80  20  40 110
[192]  30  40  60  60  [242]  40  60  50  50  [292]  80  20  50 100
[193]  30  40  70  40  [243]  40  70  20  60  [293]  80  30  30 100
[194]  30  40  70  50  [244]  40  70  30  50  [294]  80  30  40 100
[195]  30  40  80  40  [245]  40  70  40  60  [295] 100  10  30 130
[196]  30  40  80  50  [246]  40  70  50  50  [296] 100  10  40 120
[197]  30  50  20  60  [247]  50  10  40 100  [297] 100  20  20 130
[198]  30  50  30  70  [248]  50  10  60  80  [298] 100  20  40 110
[199]  30  50  40  70  [249]  50  10  60 100  [299] 100  30  20 120
[200]  30  50  60  40  [250]  50  20  40  80  [300] 100  30  30 110

頭の体操 解答編

その1
Aleph-NULL

200号の頭の体操の解答です。すこしずつ掲載します(ぉ

Q. 1

過去の数セミの問題から引用してきた時計の問題です。 連立方程式の解にするとどえらく複雑に解けますが、 それではエレガントではありませんね。この問題は 実は中学入試レベルでも解けるのです。

[解答]

もし同じ形を2つの異なる時刻が指している時、片方の時計が 指している時刻に相当するだけ時計を巻き戻すと、その時計は 12時ちょうどを示すが、そのときにもう一方の時計の3本の針は 必ず重なっている。よって、以下では3本の針が重なるのが 12時だけであることを示せば良い。

短針は12時間で一周、長針は1時間で一周するので、この2つの針が重なる ところは12の文字のところを起点に円周を11等分した点のいずれである。

長針は60分で一周、秒針は1分で一周するので、この2つの針が重なる ところは12の文字のところを起点に円周を59等分した点のいずれかである。

ところが、11と59は互いに素なので、この2つの条件を同時に満たす点は 12の文字のところしか存在しない。よって3本の針が重なるのは12時であると 決定できる。

先の理由により、他のすべての場合についてもこれより一意性がいえるので 結論として時刻は決定可能である。

Q. 2

原点中心、半径 21996 の円周上の格子点の問題です。

[解答]

格子点 (0, ±21996), (±21996, 0) は自明な解である。

ある点 (x, y) が条件を満たす時、(±x, ±y) (複号任意) は条件を 満たすので、以下は x > 0, y > 0 について考える。

[定理] 原点中心、半径 2n の円周上に x, y > 0 なる格子点は存在しない。 (n : 自然数)

証明: もし格子点 (x, y) が円周上に存在すると、

x2y2 = 4n    (1)

が成立する。この両辺を4で剰余をとると、右辺は 0 となる。 一方左辺は

x2 mod 4 = { 0  if x mod 2 = 0
1  if x mod 2 = 1

である。よって、x, y の一方が奇数であれば上式 (1) は成立しない。

そこで、x = 2x', y = 2y' と置くと、(1) は

(x')2 + (y')2 = 4n−1

となり、n − 1 の場合に帰着される。 n = 1 の場合は明らかなので、定理はすべての自然数 n について 成立する。

問題は上の定理の n = 1996 の場合である。

よって、自明でない解は存在しないので、求める答は 4つ である。


編集後記

原稿がありません(核爆

「駒場祭の企画はいっぱいあるから他の原稿を載せる 場所はないな」と編集方針を決めたのは9月の頭でした。

なんで企画が4つしかないんでしょう (^^;;

しょうがないのであたしが温めていたねたを書きましたが... 現時点で完成させる気はまったくないのであった(^^;

まぁ2年生は進学が無事決まったのでまずはめでたしと。:)

次はいよいよ 202号「駒場祭パンフ号」です。企画の進行に よっては 203号「駒場祭号」として分厚い冊子も同時に作りたい と思っています。


理論科学グループ 部報 201 号
1996年10月26日 発行
発行者 金子 済
編集者 大岩 寛
発行所 理論科学グループ
〒153 東京都目黒区駒場 3−8−1
    東京大学教養学部内学生会館305
Telephone: 03−5454−4343
(C) Theoretical Science Group, University of Tokyo, 1996.
All rights are reserved.
Printed in Japan.