在这道题中,一线工程师需要对网络进行健康检查,通过解析布尔表达式来判断网络状态。输入包括两个整数 n
和 m
,分别表示布尔表达式的数量和采集数据的数量。接下来是 n
行的布尔表达式,每个表达式使用 AND
、OR
、()
和 =
等符号来描述条件。然后是 m
行的数据,每行由一个字段名和对应的值组成。根据提供的条件,如果数据满足表达式,则网络健康(输出 0
),否则不健康(输出 1
)。
对于回答的字符串,将里面的key+value替换成1或0,得到一个只包含1,0,&,|,的字符串也就是转换成表达式求值问题模拟即可
在本题中,工程师需要通过给定的布尔表达式来判断网络的健康状态。表达式中包含多个条件,每个条件由字段名和相应的值组成。我们需要根据提供的字段值,计算布尔表达式的结果,并输出网络的健康状态。网络健康被表示为 0
,不健康则表示为 1
。
一线工程师每到重要节日需要对网络进行健康检查,在网络中对各个网元采集数据,判断当前网络是否健康。
因每个网元的判断条件以及采集的数据不同,现在需要你对网络采集到的数据,以及工程师提供的判断条件进行解析。判断条件为布尔表达式,保证合法,字段名不会与关键字冲突。
若采集数据符合条件,则认为网络健康,否则网络处于不健康状态。
第一行有2个整数nm 接下来有n行字符串express 接下来m行,每行均有两个字符串,key和value 备注: 表达式中仅会出现 AND、OR、()、′、空格、=、字段名、数据(单引号内),给出的表达式一定是有效的,AND优先级高于OR “="左侧为字段名 “="右侧为数据,类型为字符串 0<n≤5 0<m≤10
返回表达式结果:0,1。 0表示健康,1表示不健康。
输入
2 2
error = '0' AND (name = 'NE40' OR name = 'NE20')
error = '1' AND (name = 'NE40' OR name = 'NE20')
name NE40
error 0
输出
0
1
说明
对于条件:error=′0′AND(name=′NE40′ORname=′NE20′) 当name取值为NE40,error取值为0时,表达式计算结果为true,所以输出0,表示健康 对于条件:error=′1′AND(name=′NE40′ORname=′NE20′) 当name取值为NE40,error取值为0时,表达式计算结果为false,所以输出1,表示不健康
输入
3 2
error = '1' AND (name = 'NE40' OR name ='NE20')
error = '2' AND (name = 'NE40' OR name ='NE20')
error = '3' AND (name = 'NE40' OR name ='NE20')
name NE40
error 3
输出
1
1
0
说明
对于条件:error=′1′AND(name=′NE40′ORname=′NE20′) 当name取值为NE40,error取值为3时,表达式计算结果为false,所以输出1,表示不健康 对于条件:error=′2′AND(name=′NE40′ORname=′NE20′) 当name取值为NE40,error取值为3时,表达式计算结果为false,所以输出1,表示不健康 对于条件:error=′3′AND(name=′NE40′ORname=′NE20′) 当name取值为NE40,error取值为3时,表达式计算结果为true,所以输出0,表示健康