FlipFlopModule.cs 628 B

1234567891011121314151617181920212223242526272829303132
  1. namespace Day20;
  2. public class FlipFlopModule : Module
  3. {
  4. private bool _state = false;
  5. public FlipFlopModule(string name)
  6. : base(name)
  7. {
  8. }
  9. public override string GetState()
  10. {
  11. return _state ? "1" : "0";
  12. }
  13. public override void Reset()
  14. {
  15. _state = false;
  16. }
  17. public override IEnumerable<Pulse> Process(Pulse p)
  18. {
  19. if (p.Value == false)
  20. {
  21. _state = !_state;
  22. return _outputs.Select(o => new Pulse(Name, o.Name, _state));
  23. }
  24. return Enumerable.Empty<Pulse>();
  25. }
  26. }