コード例 #1
0
        public short Next(Func <string, MYCIN_TERM_FACTOR> AskFunc)
        {
            var topCharacter = Characters.FirstOrDefault();

            if (topCharacter.Score < Threshold)
            {
                var nxtQuestionIndex = FindNextQuestionIndex(topCharacter); //Random Because Shuffeled
                if (nxtQuestionIndex > -1)
                {
                    var ans = AskFunc(Questions[nxtQuestionIndex].value);
                    Questions[nxtQuestionIndex].Answer = ans;

                    TrackFirstCharacterChange.Push(new character(Characters.FirstOrDefault()));
                    TrackAnsweredQuestions.Push(Questions[nxtQuestionIndex]);

                    return(0); //Trying to find the goal
                }
                else
                {
                    if (Characters.Count > 1)
                    {
                        Characters.RemoveAt(0); //Skip To Next Character
                        return(Next(AskFunc));
                    }
                    else
                    {
                        return(-1); //Cannot Found
                    }
                }
            }
            else
            {
                return(1); //Found
            }
        }
コード例 #2
0
 public void Back()
 {
     if (TrackAnsweredQuestions.Count > 0)
     {
         TrackFirstCharacterChange.Pop();
         TrackAnsweredQuestions.Pop().Reset();
     }
 }