public static IEnumerable <StateRegister> EnumerateStates(this CodeConfig config)
 {
     for (var i = 0; i < 1 << config.NoOfStateRegisters; i++)
     {
         yield return(StateRegister.Create(i.GetBools(config.NoOfRegisters).Reverse()));
     }
 }
        private static Transition CalculateTransition(StateRegister state, bool input, CodeConfig config)
        {
            var newState = state.Shift(input);
            var output   = newState.GetOutput(config).ToList();

            return(new Transition(state.State.Values, input, output, newState.State.Values));
        }
Exemplo n.º 3
0
        public IReadOnlyList <bool> Encode(IEnumerable <bool> input)
        {
            var inputList = input as IReadOnlyList <bool> ?? input.ToList();

            var result = new List <bool>(GetResultLength(inputList));

            var stateReg = StateRegister.CreateInitial(config.NoOfRegisters);

            foreach (var i in inputList)
            {
                stateReg = stateReg.Shift(i);

                result.AddRange(stateReg.GetOutput(config));
            }


            if (terminateCode)
            {
                while (stateReg.State.Values.Any(s => s))
                {
                    stateReg = stateReg.Shift(false);

                    result.AddRange(stateReg.GetOutput(config));
                }
            }


            return(result);
        }