はじめに
就活を始めると大体の人が適性検査を受けることになりますが,Web上で受ける知能に関する検査は大きくSPIと玉手箱の2種類があると思います.そのうちの玉手箱には下の図のような表を読み取って,空欄に当てはまる値を予測させるという問題が出ます.
(https://jyosiki.com/spi/tama31_a.html より引用)
この問題であれば,答えの選択肢として
① 495 ② 510 ③ 525 ④ 540 ⑤ 555
の5つがあります.ちなみに模範解答は②らしいです.
私はそこまで頭が良くないので,これらの知能テストがすこぶる苦手です.特にこの類推問題関連は難しすぎて「絶対に答えが一意に定まらないだろ」と発狂しながら解いていました.なので,面倒くさいことはPythonにやらせてしまおうということで,この問題を解いてくれるプログラムを作りました.ついでに見栄えを良くするためにGUIも実装しました.
概観
プログラムの見た目としては以下のような感じです.値を入力してポチッと押すと答えが出力されます.
表の内容を直接入力するか,スクリーンショットから読み込む
スクリーンショットの場合は表の位置を範囲選択
計算
必要な要素
今回の実装は以下の3つの部分に分けて実装を行いました.それぞれの実装について,別々の記事で解説しているので,よかったら見ていってください.
全体のコードはここに置いてあります.
実際に使ってみた
早速作ってみソルバーで先程の問題を解いてみました.バイアス有りとなしの両方で試しました.
バイアスなし
計算結果は499.63になりました.最初の選択肢で一番近いものは①ですね.
バイアスあり
バイアス有りの場合だと答えは526.37になりました.この場合は③です.
どちらの場合も模範解答の選択肢よりも別の選択肢の方が値が近いですね.更にいうと,バイアス有りとなしで予測結果がかなり異なることから解答が一意に定まらないことがわかります.うーん.答えが一意に定まらない問題を出さないでほしいです.
ただ,問題によっては答えが一意に定まるものもあるので,今回持ってきた問題が悪いという可能性もあります.
おわりに
やっぱり玉手箱の類推問題は嫌い
玉手箱の空欄推測問題をPythonで解いてみた
玉手箱の空欄推測問題をPythonで解いてみた 〜GUI編(Tkinter)〜
玉手箱の空欄推測問題をPythonで解いてみた 〜文字認識編(pyocr)〜
玉手箱の空欄推測問題をPythonで解いてみた 〜ソルバー編〜