34 lines
No EOL
825 B
C#
34 lines
No EOL
825 B
C#
using System.Collections.Generic;
|
|
|
|
namespace Domain {
|
|
public class KeyHistory {
|
|
private readonly List<int> _lastPresses = new();
|
|
private readonly List<int> _desiredSequence;
|
|
|
|
public KeyHistory(List<int> desiredSequence) {
|
|
_desiredSequence = desiredSequence;
|
|
}
|
|
|
|
public void KeyPressed(int key) => _lastPresses.Add(key);
|
|
public void ClearPressed() => _lastPresses.Clear();
|
|
|
|
public bool ContainsSequence() {
|
|
if (_lastPresses.Count < _desiredSequence.Count)
|
|
return false;
|
|
|
|
for (int i = 0; i < _lastPresses.Count; i++) {
|
|
if (i >= _desiredSequence.Count)
|
|
break;
|
|
|
|
int keyPressed = _lastPresses[_lastPresses.Count - 1 - i];
|
|
int sequenceKey = _desiredSequence[_desiredSequence.Count - 1 - i];
|
|
|
|
if (keyPressed != sequenceKey) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|
|
} |