【无标题】一个异步状态转换器

任务描述

本关任务:编写一个异步状态转换器

相关知识

状态机是一个对真实世界的抽象,而且是逻辑严谨的数学抽象,所以明显非常适合用在数字领域。可以应用到各个层面上,例如硬件设计,编译器设计,以及编程实现各种具体业务逻辑的时候。现在请你实现一个异步的有限状态机

一个有限状态机包含如下几个要素:
状态:系统所处的状态,在运行过程中又可以分为当前状态和下一阶段状态;一个状态机至少要包含两个状态。例如门,有 open 和 closed 两个状态。
事件:也可以理解为每一次运行的输入;事件就是执行某个操作的触发条件或者口令。对于门,“按下开门按钮”就是一个事件。
条件:根据输入事件执行的判定条件,条件是基于状态的,当前所处的每一种状态,都可以有自己对应的一套判定条件,来决定下一步进入哪一种状态;也就是从一个状态变化为另一个状态。例如“开不开门”根据有没有钥匙的条件。
动作:确定切换路径后,执行的附加操作。事件发生以后要执行动作。例如事件是“按开门按钮”,动作是“开门”。
变换:就是从一个状态变化为另一个状态。例如“开门过程”就是一个变换。
举例:街上的自动售货机中明显能看到状态机逻辑。假设有一台只卖2元一瓶的汽水的售货机,只接受五毛和一块的硬币。初始状态是”未付款“,中间状态有”已付款5毛“,”已付款1块“,”已付款1.5块“,”已足额付款“,四个状态。状态切换的触发条件是”投一块硬币“和”投5毛硬币“两种,”到达足额付款“状态,还要进行余额清零和弹出汽水操作。
在下图中,可以看到系统有 S1, S2, S3, S4 四个状态, 0 和 1 是状态机可以从一个状态到另一个状态的值,例如,只有当只为1的时候,S0可以转换到S1,当只为0的时候, S0可以转换到S2。这个转换的过程就是根据条件来切换状态,题目中,我们会输入一组数字作为事件,根据这一组数字,完成状态转换并输出相应的动作,从 S0 开始,叫做 初始状态,最后到 S4,叫做结束状态。

请你根据输入的一组数字,输出各个状态的转换过程。(状态一定从S0开始,到S4结束)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值