private static void Main()
    {
        var d = new Dictionary <TuringMachine.InstructionSelector, TuringMachine.InstructionResult> {
            { new TuringMachine.InstructionSelector(0, false), new TuringMachine.InstructionResult(0, true, true) },
            { new TuringMachine.InstructionSelector(0, true), new TuringMachine.InstructionResult(-1, true, false) }
        }.ToImmutableDictionary();
        var t = new TuringMachine(d, 2 * 2 * 2 * 2);
        var h = t.AdvancedUntilHalted();
        var n = h.MayResult;

        var s = new SolomonoffInductor();

        for (var i = 0; ; i++)
        {
            s.Advance(i * i + 10);
            var z = s.Predict()
                    .OrderBy(e => - e.Value)
                    .Select(e => string.Format("{0}: {1:0.000000}", e.Key, (double)e.Value))
                    .ToArray();
            Console.WriteLine("=== Step: " + i);
            foreach (var s1 in z)
            {
                Console.WriteLine(s1);
            }
            s.Measure(1, nextInput: i + 1);
        }
    }