Python代码:输入命题公式输出合取/析取范式及主合取/析取范式
好的,以下是Python代码实现,可以通过输入一个命题公式,输出合取/析取范式和主合取/析取范式: ```python def input_formula(): # 输入命题公式 print("请输入一个命题公式,以'&'表示合取,'|'表示析取,'~'表示否定:") formula = input() return formula def negation(formula): # 计算否定 return "~(" + formula + ")" if "~" in formula else formula def cnf(formula): # 转换公式为合取范式 cnf_formula = "" stack = [] for char in formula: if char == "&": stack.append("&") elif char == "|": if len(stack) > 0 and stack[-1] == "&": stack.pop() cnf_formula += "|" else: stack.append("|") elif char == "~": if len(stack) > 0 and stack[-1] == "&": stack.pop() cnf_formula += "~" else: stack.append("~") else: cnf_formula += char while len(stack) > 0: cnf_formula += stack.pop() return cnf_formula def pcnf(formula): # 转换公式为主合取范式 pcnf_formula = "" stack = [] for char in formula: if char == "&": stack.append("&") elif char == "|": if len(stack) > 0 and stack[-1] == "&": stack.pop() pcnf_formula += "&" else: stack.append("|") elif char == "~": if len(stack) > 0 and stack[-1] == "&": stack.pop() pcnf_formula += "|" else: stack.append("~") else: pcnf_formula += char while len(stack) > 0: pcnf_formula += stack.pop() return pcnf_formula.replace("|&", "|") # 测试代码 formula = input_formula() cnf_formula = cnf(negation(formula)) pcnf_formula = pcnf(negation(formula)) print("原公式:", formula) print("合取范式:", cnf_formula) print("主合取范式:", pcnf_formula) ``` ######[AI写代码神器 | 616点数解答 | 2023-12-24 14:54:58]
- 全面解析合取/析取范式及主合取/析取范式:定义、示例全掌握!( | 1005点数解答 | 2023-12-24 14:53:57)179
- Python 利用 sympy 实现输入命题公式输出合取/析取及主合取/析取范式( | 1902点数解答 | 2023-12-24 14:54:56)234
- Python代码:输入命题公式输出合取/析取范式及主合取/析取范式(百度文心 | 616点数解答 | 2023-12-24 14:54:58)201
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)478
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)432
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)426
- 输入谓词公式,一键获取前束范式、前束合取/析取范式!( | 1025点数解答 | 2023-12-24 14:56:04)187
- Python 实现:输入谓词公式输出前束、前束合取/析取范式代码示例( | 2526点数解答 | 2023-12-24 14:56:31)174
- Java 实现:从点类到圆类,计算圆心坐标(50,30)、半径 4 的圆周长与面积(字节豆包 | 246点数解答 | 2024-11-11 16:36:30)349
- Java调用Python接口中文乱码?设置UTF - 8编码一招解决!(讯飞星火 | 263点数解答 | 2024-06-06 17:07:59)406
- 解决Java调用Python接口中文乱码问题:设置UTF - 8编码全攻略(讯飞星火 | 160点数解答 | 2024-06-06 17:18:39)429
- Java调用Python接口中文乱码问题:字符编码统一解决方案(讯飞星火 | 344点数解答 | 2024-06-06 17:19:55)542