Пример #1
0
        public override void Solve()
        {
            var pparser = new Pparser(FpatIn);

            int cletter, ccol, crow;

            pparser.Fetch(out cletter, out ccol, out crow);

            var rgletter = new Letter[cletter];

            for (int i = 0; i < cletter; i++)
            {
                rgletter[i] =
                    new Letter(pparser.Fetch <string>(), pparser.FetchN <string>(crow).ToArray());
            }

            var bmpSrc = (Bitmap)Image.FromFile(FpatIn.Replace(".in", ".png"));
            var mp     = ReadLetters(bmpSrc, rgletter);

            using (Output)
                foreach (var letter in rgletter)
                {
                    Solwrt.WriteLine(letter.Ch + " " + mp[letter]);
                }
        }
        public override void Solve()
        {
            var mprgstBycch = new Dictionary <int, List <string> >();

            foreach (var st in File.ReadAllLines(FpatIn.Replace(".in", ".dict")))
            {
                if (!mprgstBycch.ContainsKey(st.Length))
                {
                    mprgstBycch[st.Length] = new List <string>();
                }
                mprgstBycch[st.Length].Add(st);
            }


            using (var bw = new BinaryWriter(File.Open(FpatOut, FileMode.Create)))
            {
                foreach (var tit in Entit(File.ReadAllBytes(FpatIn)))
                {
                    if (!tit.rgch.Contains((byte)'*'))
                    {
                        bw.Write(tit.rgch);
                    }
                    else
                    {
                        var  rgch   = tit.rgch;
                        bool fFound = false;
                        foreach (var stCandidate in mprgstBycch[rgch.Length])
                        {
                            if (FMatch(rgch, stCandidate))
                            {
                                for (int i = 0; i < rgch.Length; i++)
                                {
                                    if (rgch[i] == (byte)'*')
                                    {
                                        bw.Write((byte)stCandidate[i]);
                                    }
                                    else
                                    {
                                        bw.Write(rgch[i]);
                                    }
                                }
                                fFound = true;
                                break;
                                ;
                            }
                        }

                        if (!fFound)
                        {
                            throw new Exception("coki");
                        }
                    }
                }
            }
        }