偽りの立方体Sheet5:イカサマ氏はサイコロを振らない
「サークル活動はいつも社内ですか?」
薔薇筆の問いに真ん中の男が答える。
「ええ、そうですが…」
「その"エクセルダイス"を開いてるPCかタブレットって会社のサーバーに繋がってませんか?」
「繋がってますが…まさか」
「おそらく社内サーバーのどこかに"エクセルダイス"が参照してるテキストファイルがあるんじゃないでしょうか。その…イカサマ氏はプレイ中にそのファイルを書き換えてる…」
「そういえば、ずっとスマホをイジってます!次の出目を操作してたのか」
「でもそれを実証する証拠がありませんね。最終本人を問い詰めれば済む話ですが、シラを切られでもしたら…せめてそのファイルでも特定出来ればいいんですが…」
三人組の別の一人が言った。
「ファイルの特定は出来ます。イカサマ氏はプレイ中に何度もテキストファイルを書き換え、つまり再保存しています。となれば、ファイルの最終更新日を見れば一目瞭然です」
薔薇筆はチームに加入して初の事件解決に高揚してるのかずいぶん張り切ってるなぁ…とアキラは思った。
「だったらさぁ問い詰めるだけじゃなく一泡吹かせてやろうよ」
アキラが悪い顔をしながら言った。
「ファイルを参照出来なくするんだったら、削除とかディレクトリ…保存されてる場所変えるだけで済みますよ」
薔薇筆の発言に川口は真面目な奴だなと思った。
「薔薇筆クン、アキラさんはもっとえげつない報復をご所望だと思うぞ」
「ヒデェなグッさん、俺を何だと思ってるんだよw」
「テキストファイルにメッセージ書いとくのはどうでしょうか『全部知ってるぞ』とか」
育美案だ。
「悪くないけど、バラすのは一回くらい奢らせてからの方が良くないか?ていうかウチらだけで盛り上がってごめんねw 御三方の意向ガン無視してたね」
アキラは三人組の意見を求めた。
「そりゃ一矢報いたい気持ちはあります。夜食代の損得っていうより、トリックに気付かない俺達を馬鹿にして見てたかと思うと、それが悔しいですから」
「エルさ、この"エクセルダイス"とそっくり同じもの作れるかい?」
アキラが尋ねた。
「うーん、ちょっと時間かかるかな…」
エルは指を3本立てた。
「3日ですか…あ、エルさんだから3時間か」
育美の言葉にエルが返す。
「そんなにかかんないよ、30分。あ、でもテキストファイルのパスは分かんないから、そこは後で入れる事になるよ」
アキラのアイデアはこうだ。
まずエルにそっくりの"エクセルダイス"を作ってもらい、本物と差し替える。
ただし、参照するテキストファイルだけ別のものになっている。
それからはいつも通りすごろくを始める。
なんなら「今日は参加者少ないから夜食の支払いはビリの人だけ」とか言って。
で、イカサマ氏を負けさせる様に"偽エクセルダイス"が参照するテキストファイルで出目を操作する。
イカサマ氏本人は困惑、あるいは察しがよければバレたのに気が付くだろうが、ちゃんと夜食代金払わせた後で引導を渡す。
後はサークルの除名処分なり、会社巻き込んでもっと大事にするなりお好きな様に…
「と、まぁこんなんでどうだろう?」
「でもいいんですか?エルさんにお手間取らせて何か申し訳ないです」
三人の一人が言う。
「全然手間じゃないよ。ただ、どうなったかはちゃんと後で報告に来てね」
エルの客あしらいも段々板に付いてきた。
"Perplexity AI"にて以下の質問でサンプルコードを生成(動作確認済)
エクセルのマクロ。外部データの取り込みでテキストファイルからデータを取り込む。テキストの最初の文字が1~6の数字ならセルA1にそれを表示。それ以外の内容だったらランダムに1~6の数字どれかをA1に表示。
Sub ImportTextFile()
Dim txtName As String
Dim firstChar As String
Dim randomNum As Integer
' テキストファイルを選択するダイアログを表示
txtName = Application.GetOpenFilename("テキストファイル,*.txt")
' ファイルが選択された場合
If txtName <> "False" Then
' テキストファイルを開く
Open txtName For Input As #1
' 最初の文字を読み込む
Line Input #1, firstChar
firstChar = Left(firstChar, 1)
' ファイルを閉じる
Close #1
' 最初の文字が1~6の数字かどうかを判定
If IsNumeric(firstChar) And Val(firstChar) >= 1 And Val(firstChar) <= 6 Then
Range("A1").Value = firstChar
Else
' ランダムに1~6の数字を生成
Randomize
randomNum = Int((6 - 1 + 1) * Rnd + 1)
Range("A1").Value = randomNum
End If
End If
End Sub
※本編ではテキストファイルはあらかじめ指定それてます。
※セルA1に表示させる代わりに画像を出すなど見た目を盛ってるのが本編です。