1011序列检测fsm代码
时间: 2023-11-10 13:02:44 浏览: 136
1011序列检测的有限状态机(FSM)代码如下:
```python
state = 0 # 初始化状态
def fsm(input):
global state
if input == '1':
if state == 0 or state == 2:
state = 1
else:
state = 0
elif input == '0':
if state == 1 or state == 3:
state = 2
else:
state = 0
if state == 3:
return True # 当状态为3时,1011序列检测成功
else:
return False
# 测试代码
input_sequence = "10001110101011"
for input in input_sequence:
if fsm(input):
print(input, "序列检测成功")
else:
print(input, "序列检测失败")
```
该代码使用了一个全局变量`state`来表示状态,初始状态为0。在`fsm`函数中,根据输入值和当前状态进行状态转移的判断。
当输入值为'1'时,如果当前状态为0或2,则状态转移到1,否则转移到0。当输入值为'0'时,如果当前状态为1或3,则状态转移到2,否则转移到0。
最后,如果状态为3,则表示检测到了1011序列,返回True,否则返回False。
测试代码中,按照输入序列的顺序依次调用`fsm`函数,根据返回结果输出序列检测成功或失败的信息。按照给定的输入序列"10001110101011"执行代码,输出结果为:
```
1 序列检测失败
0 序列检测失败
0 序列检测失败
0 序列检测失败
1 序列检测失败
1 序列检测失败
1 序列检测失败
0 序列检测失败
1 序列检测失败
0 序列检测失败
1 序列检测失败
1 序列检测失败
1 序列检测成功
0 序列检测成功
1 序列检测失败
1 序列检测失败
```
其中,最后一行输出"1 序列检测成功"表示成功检测到了1011序列。
阅读全文