読者です 読者をやめる 読者になる 読者になる

C Sharpens you up

http://qiita.com/yuba に移しつつあります

5Lと3Lのバケツで4Lの水を作る問題・人力で解く編

アルゴリズム

就活シーズンだからかこの記事が検索されることが増えてきたので、プログラムではなく人の頭で答にたどり着く方法をまとめておきます。

問題は

5Lと3Lのバケツで4Lの水を作ってください。

です。暗黙の条件として、バケツから水を半分だけこぼすような操作はできません(円柱のドラム缶や角柱の石油缶なら可能でしょうが、バケツは円柱ではありません)。

解法の出発点

まず、操作が3種類しかないことを把握します。

  • 片方を満タンにする
  • 片方を空にする
  • 片方からもう片方へ注げるだけ注ぐ

ここから、もう一つのルールに気付きます。

  • どの時点でも、満タンか空なバケツがある。

これが材料です。

解き進め方

ゴールまでの道筋を探せという問題は、ゴールから考えると早いことが多いです。そのようにやってみましょう。すなわち、ゴールまでの最終段階である、

  • 1から5の加減算で4を作るには?

を考えるということです。

5 - 13 + 12 + 2の3通りしかありません。しかもこのうち2 + 2は「満タンか空なバケツがある」ルールに違反しています。5 - 13 + 1の2通りしかありません。

  • 小バケツを1L足りない状態にする = 2Lにする
  • 大バケツを1Lにする

のどちらかを作れということです。

  • 2Lを作るには 5 - 3、つまり満タンの大から小へ注いで小を捨てる、でできます。それを小へ移すのも含めて4手。
  • 1Lを作るには 3 + 3 - 5、つまり小から大へ2回注いで大を捨てる、でできます。それを大へ移すのも含めて6手。

最短手筋を求めろと言われたら2Lを作る手筋の方を答えないといけませんが、そういう問題ではないので先にスタートからゴールまでつながった方を回答すれば十分、となります。

採用面接の場における「正解」

頭の体操パズルをひらめきでなく正攻法で解きたいのなら上記のような考え方をしていけばいいのですが、就活の採用面接の場においてはまた違う考え方をしていきたいです。

採用する側としては、知りたいのはパズルを解く速さではなく、その人がどういう人なのかなのです。

このパズルにはいろんな答え方があります。ひらめきでいきなり正解を出すこともできますし、今回のような確実な解き方もある。傾けて半分捨てるというアイディア(パズルとしては不正解ですが)がまず出てくる人だっています。性格が少し見えました。

そして、どんな性格なら採用・不採用になるということでもありません。もちろん社風に合う合わないもありますが、多くの採用側は特定の正確の人だけでなく、様々な性格の人をまんべんなく採りたいと思っています。すると、採用試験としてのバケツ問題には模範解答というものは定義できません。あくまで、自分らしさを表現するためのネタを振ってもらったと解釈するのがよろしいかと思います。