public bool CheckCompute(int[] input, int[] output)
        {
            byte[]     inputBits   = Core.AppHelper.CreateArrayCopy(input, e => (byte)e);
            BigInteger inputNumber = AppHelper.BitArrayToBigInteger(inputBits);

            int[] factorsByteString = Core.AppHelper.CreateArrayCopy <int, int>(output, t => t);

            (int[] factorXBits, int[] factorYBits) = IF_NDTM.RetrieveFactors(input.Length, factorsByteString);

            byte[]     factorXBits_b = Core.AppHelper.CreateArrayCopy <int, byte>(factorXBits, t => (byte)t);
            byte[]     factorYBits_b = Core.AppHelper.CreateArrayCopy <int, byte>(factorYBits, t => (byte)t);
            BigInteger factorXNumber = VerifyResults.AppHelper.BitArrayToBigInteger(factorXBits_b);
            BigInteger factorYNumber = VerifyResults.AppHelper.BitArrayToBigInteger(factorYBits_b);

            BigInteger xMultYNumber = factorXNumber * factorYNumber;

            byte[] xMultYBits = VerifyResults.AppHelper.BigIntegerToBitArray(xMultYNumber);

            bool result = (xMultYNumber == inputNumber);

            Ensure.That(result).IsTrue();

            log.InfoFormat(
                "{0} mult by {1} = {2}",
                factorXNumber.ToString(),
                factorYNumber.ToString(),
                xMultYNumber.ToString());

            return(result);
        }
Пример #2
0
        public override bool Decide(int[] input)
        {
            tm = new IF_NDTM(input.Length);
            tm.Setup();

            meap = new IF_MEAP(tm);

            return(meap.Decide(input));
        }
Пример #3
0
        public override bool Decide(int[] input)
        {
            tm = new IF_NDTM(input.Length);
            tm.Setup();

            tm.Run(input);

            return(tm.Accepted);
        }