用状态机实现110101序列检测的代码
时间: 2024-05-08 15:20:36 浏览: 57
FPGA设计之 使用Moore状态机 设计序列检测器“101001”
5星 · 资源好评率100%
以下是用状态机实现110101序列检测的Python代码:
```python
class StateMachine:
def __init__(self):
self.state = 'S0'
def input(self, char):
if self.state == 'S0':
if char == '1':
self.state = 'S1'
elif self.state == 'S1':
if char == '1':
self.state = 'S1'
elif char == '0':
self.state = 'S2'
elif self.state == 'S2':
if char == '1':
self.state = 'S3'
elif char == '0':
self.state = 'S2'
elif self.state == 'S3':
if char == '0':
self.state = 'S4'
else:
self.state = 'S1'
elif self.state == 'S4':
if char == '1':
self.state = 'S5'
else:
self.state = 'S2'
elif self.state == 'S5':
if char == '0':
self.state = 'S0'
else:
self.state = 'S1'
def run(self, input_str):
for char in input_str:
self.input(char)
return self.state == 'S0'
if __name__ == '__main__':
sm = StateMachine()
input_str = '110101'
if sm.run(input_str):
print(f'The input string {input_str} is accepted')
else:
print(f'The input string {input_str} is rejected')
```
这里我们定义了一个状态机类 `StateMachine`,其中 `input` 方法根据当前状态和输入字符进行状态转移,`run` 方法则接收一个输入字符串并依次输入字符,最后返回该字符串是否被接受。在 `main` 函数中我们创建了一个状态机实例 `sm` 并输入了字符串 `'110101'` 进行测试。
阅读全文