- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
“白”是在错误的位置检查正确的数字。但我不知道如何正确计数。
#include "stdafx.h"
#include "stdlib.h"
#include "time.h"
int _tmain(int argc, _TCHAR* argv[])
{
int answer[4];
int guess[4];
int count = 0;
srand(time(NULL));
/*answer[0] = (rand() % 6)+1;
answer[1] = (rand() % 6)+1;
answer[2] = (rand() % 6)+1;
answer[3] = (rand() % 6)+1;*/
answer[0] = 3;
answer[1] = 3;
answer[2] = 5;
answer[3] = 2;
printf("%d %d %d %d\n", answer[0], answer[1], answer[2], answer[3]);
printf(" B W\n");
do
{
int black = 0;
int white = 0;
count++;
printf("Enter 4 numbers, this is your %d guess: ", count);
scanf("%d %d %d %d", &guess[0], &guess[1], &guess[2], &guess[3]);
printf("\n%d %d %d %d\n", guess[0], guess[1], guess[2], guess[3]);
int g2[2][6];
for (int a = 0;a < 4;a++)
g2[0][a]=answer[a];
for (int i = 0;i < 4;i++)
g2[1][i]=guess[i];
if (answer[0]==guess[0])
black++;
if (answer[1]==guess[1])
black++;
if (answer[2]==guess[2])
black++;
if (answer[3]==guess[3])
black++;
if (answer[1]==guess[0] || answer[2]==guess[0] || answer[3]==guess[0])
white++;
if (answer[0]==guess[1] || answer[2]==guess[1] || answer[3]==guess[1])
white++;
if (answer[0]==guess[2] || answer[1]==guess[2] || answer[3]==guess[2])
white++;
if (answer[0]==guess[3] || answer[1]==guess[3] || answer[2]==guess[3])
white++;
if (black==4)
white=0;
g2[1][4]=black;
g2[1][5]=white;
for (int n = 0;n < 6;n++)
printf(" %d",g2[1][n]);
printf("\n");
}
while (answer[0]!=guess[0] || answer[1]!=guess[1] ||
answer[2]!=guess[2] || answer[3]!=guess[3]);
printf("BINGO!!!\n");
return 0;
}
更新 2:
for (int slot=0;slot<4;slot++)
{
if (guess[slot] == answer[slot])
black++;
else
for (int s=0;s<4;s++)
if (s != slot)
{
if (guess[slot] == answer[s])
white++;
break;
}
}
更新 3:
for (int x=0;x<4;x++)
flag[x]=0;
for (int slot = 0;slot < 4;slot++)
{
if (guess[slot] == answer[slot])
if (flag[slot]==1)
black++;
else
for (int s=0;s < 4;s++)
if (s != slot)
{
if (guess[slot] == answer[s])
if (flag[s]==1)
{
white++;
break;
}
}
}
更新 4
for (int x=0;x<4;x++)
flag[x]=0;
for (int slot = 0;slot < 4;slot++)
{
if (guess[slot] == answer[slot]) {
black++;
flag[slot]=1;
}
else
for (int s=0;s < 4;s++)
if (s != slot)
{
if (guess[slot] == answer[s])
{
white++;
flag[s]=1;
break;
}
}
}
更新 5:
#include "stdafx.h"
#include "stdlib.h"
#include "time.h"
int _tmain(int argc, _TCHAR* argv[])
{
int answer[4];
int guess[4];
int flag[4];
int count = 0;
srand(time(NULL));
/*answer[0] = (rand() % 6)+1;
answer[1] = (rand() % 6)+1;
answer[2] = (rand() % 6)+1;
answer[3] = (rand() % 6)+1;*/
answer[0] = 1;
answer[1] = 2;
answer[2] = 3;
answer[3] = 4;
printf("%d %d %d %d\n", answer[0], answer[1], answer[2], answer[3]);
do
{
int black = 0;
int white = 0;
count++;
printf("Enter 4 numbers, this is your %d guess: ", count);
scanf("%d %d %d %d", &guess[0], &guess[1], &guess[2], &guess[3]);
int g2[2][6];
for (int a = 0;a < 4;a++)
g2[0][a]=answer[a];
for (int i = 0;i < 4;i++)
g2[1][i]=guess[i];
for (int x=0;x<4;x++)
flag[x]=0;
for (int slot = 0;slot < 4;slot++)
{
if (guess[slot] == answer[slot])
black++;
else
for (int s=0;s < 4;s++)
if (s != slot && guess[slot] == answer[s] && !flag[s])
{
white++;
flag[s]=1;
break;
}
}
g2[1][4]=black;
g2[1][5]=white;
printf("Guess %d: ", count);
for (int n = 0;n < 4;n++){
printf(" %d",g2[1][n]);
}
printf(" Black: %d White: %d\n", g2[1][4], g2[1][5]);
printf("\n");
}
while (answer[0]!=guess[0] || answer[1]!=guess[1] ||
answer[2]!=guess[2] || answer[3]!=guess[3]);
printf("BINGO!!!\n");
return 0;
}
最佳答案
Knuth 在 The Computer as Master Mind 中回答了这个问题 并承认很难准确定义它。他建议:
计算白人加黑人:
ans
和 guess
,每种颜色都有一个槽。ans
。同样,用当前猜测中该颜色的钉子数量填充 guess
。i
加起来 min(ans[i], guess[i])
。这是白人加黑人。关于c - 如何在c中的mastermind guessing game中正确计算 "white"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2005723/
我一直在尝试将 Knuth 的算法应用到我的 Mastermind 版本中,但我在算法的第 6 步遇到了一些困难。 Here is a link to the steps I'm using.(向下滚
我正在编写一个模拟游戏 Mastermind 的程序,但我正在为如何将猜测的模式与关键模式进行比较而苦苦挣扎。游戏条件略有改变: 图案由字母组成。 如果猜测模式的一个元素等于关键模式的元素,并且索引也
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 9 年前。 Improve t
我将用 Java 制作一款游戏《Number Mastermind》。 现在人工智能会生成 1-6 的 4 个数字,然后用户必须猜测它。 现在我已经有了 20 分钟的 GUI 界面,我正在努力思考如何
我是 Python 编程的初学者,在当前作业中遇到了问题。作业内容如下…… 你的程序应该 secret 地生成一个没有重复数字的 4 位数字(或只包含数字,4 个字符长的字符串)。 然后您的程序应该要
我已经制作了 Mastercode 游戏,但我无法让计算机告诉用户他们得到了正确和错误的数字。下面列出了我的代码,以及我用来让计算机打印正确答案的尝试。如果有人能告诉我我做错了什么并指出正确的方向,那
我需要编写一个 mastermind 求解器,包含 4 个字母代码以及字母 A 到 F。但是,我的猜测消除器留下了本应被消除的猜测。这是我的猜测消除器代码: def getFeedback(self,
我正在用 C++ 编写一个 mastermind 求解器,有 a-z 可能的字母,字符串的长度由用户插入 - 并且不应该被绑定(bind),因为我们可以在内存中保存那个大小的字符串.所有这一切,都没有
我必须为一项任务制作策划游戏。我被困在接受用户输入并需要将它们与随机数进行比较的部分。然后我需要将(用户输入)数字放在网格上的正确位置(自下而上)。 此外,我必须显示数字是否为: 通过显示 4 在正确
我正在尝试在不超过 5 步的情况下在 python Donald Knuth 的算法中实现密码破解策划者。我已经多次检查我的代码,它似乎遵循算法,正如它在此处所述: http://en.wikiped
您将如何创建一个算法来解决以下难题“Mastermind”? 您的对手从一组六种颜色中选择了四种不同的颜色(黄色、蓝色、绿色、红色、橙色、紫色)。你必须猜出他们选择了哪一个,以及以什么顺序。每次猜测后
我最近开始使用 Java 编码,我的教练给了我一个练习,要求我重新创建 Mastermind 游戏。概述一下这个游戏:计算机创建一个包含 X 个随机整数的数组,用户也可以输入 X 个整数。位置很重要。
我正在设计一个用 python 玩的 mastermind 游戏。但是,当我尝试设置一个函数在尝试不完全正确时重复自身时,我遇到了一些问题。 我的代码分为两部分。对于第一部分,它要求用户输入正确的号码
目前我正在尝试制作一个策划者类型的代码,就像游戏一样。我目前停留在尝试检查用户猜测是否正确的位置。 colours = ["R","O","Y","G","B","I","V"] n = 1 ans
我正在按照 Donald Knuth 的算法来解决游戏 Mastermind . 但是,我卡在了第二步: Create a set S of remaining possibilities (at t
现在,我正在尝试构建一个类似 Mastermind 的 Java 类(class)。在这个游戏中,会生成一个 4 位随机数,用户尝试猜测该数字。每次猜测,计算机都会指出有多少正确的数字顺序正确,以及有
我似乎无法弄清楚为什么有时我在 mastermind 中检查白人的代码会将一个值计算两次。我的意思是它同时计算白色和黑色的值。然而,有时它工作得很好,但每次点击时都没有意识到这个错误,我找不到原因。
我有两个关于我的代码的问题。 为什么当我输入 1 到 6 之间的数字时,输出是“哎呀,请输入 1 到 6 之间的数字”。当我尝试更具体并做出 else if 语句时,当我输入时什么也没有发生请输入一个
我正在为一个类(class)制作游戏 Mastermind 的一个版本。但是,不幸的是我遇到了障碍。每当我为程序构建解决方案时,它都可以正常编译,但最终会出现运行时错误。它说“表达式: vector
我试图用数字 1-6 编写 mastermind 代码,但我无法完成它说有多少数字位于错误位置的部分。有时它运行良好,但在某些情况下会出现错误。 这是一个例子,如果随机数是 {5, 2, 3, 3}
我是一名优秀的程序员,十分优秀!