コード例 #1
0
        public static void BenchmarkISqrt(int m)
        {
            List <long> program = new List <long>()
            {
                3, 1, 109, 149, 21101, 0, 15, 0, 20101, 0, 1, 1, 1105, 1, 18, 204, 1, 99, 22101, 0, 1, 2, 22101, 0, 1, 1, 21101, 0, 43, 3, 22101, 0, 1, 4, 22101, 0, 2, 5, 109, 3, 1105, 1, 78, 109, -3, 22102, -1, 1, 1, 22201, 1, 4, 3, 22102, -1, 1, 1, 1208, 3, 0, 62, 2105, -1, 0, 1208, 3, 1, 69, 2105, -1, 0, 22101, 0, 4, 1, 1105, 1, 26, 1207, 1, 1, 83, 2105, -1, 0, 21101, 0, 102, 3, 22101, 0, 2, 4, 22101, 0, 1, 5, 109, 3, 1105, 1, 115, 109, -3, 22201, 1, 4, 1, 21101, 0, 2, 2, 1105, 1, 115, 2102, -1, 2, 140, 2101, 0, 2, 133, 22101, 0, 1, 2, 20001, 133, 140, 1, 1207, 2, -1, 136, 2105, -1, 0, 21201, 2, -1, 2, 22101, 1, 1, 1, 1105, 1, 131
            };
            IntCodeVM2 vm = new IntCodeVM2(program);

            vm.AddInput(m);
            DateTime start = DateTime.Now;

            vm.ExecuteProgram();
            DateTime end = DateTime.Now;

            Console.WriteLine($"integer square root {m} is {vm.GetLastOutput()}, took {(end - start).TotalSeconds:F3}s");
        }
コード例 #2
0
        public static void BenchmarkSumOfPrimes(int limit)
        {
            List <long> program = new List <long>()
            {
                3, 100, 1007, 100, 2, 7, 1105, -1, 87, 1007, 100, 1, 14, 1105, -1, 27, 101, -2, 100, 100, 101, 1, 101, 101, 1105, 1, 9, 101, 105, 101, 105, 101, 2, 104, 104, 101, 1, 102, 102, 1, 102, 102, 103, 101, 1, 103, 103, 7, 102, 101, 52, 1106, -1, 87, 101, 105, 102, 59, 1005, -1, 65, 1, 103, 104, 104, 101, 105, 102, 83, 1, 103, 83, 83, 7, 83, 105, 78, 1106, -1, 35, 1101, 0, 1, -1, 1105, 1, 69, 4, 104, 99
            };
            IntCodeVM2 vm = new IntCodeVM2(program);

            vm.AddInput(limit);
            DateTime start = DateTime.Now;

            vm.ExecuteProgram();
            DateTime end = DateTime.Now;

            Console.WriteLine($"Sum of primes below {limit} is {vm.GetLastOutput()}, took {(end - start).TotalSeconds:F3}s");
        }
コード例 #3
0
        public static void BenchmarkAckermann(int m, int n)
        {
            List <long> program = new List <long>()
            {
                109, 99, 21101, 0, 13, 0, 203, 1, 203, 2, 1105, 1, 16, 204, 1, 99, 1205, 1, 26, 22101, 1, 2, 1, 2105, 1, 0, 1205, 2, 40, 22101, -1, 1, 1, 21101, 0, 1, 2, 1105, 1, 16, 21101, 0, 57, 3, 22101, 0, 1, 4, 22101, -1, 2, 5, 109, 3, 1105, 1, 16, 109, -3, 22101, 0, 4, 2, 22101, -1, 1, 1, 1105, 1, 16
            };
            IntCodeVM2 vm = new IntCodeVM2(program);

            vm.AddInput(m);
            vm.AddInput(n);
            DateTime start = DateTime.Now;

            vm.ExecuteProgram();
            DateTime end = DateTime.Now;

            Console.WriteLine($"Ackermann {m},{n} is {vm.GetLastOutput()}, took {(end - start).TotalSeconds:F3}s");
        }