示例#1
0
        void scanStr(string str, byte firstFinger, out TCharFingers res)
        {
            bool sameFinger = false;
            byte finger     = 0;

            res = new TCharFingers();
            bool oldWasDelim;

            foreach (char ch in str)
            {
                oldWasDelim = false;
                if (finger > 4)
                {
                    finger = 1;
                }
                if (ch == '|')
                {
                    oldWasDelim = true;
                    sameFinger  = !sameFinger;
                    if ((!sameFinger) && (oldWasDelim))
                    {
                        finger++;                                                  //|||||A|
                    }
                }
                else
                {
                    res.Enqueue(new TCharFinger(ch, (byte)(finger + firstFinger)));
                    if (!sameFinger)
                    {
                        finger++;
                    }
                }
            }
        }
示例#2
0
        public TTskRandom(TTskFreqList _parentCharFreqList, int _tskNo, string right, string left, bool _isAlone, Color _col, int _minLen, int _maxLen) : base(_parentCharFreqList, _tskNo)       //maxLen==0 - spetial chars
        {
            TCharFingers leftData, rightData, tempData;

            scanStr(left, 0, out leftData);
            scanStr(right, 5, out rightData);
            fingerNums = new Byte[leftData.Count + rightData.Count];
            if (leftData.Count > rightData.Count)
            {
                tempData  = rightData;
                rightData = leftData;
                leftData  = tempData;
            }
            string       allChars = "";
            TCharFingers pairs    = new TCharFingers();

            foreach (TCharFinger pair in rightData)
            {
                pairs.Clear();
                pairs.Enqueue(pair);
                if (leftData.Count > 0)
                {
                    pairs.Enqueue(leftData.Dequeue());
                }
                foreach (TCharFinger intPair in pairs)
                {
                    fingerNums[allChars.Length] = intPair.Value;
                    allChars += intPair.Key;
                }
            }
            chars   = allChars;
            col     = _col;
            isAlone = _isAlone;
            minLen  = _minLen;
            maxLen  = _maxLen;
            count   = 0;
        }