Ejemplo n.º 1
0
 public override int Execute(Duet state)
 {
     if (IsNumeric)
     {
         state.Registers[RegisterName] = state.Registers[RegisterName] % NumericValue;
     }
     else
     {
         state.Registers[RegisterName] = state.Registers[RegisterName] % state.Registers[Value];
     }
     return(1);
 }
Ejemplo n.º 2
0
        public override int Execute(Duet state)
        {
            var value = Regex.IsMatch(RegisterName, "^[a-z]*$")
                ? state.Registers[RegisterName] :
                        Convert.ToInt64(RegisterName);

            var target = state.Partner ?? state;

            target.Messages.Enqueue(value);
            state.MessagesSent++;

            Console.WriteLine($"{state.Id} sent {value} to {target.Id}");

            return(1);
        }
Ejemplo n.º 3
0
        public override int Execute(Duet state)
        {
            state.Waiting = state.Messages.Count == 0;
            if (state.Waiting)
            {
                Console.WriteLine($"{state.Id} is waiting.");
                return(0);
            }

            var receivedValue = state.Messages.Dequeue();

            Console.WriteLine($"{state.Id} received {receivedValue}");

            state.Registers[RegisterName] = receivedValue;
            return(1);
        }
Ejemplo n.º 4
0
 public override int Execute(Duet state)
 {
     if (Regex.IsMatch(RegisterName, "^[a-z]*$"))
     {
         if (state.Registers[RegisterName] > 0)
         {
             return(IsNumeric ? (int)NumericValue : (int)state.Registers[Value]);
         }
     }
     else
     {
         if (Convert.ToInt32(RegisterName) > 0)
         {
             return(IsNumeric ? (int)NumericValue : (int)state.Registers[Value]);
         }
     }
     return(1);
 }
Ejemplo n.º 5
0
 public abstract int Execute(Duet state);
Ejemplo n.º 6
0
 public void Connect(Duet partner)
 {
     Partner         = partner;
     partner.Partner = this;
 }