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"); } } } } }