コード例 #1
0
        /// <summary>
        /// Calculate the complexity in the supplied <see cref="IAtomContainer"/>.
        /// </summary>
        /// <returns>the complexity</returns>
        public Result Calculate(IAtomContainer container)
        {
            container = (IAtomContainer)container.Clone();

            int    a = 0;
            double h = 0;

            foreach (var atom in container.Atoms)
            {
                switch (atom.AtomicNumber)
                {
                default:
                    h++;
                    goto case AtomicNumbers.C;

                case AtomicNumbers.C:
                    a++;
                    goto case AtomicNumbers.H;

                case AtomicNumbers.H:
                    break;
                }
            }
            var b = container.Bonds.Count + AtomContainerManipulator.GetImplicitHydrogenCount(container);
            var c = Math.Abs(b * b - a * a + a) + (h / 100);

            return(new Result(c));
        }