Module.cs 681 B

12345678910111213141516171819202122232425262728293031
  1. namespace Day20;
  2. public abstract class Module
  3. {
  4. public string Name { get; }
  5. protected readonly List<Module> _outputs = new List<Module>();
  6. protected readonly List<Module> _inputs = new List<Module>();
  7. public IEnumerable<Module> Inputs => _inputs;
  8. protected Module(string name)
  9. {
  10. Name = name;
  11. }
  12. public abstract string GetState();
  13. public abstract IEnumerable<Pulse> Process(Pulse p);
  14. public virtual void Reset() {}
  15. public void AddOutput(Module destination)
  16. {
  17. _outputs.Add(destination);
  18. }
  19. public void AddInput(Module source)
  20. {
  21. _inputs.Add(source);
  22. }
  23. }