Пример #1
0
        public Circuit CreateCircuit()
        {
            CircuitContext circuitContext = new CircuitContext(
                _numberOfAndGates,
                _numberOfXorGates,
                _numberOfNotGates,
                _nextInputIndex,
                _nextOutputIndex
                );

            return(new Circuit(_outputGates, circuitContext));
        }
Пример #2
0
        public Circuit CreateCircuit()
        {
            CircuitContext circuitContext = new CircuitContext(
                _nextAndGateId,
                _nextXorGateId,
                _nextNotGateId,
                _nextInputGateId,
                _nextOutputGateId
                );

            return(new Circuit(_outputGates, circuitContext));
        }
Пример #3
0
 public Task <T> EvaluateNotGate(Task <T> value, GateContext gateContext, CircuitContext circuitContext)
 {
     return(value.ContinueWith(task => _innerEvaluator.EvaluateNotGate(task.Result, gateContext, circuitContext)));
 }
Пример #4
0
 public Task <T> EvaluateXorGate(Task <T> leftValue, Task <T> rightValue, GateContext gateContext, CircuitContext circuitContext)
 {
     return(Task.WhenAll(leftValue, rightValue).ContinueWith(
                task => _innerEvaluator.EvaluateXorGate(task.Result[0], task.Result[1], gateContext, circuitContext)
                ));
 }
Пример #5
0
 public abstract void Evaluate <T>(
     ICircuitEvaluator <T> evaluator,
     EvaluationState <T> evaluationState,
     CircuitContext circuitContext
     );
Пример #6
0
 public EvaluationState(T[] input, CircuitContext context)
 {
     _input  = input;
     _output = new T[context.NumberOfOutputGates];
     _gateEvaluationValues = new IdMapping <Optional <T> >(Optional <T> .Empty, context.NumberOfGates);
 }
Пример #7
0
 public Bit EvaluateNotGate(Bit value, GateContext gateContext, CircuitContext circuitContext)
 {
     return(~value);
 }
Пример #8
0
 public Bit EvaluateXorGate(Bit leftValue, Bit rightValue, GateContext gateContext, CircuitContext circuitContext)
 {
     return(leftValue ^ rightValue);
 }
Пример #9
0
 public Circuit(IReadOnlyList <OutputGate> outputGates, CircuitContext context)
 {
     OutputGates = outputGates;
     Context     = context;
 }