http://blogs.wankuma.com/rti/archive/2008/07/18/149606.aspx?Pending=true
順列生成メソッド
の続きです。
何故このようなメソッドを作ったのか
というと、ちゃんと理由がある訳です。
最近レイトン教授なるゲームにはまっている会社の後輩が僕に以下の出題をしてきました。
○○○○○-○○○○=33333
丸の中に1~9の数字を全て使用して式を完成させて下さい
基本的に僕はひねくれているので、素直に自分で解かずに、解を得るソフトウェアを作ろうと思った訳です。
んで、リンク先のメソッドを使って解いてみました。
こんな感じです。
static class Program
{
[STAThread]
static void Main()
{
foreach(var x in (new HogeHoge()).Answers()) Console.WriteLine(x);
}
}
public class HogeHoge {
public int[] Answers() {
var q = Mathematics.GetPermutation("123456789")
.Where(p => {
var a = Convert.ToInt32(p.Substring(0, 5));
var b = Convert.ToInt32(p.Substring(5, 4));
return (a - b) == 33333; })
.Select(p => Convert.ToInt32(p));
return q.ToArray();
}
}
これを実行すると 412687935,412867953 という数字が得られます。
ということで、41268 - 7935 = 33333 あるいは 41286 - 7953 = 33333 が答えです。