異世界で俺だけがプログラマー~転生して蘇った前世の知識は魔王級。家族には捨てられたけど、世界法則には気に入られた気がする。帰って来てくれと言われても、もう遅い。プログラム的呪文で最強無双~
第271話 石取りゲームと、思考と、利用の仕方
第271話 石取りゲームと、思考と、利用の仕方
おも研の部室で、ベークが新魔法の課題に挑戦し始めた。
苦戦しているようだ。
お題は石取りゲーム。
石が何個かあり。
プレイヤーは交互に石を取る。
ただし、この時1個から3個までしか取れない。
石は必ず取らなくてはいけない。
最後の一個を取った方が負けだ。
問題は魔道具側の思考だ。
ここで必要な事は最後の手番で、1個残す。
その前の手番では5個残す。
そしてその前では9個残す。
その前の手番では13個残す。
つまり4で割って余り1になるようにすれば良い。
プログラムでは『answer=x%4-1』
『x』に今の石の数を入れるとこの数式で『answer』に取るべき石の数が入る。
『%』はモジュロでこの場合は4で割った余りが入る。
『answer』がゼロだった場合は負けパターンなので、ランダムに1から3個取る。
そういうふうにプログラムすれば良い。
ベークは最初に石の数を決定するところから躓いた。
ここは『x=rand()%20+20』ぐらいで良いだろう。
それを教えた。
そして、問題のループと分岐だ。
ループは『x』が0以下になると負けで終り。
分岐は手番の制御と、答えが0個だった場合の処理。
それと終わった後の勝利者の表示。
ここにも分岐は必要だ。
完成した魔法はこんな感じだ。
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
int x,answer,player; /*『x』は石の数。『answer』は取る石の数。『player』は0は魔道具、1は人間*/
x=rand()%20+20; /*石の数は20個から39個*/
player=0; /*最初は魔道具*/
printf("石の数は%d\n",x);
while(x>0){ /*ループと終了判定*/
if(player==0){ /*魔道具サイド*/
printf("魔道具の番です\n");
answer=x%4-1; /*数決定*/
if(answer==0){
answer=rand()%3+1; /*負けパターンならランダム*/
if(x==1){
answer=1; /*負けなので最後の石を取る*/
}
}
}
else{
printf("あなたの番です\n");
scanf("%d",&answer); /*石の数入力*/
if(answer<1 || answer>3){ /*反則判定*/
x=0; /*反則処理*/
printf("反則負けです\n");
answer=0;
}
}
x=x-answer; /*石を取る*/
printf("石を%d個取りました。残り%d個です\n",answer,x);
player=(player+1)%2; /*プレイヤーチェンジ*/
}
if(player==0){ /*勝ちメッセージ*/
printf("魔道具の勝ちです\n");
}
else{
printf("あなたの勝ちです\n");
}
}
改良点は色々とある。
石の取れる範囲でなければ再入力させるとか。
ランダムで魔道具がヘボな手を打つとか。
これの新魔法版をベークが作ったわけだが、最初はバグが沢山あって見れたもんじゃなかった。
俺の解答を最後には見せてやった。
「ううっ、分岐が簡単だなんて言った俺の馬鹿」
「やーい、やーい、馬鹿」
マイラが煽る。
「あなただってできないでしょ」
リニアがそう言ったが、ベークに助け舟を出したのではなさそうだ。
「階層の管理さえちゃんとすれば余裕ですね。空白でそれをしているのでしょう」
レクティにはどうやれば良いのか分かったようだ。
「なるほどね。私にもできそう」
分岐を侮るとはセレンもベークみたいになりそうだ。
人がやると簡単に出来そうに思うんだよな。
コロンブスの卵だ。
「もう僕は新魔法は自分で作らない。頭がぐちゃぐちゃでどうしたら良いか」
「ベーク様、頑張って♡」
「くっ、ラチェッタの愛と期待が重い」
「ベーク、言っておくがこんなのは入門編だぞ」
「所詮、僕は魔王にはなれない」
「やーい、負け犬。じゃあ何にならなれるの?」
「ぐっ、少なくともタイトの魔法は翻訳できる」
「それって寄生しているって事よね」
「人を上手く使うのも才能ですわ」
ラチェッタがそう言ってフォローした。
「そうだな。ベークは俺の使い方を考えると良い。タイトぅって言うだけが能じゃないぞ」
「ぐっ、分かったよ。タイトの上手い使い方を考える」
さて、どんな貢物を持って来るかな。
面白い物を持って来たら魔法を教えてやろう。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます