示例#1
0
        public override void Calc()
        {
            map = input.Replace("\r\n", "\n");

            scaner.map = map;
            scaner.wd  = map.IndexOf("\n") + 1;

            var srch = input.Replace(".", "").Replace("\n", "").Replace("\r", "").Replace("#", "");

            var n = new scaner.node();

            n.name = '@';
            scaner.nodes.Add('@', n);

            foreach (char c in srch)
            {
                if (char.IsLower(c) && !scaner.nodes.ContainsKey(c))
                {
                    n      = new scaner.node();
                    n.name = c;
                    scaner.nodes.Add(c, n);
                    //  Console.WriteLine(c);
                }
            }

            foreach (var c in scaner.nodes.Keys)
            {
                var s = new scaner();
                s.scanFrom(c);
            }

            /*
             * foreach (var a in scaner.nodes)
             * {
             *  Console.WriteLine();
             *  foreach (var b in a.Value.links.Keys)
             *  {
             *      Console.WriteLine("{0} -> {1} : {2} : {3}", a.Key, b, a.Value.links[b], a.Value.locks[b]);
             *  }
             * }
             */
            Console.WriteLine("Wait for it...");
            foreach (var a in scaner.nodes)
            {
                a.Value.genBinMask();
            }



            int st = scaner.node.MaskAdd(0, scaner.node.charToInt('@'));

            scaner.node.scan('@');



            output = "" + scaner.node.min;
        }
        public override void Calc()
        {
            map = input.Replace("\r\n", "\n");

            scaner.map = map;
            scaner.wd  = map.IndexOf("\n") + 1;

            var srch = input.Replace(".", "").Replace("\n", "").Replace("\r", "").Replace("#", "");

            var n = new scaner.node();

            n.name = '@';
            scaner.nodes.Add('@', n);

            foreach (char c in srch)
            {
                if (char.IsLower(c) && !scaner.nodes.ContainsKey(c))
                {
                    n      = new scaner.node();
                    n.name = c;
                    scaner.nodes.Add(c, n);
                    //  Console.WriteLine(c);
                }
            }

            foreach (var c in scaner.nodes.Keys)
            {
                var s = new scaner();
                s.scanFrom(c);
            }

            foreach (var a in scaner.nodes)
            {
                Console.WriteLine();
                foreach (var b in a.Value.paths.Keys)
                {
                    Console.WriteLine("{0} -> {1} : {2} : {3}", a.Key, b, a.Value.paths[b], a.Value.locks[b]);
                }
            }

            foreach (var a in scaner.nodes)
            {
                a.Value.genLocks2();
            }



            HashSet <char> st = new HashSet <char>();

            st.Add('@');

            output = "" + scaner.nodes['@'].search(st, 0);
        }
示例#3
0
        public void GetDevicefromBase()
        {
            int scancount = _ge.scaners.Count(sc => sc.ids == 1);

            if (scancount == 0)
            {
                SelectDevice();
            }
            else
            {
                scaner s = _ge.scaners.First(sc => sc.ids == 1);
                _currentscaner = new Scaner(s.currentscanername, Scaner.StringToScanerType(s.driver), _wh);
            }
        }
示例#4
0
        private void SaveScaner()
        {
            int scancount = _ge.scaners.Count(sc => sc.ids == 1);

            if (scancount == 0)
            {
                scaner s = scaner.Createscaner(0, _currentscaner.Name, _currentscaner.Type.ToString());
                _ge.scaners.AddObject(s);
            }
            else
            {
                scaner s = _ge.scaners.First(sc => sc.ids == 1);
                s.currentscanername = _currentscaner.Name;
                s.driver            = _currentscaner.Type.ToString();
            }
            _ge.SaveChanges();
        }
示例#5
0
        public override void Calc()
        {
            map = input.Replace("\r\n", "\n");

            int wd = map.IndexOf("\n") + 1;

            int center = map.IndexOf('@');
            int sx     = center % wd;
            int sy     = center / wd;

            StringBuilder sb = new StringBuilder(map);

            sb[sx - 1 + (sy - 1) * wd] = '@';
            sb[sx + (sy - 1) * wd]     = '#';
            sb[sx + 1 + (sy - 1) * wd] = '$';

            sb[sx - 1 + sy * wd] = '#';
            sb[sx + sy * wd]     = '#';
            sb[sx + 1 + sy * wd] = '#';

            sb[sx - 1 + (sy + 1) * wd] = '*';
            sb[sx + (sy + 1) * wd]     = '#';
            sb[sx + 1 + (sy + 1) * wd] = '&';



            map = sb.ToString();
            //Console.WriteLine(map);
            var srch = input.Replace(".", "").Replace("\n", "").Replace("\r", "").Replace("#", "");


            var n1 = new scaner.node();

            n1.name = '@';
            scaner.nodes.Add('@', n1);

            var n2 = new scaner.node();

            n2.name = '$';
            scaner.nodes.Add('$', n2);

            var n3 = new scaner.node();

            n3.name = '&';
            scaner.nodes.Add('&', n3);

            var n4 = new scaner.node();

            n4.name = '*';
            scaner.nodes.Add('*', n4);


            scaner.map = map;
            scaner.wd  = wd;


            foreach (char c in srch)
            {
                if (char.IsLower(c) && !scaner.nodes.ContainsKey(c))
                {
                    scaner.node n = new scaner.node();
                    n.name = c;
                    scaner.nodes.Add(c, n);
                    //Console.WriteLine(c);
                }
            }

            foreach (var c in scaner.nodes.Keys)
            {
                var s = new scaner();
                s.scanFrom(c);
            }

            /*
             * foreach (var a in scaner.nodes)
             * {
             *    Console.WriteLine();
             *    foreach (var b in a.Value.links.Keys)
             *    {
             *        Console.WriteLine("{0} -> {1} : {2} : {3}", a.Key, b, a.Value.links[b], a.Value.locks[b]);
             *    }
             * }
             */
            //Console.WriteLine("Wait for it...");
            foreach (var a in scaner.nodes)
            {
                a.Value.genBinMask();
            }



            // int st = scaner.node.MaskAdd(0, scaner.node.charToInt('@'));

            scaner.node.scan(new char[] { '@', '$', '&', '*' });


            output = "" + scaner.node.min;
        }