- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
该算法假设询问英文字母表的中间字母,在我的程序中是N
。此时它询问用户是否:
猜测正确
这封信在字母表中排在前面。
该字母在字母表中靠后
当试图猜测Jose
时,它会首先询问N
。我选择选项 2,然后它会给我 G
。然后我选择选项 3,它会给我 Q
。然后我选择选项 2,它会给我 I
。然后我选择选项 3,它会给我 R
。如果我选择选项 2,它会再次给我 R
,基本上我被困在 R
和 I
之间。如何修复我的算法以正确提供所有可用的字母?
我的代码如下:
int let = 26/2;
if(n != 0) {
//Correct guess
if(n == 3) {
aLetter = alphabet[let];
actualLetter = Character.toString(aLetter);
aName.add(actualLetter);
}
//earlier in alphabetical order
else if(n == 2) {
let /= 2;
}
//later in alphabetical order
else if(n == 1) {
for(int i = let; i < 27; i++){
r += 1;
}
r /= 2;
let += r;
r=0;
}
} //done guessing
else if (n == 0) {
for(String str: aName) {
result3 += str;
}
}
任何帮助和/或建议都会很棒。谢谢!
最佳答案
假设被猜的字母表中的字母(用---等
表示)是“s”(用+
表示)。计算机会先猜中间(let
= 13,用|
表示)。
-------------|---+--------
你告诉计算机猜得更高。
代码
for(int i = let; i < 27; i++) {
r += 1;
}
r /= 2;
let += r;
r=0;
可以缩短为
let += (26 - let) / 2;
计算机会猜到一半(let
= 19):
-------------|---+-|------
到目前为止一切顺利。
现在,您告诉它猜得更低。计算机知道它高于 13 且低于 19,因此它应该在两者之间进行猜测。但是,您拥有的代码不会这样做。
let /= 2;
使 let
成为 (int)(19/2)
,即 9。
---------|---|---+-|------
你想要的是 let
= 16
-------------|--|-+|------
假设你成功地做到了
-------------|--|-+|------
最近的猜测是 16。你告诉计算机猜测更高。附上代码
let += (26 - let) / 2;
let
将变为 21。
-------------|--|-+|-|----
你想要的是 let
= 18 or 19;
一般来说,一个好的算法应该让 let
在每次迭代中增加或减少“13/2n”,其中“n”是迭代次数(开始在 0
)。
因此您应该使用代码
int let = 0;
int iteration = 0;
//start loop
//take input
int delta = 13 / Math.pow(2, iteration) + 1;
if(n != 0) {
//if n == 3
else if(n == 2)
{
let -= delta;
}
else if(n == 1)
{
let += delta;
}
}
iteration++;
//end loop
并将注释替换为您已经在使用的代码。
关于java - 用于猜测姓名字母的算法不会显示某些字母并卡在(I 和 R)之间。我怎样才能改进我的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21149149/
我的问题在于处理大型 CSV 文件中的数据。 我正在寻找基于在该列中找到的值来确定(即猜测)该列的数据类型的最有效方法。我可能正在处理非常困惑的数据。因此,该算法应该具有一定的容错性。 这是一个例子:
我正在开发一个基于 map 的网络应用程序,我想为用户提供“使用当前位置”的功能 我可以轻松检查地理位置 api 的可用性,如下所示: if (navigator && navigator.geolo
我有一大组日期时间字符串,可以放心地假设它们的格式都相同。例如,我可能有一组日期“7/1/13 0:45”、“5/2/13 6:21”、“7/15/13 1:24”、“7/9/13 12” :41",
我正在尝试对是否可以接收 C2DM 消息进行最佳猜测。 我创建了一个应用程序,它依赖于在物理上无法访问时将信息推送到手机。我知道 C2DM 不能保证传递,但我至少想知道何时可以传递消息;如果不是,我们
我正在编写一个系统,以便用户可以编辑他发布的内容。简化它是一个存储在数据库中的文本区域/输入字段和一个检索它的页面。问题是,我认为编码不正确,因为字符串存储在数据库中,如“É”或其他东西(phpmya
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
只是好奇,但匹配 Guid 的概率是多少? 从 SQL 服务器说一个 Guid:5AC7E650-CFC3-4534-803C-E7E5BBE29B3D 它是阶乘吗?:(36 * 32)! = (11
这个问题已经有答案了: Guessing algorithm does not seem to work, guessing number by Python (3 个回答) 已关闭 5 年前。 程序
我正在创建一个非常简单的计算器,但我需要它在每次击键时进行更新。我似乎找不到该特定类别中的任何内容。有人能指出我正确的方向吗? 我正在寻找类似 A*1.325 + B*3.76 的内容,其中 B 是下
环顾四周this似乎是最接近我的问题的答案。然而它会导致其他问题...... 这是我的情况: $element.insertBefore($container); 此行有一个警告,指出 insertB
当我收到此页面时 http://booking.airasia.com/css/AKBase/Cultures/en-GB/far-min.css与 Node 的 http , toString方法给
我在代码中发现了这一点,但不知道哪个实例接收到。 var guess = require ('myModule1') ('myMmodule2') 最佳答案 看来 myModule1 导出了一个函数,
WARNING: No name was provided for external module 'moment' in output.globals – guessing 'momentImpor
我是一名优秀的程序员,十分优秀!