第22話 リバーシ思考ルーチン作成大会
※今回の話は、プログラミングの知識がないとわかりにくいかもしれませんが、
雰囲気を感じていただければと思います。
5月も残すところ、あと1日となったある日。
「そういえば、高遠と朝倉はプログラミングできたよな」
唐突に、俊さんにそう尋ねられた。
「一応、ちょっとしたことくらいなら」
「私も、ちょっとはできます」
「いや、ミユは全然ちょっとじゃないから」
ミユは成績全般が優秀だが、特にコンピュータに関する才能は図抜けたものがある。プログラミング実習中に、即席でゲームを作っているくらいだしな。
「で、どうしたんですか、急に」
「いや、ちょっとした遊びを思いついてな」
俊さんが提案したのは、通信対戦型のリバーシ(いわゆるオセロのこと)を作って、各自の作った思考ルーチン同士で対戦させてみようということだった。実際のリバーシの画像を用意するのは手間がかかるので、「1、2、白」のようなメッセージを送信しあうことで対戦する方式にするということらしい。
「うちはプログラミングができるやつが多いし、記事のネタにでもと思ってな」
「努力はしますけど、俺、絶対弱いですよ」
リバーシのルールは単純なので、動くものを作るのは難しくないだろうが、博士課程の俊さんやミユには全然勝てる気がしない。
「勝ち負けは気にしなくていいんだ。どういう工夫をしたか、とかが盛り込めれば」
「わかりました。やりましょう」
「ちょっとおもしろそう。わくわくしてきたよ!」
早くもうずうずとしているミユ。
「で、プログラミング言語については、何でもいいんですか?」
プログラミング言語というのは、ソフトウェア、いわゆるアプリを作るための人口言語で、用途に応じて、色々なものがある。それがまた個人によって好みの言語があって、論争になったりするのだが。
「
「納得です。TCP/IPを扱うのが楽な言語が良さそうですね」
「強い思考ルーチンを作るのだったら、速度が速い言語の方が有利だぞ」
「俺はそんなに強いの作れませんから」
TCP/IPというのは、インターネット上で通信をする方式の一つで、だいたいどんなプログラミング言語でも使える。もちろん、うちの編集部のような閉じたネットワーク内での通信にも使える。
というわけで、唐突に始まったリバーシ思考ルーチン作成大会。俺は、普段使い慣れている
俊さんは
ミユが選んだのは
制限時間は5時間ということで、ひたすらカタカタカタとキーボードを打つ音が編集部に響き渡る。さすがに、俊さんはものすごい速度でプログラムを打ち込んでいるようだ。ミユも同じくらい高速で、迷いなくタイプしているのが恐ろしい。
俺はというと、いわゆるタッチタイピング(キーボードを見ずに文字を打ち込むこと)はできるものの、この二人には及ばず、試行錯誤しながら、動作確認をしていく。
3時間が経過した。様子をみると、俺も含め3人とも最低限の思考ルーチンはできたて、自分のマシン内で自分の作った思考ルーチン同士を戦わせるテストに入っている。
「検アルファ・ベータ法を基本にして、GAで行くべきか……」
俊さんのつぶやきが聞こえる。思考ルーチンの方式らしいが、検索しただけだと、制限時間内に作るのは難しそうだ。GAというのはGenetic Algorithmというらしくて、生物の進化を元にして、プログラム自身を改良するための方式らしい。こちらも、難しそうだ。
ミユの様子を見ると、思考ルーチン同士を戦わせては改良してを細かく繰り返している様子。こういうときのミユの集中力は凄く、俺が画面を見ているのにも気づいていないようだ。
俺は、検索して出てきたNegaMax法というのを実装してみることにしたが、勝つのは難しそうだ。
「よし、終了!」
俊さんの宣言でプログラムの開発はストップ。ここからは、対戦だ。総当り方式で、
・俊さん対ミユ
・俊さん対俺
・ミユ対俺
の3戦をやることになった。
まず、1戦目。俊さん対ミユだ。思考ルーチン同士の戦いなので、画面上を高速に
2, 2, 白
...
7, 6, 黒
いったメッセージが流れていく。ちなみに、1手辺り持ち時間の上限は10秒で、それを過ぎて手が打てなかったら負けが確定する。
というのは、持ち時間を決めないと、思考ルーチンにいつまでも長考させることになりかねいからだ。
さて、結果として勝ったのは俊さんだった。
「あー、負けちゃった。惜しかったのになあ」
悔しそうなミユ。
「さすがに先輩としての意地は守れたな」
ほっとした様子の俊さん。
次の2戦目は俊さん対俺だ。ミユといい勝負をしていた思考ルーチンに俺が作った弱い思考ルーチンが勝てるわけもなく、大差を付けて敗北してしまった。
「やっぱり、難しいですね」
「ま、1年でこれだけ書けるだけでも上出来だ」
とはいえ、その1年のミユと比べると差は歴然としているので、少し悔しい気持ちはある。
最後の3戦目。これまでの2戦を見て、ミユには勝てないだろうな、と思っていたので、消化試合という感じだ。
と思っていると、何やら盤面が変だ。途中まで、ミユが優勢だったのに、次々と俺が巻き返していく。結果、僅差だが、何故か俺のルーチンが勝ってしまった。
「負けちゃった……」
「勝っちゃいましたけど、なんでですかね」
これまでの戦績を見る限り、俺のが勝てる要素なんてなさそうだったが。
「そうだな。朝倉の思考ルーチンは、うまく実装されているようだが、弱めの思考ルーチンにうまく対応できずに、変な手を打ってしまった、といったところか。
そう俊さんが評する。評価関数という言葉の意味はいまいち理解できていない。
「そういうこともあるんですね」
自分の思考ルーチンが弱いせいで、というのは複雑だが。
「奥が深いだろ?こういう対戦系ゲームで思考ルーチンを作るのは」
「そうですね。色々勉強したくなってきました」
「私も、もっと強いの作りたくなってきました」
というわけで、結果としては、俊さんが1位、俺とミユが2位という結果になった。
「ね、ね。帰ったら二人で一緒に作ろうよ。俊さんのを負かせるくらいの」
「よし、乗った。色々調べないとな」
なんだかんだで負けたくなかったので、必死になってしまったし、デートとは違うけど、一緒に考えを巡らせるのもいいかもしれない。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます