Esempio n. 1
0
        /// <summary>
        /// Выполняет переход к новой конфигурации машины Тьюринга.
        /// </summary>
        /// <param name="convert">Переход.</param>
        private void MakeConversion(TuringConvert convert)
        {
            _tapes.SetValues(convert.Output);
            _tapes.MovePens(convert.Directions);
            _stateIndex = GetStateIndex(convert.OutId);

            if (OnMachineStateChanged != null)
                OnMachineStateChanged(this, new TuringMachineStateChangedEventArgs(convert.Directions));
        }
Esempio n. 2
0
        /// <summary>
        /// Проверяет, совпадают ли текущие символы напротив читающих/пишущих головок с входными символами перехода.
        /// </summary>
        /// <param name="convert">Проверяемый переход машины Тьюринга.</param>
        /// <returns>Истина, если символы совпадают, иначе - ложь.</returns>
        private bool CheckTapeConfig(TuringConvert convert)
        {
            char[] current = _tapes.GetValues();
            int n = current.Length;
            for(int i = 0; i < n; i++)
            {
                if(convert.Input[i] != current[i])
                {
                    return false;
                }
            }

            return true;
        }