C++ 在数组中生成列表和函数的使用

C++ 在数组中生成列表和函数的使用,c++,arrays,C++,Arrays,我想知道如何使用从1111开始一直到8888的值创建一个数组。我这样问是因为我需要生成一个由4位数字组成的列表,每个数字的范围为1-8。我想把它做成一个循环。此外,在我的以下程序中,我对我的函数trim、有条理地限制、猜测和消除、以及猜测三然后消除感到迷茫。以下是说明: 本作业主要介绍数组在程序中的使用,包括将数组用作函数的参数 问题描述 在“智囊团”游戏中,玩家只需进行有限数量的猜测,就可以尝试识别隐藏的组合(例如12次猜测)。通常这是玩游戏的唯一限制。 但有些玩家可能会相互竞争,看看谁能在更

我想知道如何使用从1111开始一直到8888的值创建一个数组。我这样问是因为我需要生成一个由4位数字组成的列表,每个数字的范围为1-8。我想把它做成一个循环。此外,在我的以下程序中,我对我的函数trim、有条理地限制猜测和消除、以及猜测三然后消除感到迷茫。以下是说明:

本作业主要介绍数组在程序中的使用,包括将数组用作函数的参数

问题描述 在“智囊团”游戏中,玩家只需进行有限数量的猜测,就可以尝试识别隐藏的组合(例如12次猜测)。通常这是玩游戏的唯一限制。 但有些玩家可能会相互竞争,看看谁能在更少的尝试中猜出对方的组合。在这种情况下,问题不仅在于提出一种能够在指定范围内找到答案的策略,而且在于找到一种可能需要最少猜测次数的策略

这就是电脑的用武之地——人们可以编写一个程序来尝试不同的猜测策略,看看它们是如何运作的。由于计算机可以比人更快地进行分析和计算,所以它可以假装使用我们选择的任何策略代表我们充当主脑,并告诉我们完成这项工作需要多长时间

整体解决方案

当然,要教计算机像人一样推理是极其困难的。例如,如果我们猜测了一个组合1111,得到了一个黑色的peg,我们会在脑海中记下答案中正好有一个1,然后在记住这一事实的情况下继续进行其他猜测。如果我们下一步猜测1222,得到一个白色的钉子,我们就会知道没有2个钉子,并且单个的1不在第一个位置。但是,在一系列猜测之后,如何跟踪这些信息将是相当困难的

幸运的是,对于使用阵列的计算机模拟,我们可以以不同的方式记录所有已知事实。我们只是保留一个可能存在的所有可能答案的列表,然后从列表中删除不再是解决方案的数字。如果我们的第一个猜测告诉我们正好有一个1位数,我们将删除所有没有该功能的数字。当我们发现不存在2时,我们会消除所有包含2的值。最终,剩下的唯一数字将是正确答案

一些简单的策略

  • 这是许多玩家使用的一种策略,类似于上面所描述的。只是以一种直截了当的方式有条不紊地解决了各种可能性。1111的第一个猜测将回答解决方案中有多少个1;下一个猜测将回答解决方案中有多少个2,并说明任何1的位置,依此类推。 在我们的列表方法中,包含了大量的可能性,从111111111211131114等开始,我们的下一个猜测总是列表中的第一个

  • 下一个策略是给那些喜欢多一点刺激的人。猜测似乎或多或少是随机的,希望能发现更多的信息。模拟这种方法非常简单——如果您有一个数字列表,只需随机选择一个。如果在数组中有837种可能性可供选择,只需选择0到836范围内的随机下标

  • 第三种策略考虑的是,与给定猜测结果相似的答案在某种意义上彼此相似的可能性。因此,为了获得更多的信息,它仍然会随机选取一些数字,而不考虑它们是如何被评估的,然后才开始考虑结果。 为了实现这一点,让我们只选择三个可能的答案并猜测它们,暂时忽略它们为我们赢得了多少黑钉和白钉。只有在做出这些猜测之后,我们才能删减可能性列表,然后按照上面的第二个策略继续进行

  • 样本接口 以下是当前实现的示例结果:请输入要尝试的组合,或输入0作为随机值:0 估计是2475

    Guessing 1111...
    Guessing 2222...
    Guessing 2333...
    Guessing 2444...
    Guessing 2455...
    Guessing 2456...
    Guessing 2475...
    
    有条不紊地消除所需的7次尝试

    Guessing 6452...
    Guessing 2416...
    Guessing 2485...
    Guessing 2445...
    Guessing 2435...
    Guessing 2425...
    Guessing 2475...
    
    Guessing 7872...
    Guessing 6472...
    Guessing 1784...
    Guessing 2475...
    
    Guessing 3585...
    Guessing 7162...
    Guessing 4474...
    
    猜测并排除所需的7次尝试

    Guessing 6452...
    Guessing 2416...
    Guessing 2485...
    Guessing 2445...
    Guessing 2435...
    Guessing 2425...
    Guessing 2475...
    
    Guessing 7872...
    Guessing 6472...
    Guessing 1784...
    Guessing 2475...
    
    Guessing 3585...
    Guessing 7162...
    Guessing 4474...
    
    猜测三次,然后取消所需的4次尝试

    玩另一个游戏?(是/否)是 请输入要尝试的组合,或输入0作为随机值:0 估计是4474

    Guessing 1111...
    Guessing 2222...
    Guessing 3333...
    Guessing 4444...
    Guessing 4445...
    Guessing 4464...
    Guessing 4474...
    
    有条不紊地消除所需的7次尝试

    Guessing 6452...
    Guessing 2416...
    Guessing 2485...
    Guessing 2445...
    Guessing 2435...
    Guessing 2425...
    Guessing 2475...
    
    Guessing 7872...
    Guessing 6472...
    Guessing 1784...
    Guessing 2475...
    
    Guessing 3585...
    Guessing 7162...
    Guessing 4474...
    
    猜测并消除所需的3次尝试

    Guessing 8587...
    Guessing 1342...
    Guessing 1555...
    Guessing 7464...
    Guessing 6764...
    Guessing 4468...
    Guessing 4474...
    
    猜三次,然后取消所需的7次尝试。 注:此程序允许每个数字增加到8而不是6。即使有4096个可能的答案,它仍然很快找到了它们

    程序规范 分配的程序必须实现以下所有功能。根据需要,允许使用额外的——以下是必需的。未来的作业不会像下面那样详细说明函数,而是要求学生在编写程序之前设计自己的函数描述。主要内容: 简单地控制程序的整体行为。一个数字将是 选择作为目标组合,然后每个策略都将尝试 找到它。 调用:generateAnswer(要比较所有三个,必须有相同的答案) 有条不紊地限制、猜测和消除、猜测然后消除

    生成应答器: 或者让用户在键盘上选择神秘的组合, 或者让计算机生成一个随机组合。 (对于竞争性游戏,了解什么种类可能很有趣 组合的数量最难猜测!) 参数:无! 返回:一个4位数的组合,每个数字的范围在1到8之间

    生成搜索