第34話
案4の魔法陣が不可って聞いてバリーさんは驚いている。
僕も最初はいい案だと思ったんだけどなぁ。
その考えが正しいかどうか検証してみないとなぁ。
案4の鑑定の処理は今のプログラムだと『人間』、『物質』、『動物』、『魔物』の順で鑑定をしている。
ウィルさんの話だと人間用の鑑定で対象外に対しては反応がなかったと言う話だった。
最初の鑑定で結果が表示されても、後続の鑑定で結果が消されてしまうのではないだろうか?
仮説を立証させるため、早速プログラムを書いてみた。
========================================
#include <stdmagic.h>
int main(void)
{
for (int i = 4; i >= 1; i--) {
appraisal_magic(i, 3);
}
return 0;
}
========================================
for文の内容を逆にしてみただけだが、これで検証ができる。
僕はスキルを行使して魔法陣化した。
その紙をバリーさんに渡しつつ仮説を話した、ウィルさんも興味深そうに聞いている。
「では、今度は人間だけ鑑定結果が出ると言うことですね。順々に試します。」
そう言うとバリーさんは魔物から順に試して行った。
魔物の鑑定結果が出ないことでバリーさんの眉がぴくっと動いたがそのまま順々に試して行った。
「…柴田様。今度は人間だけ鑑定結果が出ました…」
最後に人間の鑑定で結果が出たことで仮説はほぼ立証したと見ていいだろう。
ウィルさんは途中からだったので改めて仮説と検証内容結果を話した。
「案4の魔法陣がそのような動きだとはっ!…柴田さん、鑑定が成功したらそこで次の鑑定をしないということは出来ないのですか?」
…そうだ、errnoがあった。
対応しているか、わからんが試してみる価値はあるぞ。
========================================
#include <stdmagic.h>
int main(void)
{
for (int i = 1; i <= 4; i++) {
errno = 0;
appraisal_magic(i, 3);
if (errno == 0) break;
}
return 0;
}
========================================
すっかりerrno変数の存在を忘れていた。
システムコールやライブラリ関数がエラーとなった際に『エラー原因の数値』へ変化する便利な値なのだ。
god_api内でerrnoを設定していればいいのだが、あの関数の定義見れていないからなぁ。
…考えても仕方がない、まずは検証だ。
「今のウィルさんの言葉で思い出しました、出来るかどうかは保証しませんがこちらで試していただけませんか?」
僕は魔法陣化した紙をバリーさんに渡した。
「承知いたしました、確認いたしますので少々お待ちください。」
バリーさんは魔法陣を確認すると僕に鑑定魔法を発動した。
鑑定結果が出た!
よし、次はティーカップだ。
バリーさんは順々に魔法陣を発動させ、『物質』、『動物』と鑑定結果が出ると言う結果を納めた。
そして最後『魔物』だ。
レッドアイウルフの『ミチェラーダ』は飽きたのか寝ている。
バリーさんはミチェラーダへ鑑定の魔法陣を発動させた。
「…柴田様!す、全ての鑑定結果出ました!」
「…出ましたねぇ。」
「わ、私の考えが形になった…」
ウィルさん、バリーさんはやり遂げた感動なのか、できた驚きなのかわからないまま立ち尽くしていた。
その横で僕は『よかったぁ、ウィルさんのアイディアを僕のド忘れで潰すところだった』とひとり思っていた。




