Exemple #1
0
        public Neuron(ProcessorContainer pc)
        {
            if (pc == null)
            {
                throw new ArgumentNullException();
            }
            if (pc.Count > char.MaxValue)
            {
                throw new ArgumentException();
            }

            _procNames = new Dictionary <char, char>(pc.Count);
            ProcessorHandler ph = new ProcessorHandler();
            StringBuilder    sb = new StringBuilder(pc.Count);

            for (char k = char.MinValue; k < pc.Count; ++k)
            {
                if (!ph.Add(ProcessorHandler.RenameProcessor(pc[k], new string(k, 1))))
                {
                    continue;
                }
                char c = char.ToUpper(pc[k].Tag[0]);
                _procNames[c] = k;
                sb.Append(c);
            }

            _processorContainer = ph.Processors;
            _workReflex         = new Reflex(_processorContainer);
            _stringQuery        = sb.ToString();
        }
Exemple #2
0
 public Processor this[int index]
 {
     get
     {
         Processor p = _processorContainer[index];
         return(ProcessorHandler.RenameProcessor(p, _stringQuery[p.Tag[0]].ToString()));
     }
 }
Exemple #3
0
 IEnumerable <Processor> GetNewProcessors(Reflex start, Reflex finish)
 {
     if (start == null)
     {
         throw new ArgumentNullException();
     }
     if (finish == null)
     {
         throw new ArgumentNullException();
     }
     for (int k = start.Count; k < finish.Count; ++k)
     {
         Processor p = finish[k];
         yield return(ProcessorHandler.RenameProcessor(p, _stringQuery[p.Tag[0]].ToString()));
     }
 }
Exemple #4
0
        public Neuron FindRelation(Request request)//Никакой "автоподбор" не требуется. Запоминает причины и следствия путём "перебора"... Причина и следствие могут быть любыми, отсюда - любой цвет любого пикселя на карте. Если надо поменять символ карты, можно задать такую карту без ограничений. Это и есть "счётчик".
        {
            if (!request.IsActual(ToString()))
            {
                throw new ArgumentException();
            }
            ProcessorHandler ph = new ProcessorHandler();

            foreach ((Processor processor, string query) in request.Queries)
            {
                Reflex refResult = _workReflex.FindRelation(processor, TranslateQuery(query));
                if (refResult != null)
                {
                    ph.AddRange(GetNewProcessors(_workReflex, refResult));
                }
            }
            return(request.IsActual(ph.ToString()) ? new Neuron(ph.Processors) : null);
        }