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 } }
public void Back() { if (TrackAnsweredQuestions.Count > 0) { TrackFirstCharacterChange.Pop(); TrackAnsweredQuestions.Pop().Reset(); } }