作业1COMP9021,第1学期,20221。一般事项1.1。目标。作业的目的是:?让您设计一个需要解析和分析文本并执行逻辑计算的问题的解决方案;?让您以简短的Python程序的形式实现该解决方案;?练习从文件中读取和尤其是使用测试、重复、列表、集合、字符串、Booleanoperators.1.2。提交。您的程序将存储在名为knights_and_knaves.py的文件中。在您开发和测试您的程序后,使用Ed上传它(除非您直接在Ed中工作)。作业可以提交多次;最后一个版本被标记。您的作业截止日期为3月28日上午10:00.1.3。评估。作业值13分。它将针对许多输入文件进行测试。对于每次测试,自动标记脚本将使您的程序运行30秒。迟交作业将受到处罚:迟交的标记ssion将是奖励标记的最小值和10减去从到期日起已经过去的全部和部分天数。你的程序的输出应该完全如indicated.1.4。关于抄袭政策的提醒。你被允许,实际上是被鼓励,与其他人讨论解决作业的方法。此类讨论必须针对算法,而不是代码。但是您必须自己实施解决方案。当学生复制和修改其他人的作品,或者在一个单一的实现上紧密合作时,提交的内容会被定期扫描以寻找相似之处。严厉处罚适用。12RaymondSmullyan设计了许多涉及骑士和无赖的谜题。骑士总是说真话,而无赖总是说谎。我们将骑士和无赖称为爵士。拼图是一组英语句子,涉及有限数量的Sirs。解决难题意味着:?确定参与难题的所有Sirs的名字;?d确定谜题的解决方案,其中一个解决方案使每个Sir有资格成为骑士或无赖。有些谜题没有解决方案,有些有唯一的解决方案,而其他的至少有2个解决方案。以下是一个具有独特解决方案的谜题示例。一天晚上,当您外出散步时,您经过一个标有“不准入内”的门口。里面有人在说话。好奇,你听,你听到保罗爵士说:“我们都是无赖。”珍妮爵士回答道:“我们中正好有一位是骑士。”至于同样在里面的约翰爵士,他只是保持沉默。谁是骑士,谁是无赖?参与这个谜题的爵士是珍妮爵士、约翰爵士和保罗爵士。唯一的解决方案是珍妮爵士是骑士,约翰爵士是无赖,保罗爵士是无赖.2。详细说明2.1。拼图的语法。一个句子以大写字母开头,以句号、感叹号或问号结尾,可能后跟c丢失双引号。Sir,Sirs,Sirnames,Knight和Knave总是以大写字母开头,句子中的其他单词都不大写。谜题中的一个句子最多包含一个用双引号括起来的部分。当一个句子包含一个用双引号括起来的部分时,双引号外面的部分包含一个SirSir_Name形式的出现,而出现在双引号之间的是SirSir_Name说的话。一个句子中没有包含在双引号之间的部分可能指的是多个Sirs,其形式总是SirSir_Name,或SirsSir_Name_1andSir_Name_2,或SirsSir_Name_1,Sir_Name_2,…andSir_Name_n,其中n≥3,andSir_Name_1,…,Sir_Name_n双引号之间是以下形式之一的句子,以逗号、句号、感叹号或问号结尾:?At/at/atleastoneofConjunction_of_Sirs/usisaKnight/Knave?At/atmosConjunction_of_Sirs/us中的一个是Knight/Knave?Exactly/exactlyoneofConjunction_of_Sirs/usisaKnight/Knave?All/allofusareKnight/Knaves?IamaKnight/Knave?SirSir_NameisaKnight/Knave?Disjunction_of_Sirs是骑士/无赖?Conjunction_of_Sirs是骑士/无赖:?Disjunction_of_Sirs为以下形式之一:–Sir_1或Sir_2–Sir_1、Sir_2、……或Sir_n(n≥3)?Conjunction_of_Sirs为以下形式之一:–Sir_1andSir_2–Sir_1,Sir_2,…andSir_n(n≥3)?Sir_1,…,Sir_n是SirSir_Name或I.32.2形式的成对不同表达式。程序的输入和输出。您的程序将提示用户输入一个文本文件,假设存储在工作目录中,该文件存储构成谜题的句子。不应假设作为输入提供的英语句子的数量,也不应假设句子的长度,也不应假设Sirname的长度,也不应假设参与拼图的Sirs的数量。你的程序应该:?按字典顺序输出参与拼图的Sirs(5分);?输出是否有解,如果有,有多少(3分);?如果唯一存在解决方案,输出它,所有Sirs都被认定为Knight或Knave按字母顺序排列(5分)。42.3。示例输出。这里有一些测试以及预期的输出。您的程序的输出应与以下输出完全一致。你的程序的输出将逐行匹配预期的输出。$cattest_1.txt我刚刚看到Sanjay和Eleonore爵士!“我是无赖,”Eleonore爵士低声说。谁是骑士,谁是无赖?$python3knights_and_knaves.pyWhichtextfiledoyouwanttouseforthepuzzle?test_1.txtTheSirsare:EleonoreSanjayThereisnosolution.$cattest_2.txt我刚遇到弗兰克爵士,保罗爵士和尼娜爵士。尼娜爵士说:“我是骑士”,但我不确定那是不是真的。你怎么看?$python3knights_and_knaves.py你想用哪个文本文件来做这个谜题?test_2.txtTheSirsare:FrankNinaPaulThereare8solutions.$cattest_3.txt昨天拜访了Andrew爵士和Nancy爵士。我问安德鲁爵士他是谁,他不耐烦地回答:“南希爵士和我是无赖!”然后我遇到了比尔爵士,他把我介绍给他的妻子并告诉我:“至少希拉里爵士和我是个无赖。”我应该相信他们吗?$python3knights_and_knaves.py你想用哪个文本文件来做这个谜题?test_3.txtTheSirsare:AndrewBillHilaryNancy有唯一解:SirAndrewisaKnave.SirBillisaKnight.SirHilaryisaKnave.SirNancyisaKnight.WX:codehelp
