[编程 | 200] 寄存器匹配

本题可以使用本地IDE编码,不能使用本地已有代码,无跳出限制,编码后请点击“保存并调试”按钮进行代码提交。

输入待匹配的关键字,和一串固定格式的字符串中,提取符合关键字要求的寄存器地址,寄存器掩码,寄存器值。 一串固定格式的字符串由一个或者多个这样的信息组成XXX[addr=0xYYY,mask=0xZZZ,val=0xWWW],匹配规则为:

  1. 左中括号前面的关键字完全匹配
  2. 中括号里面匹配到“addr=”后面的数字是寄存器地址,“mask=”后面的数字是寄存器掩码,“val=”后面的数字是寄存器值,三个都匹配到认为满足。

满足1和2认为匹配到,逐行输出每个条目的寄存器地址,寄存器掩码,寄存器值,信息。否则匹配失败输出:FAIL

其他约束:

  1. 字符串中全部为英文标点符号,不考虑中文
  2. 关键字匹配时大小写不一致认为匹配失败
  3. 输出的寄存器信息允许有大写和小写,
  4. 输入寄存器要求必须十六进制(0x或者0x),寄存器信息允许有大和小写,如0xFF 0xa0
  5. 输入的一串固定格式的字符无空格,不考虑有空格的场景,输入的字符串长度不超过1024,

输入描述:

  • 匹配关键字 待匹配的字符串
  • 其中两个字符串之间通过一个空格区分

输出描述:

  • 将每一个匹配到的条目寄存器值,按照addr mask val的值先后顺序,通过空格区分输出,要包含0x或者0X且与输入的保持一致
  • 每一个匹配的项目单独一行,换行为\r\n,最后一行也增加换行
  • 如果匹配失败,输出:FAIL

示例

输入 输入输出示例仅供调试,后台判题数据一般不包含示例

 read read[addr=0x17,mask=0xff,val=0x7],read_his[addr=0xff,mask=0xff,val=0x1],read[addr=0xf0,mask=0xff,val=0x80]

输出

0x17 0xff 0x7
0xf0 0xff 0x80