战舰人工智能在一定规则下沉没部分[关闭]

2024-04-14

我在寻找在某些规则下是否可以为战舰沉没部分编写有效的人工智能时遇到了一些麻烦。

规则是:

  • 最短的船的长度甚至可以是 1。当游戏管理器给你要放置的船舶数组时,你会在一开始就知道它
  • 船只不能重叠,但可以相邻
  • 游戏经理会告诉您最后一杆是击中、击中还是未击中。没有关于您击中/沉没的船的长度的信息

好吧,我无法正式表达的是沉船的长度。一旦我击沉了一艘船,我就无法理解它的长度。

我想使用密度方法来根据游戏中静止船只的长度来估计射击位置,但如果没有系统来获取沉没船只的长度,我的密度永远不会变得“更智能”。目前,我只是保存每次点击的北/南/东/西位置,并在我的堆栈为空时考虑完成工作。当然,这非常耗时。

我尝试澄清我的问题:假设您有一个二维数组,您可以通过以下方式跟踪拍摄结果:

u = 未知点

m = 你在 x, y 上射击,游戏经理告诉你“未命中”

h = 你向 x, y 射击,游戏经理告诉你“击中”

s = 你向 x, y 射击,游戏经理告诉你“沉没”

假设棋盘是 5 * 5。一开始你有这样的:

      1 2 3 4
    1 u u u u
    2 u u u u
    3 u u u u
    4 u u u u

假设您在 2、3 上射击,游戏管理器告诉您“击中”,现在您有:

      1 2 3 4
    1 u u u u
    2 u u h u
    3 u u u u
    4 u u u u

好的,现在你开始环顾你的最后一个镜头。无论您使用密度方法还是从您击球的位置开始堆叠 N/S/E/W 点。假设你的算法得出了 3, 3。这次错过了:

      1 2 3 4
    1 u u u u
    2 u u h u
    3 u u m u
    4 u u u u

所以现在你尝试 2, 2,结果很成功:

      1 2 3 4
    1 u u u u
    2 u h h u
    3 u u m u
    4 u u u u

现在假设 2,1 游戏管理员告诉你“沉没”:

      1 2 3 4
    1 u u u u
    2 s h h u
    3 u u m u
    4 u u u u

那么:知道船只可能是相邻的,你如何知道你刚刚击沉的船只的长度,而不需要对每一个北/南/东/西点进行拍摄? 例如,在这种情况下,您需要在 2,4 和 1,3 上射击才能几乎确定您击沉的东西,而且这会消耗大量资源。请参阅下面的马克·贝西示例:这种情况比我的情况更耗时且不确定。

所以问题很简单:没有什么比这种 N/S/E/W 耗时且不确定的方法更好的了吗?

希望它能澄清此事。

附注 我知道这个问题 https://stackoverflow.com/questions/1631414/what-is-the-best-battleship-ai,但我看不懂 C# 语言...几个月前才开始使用 java :)

附注2 我知道this http://www.datagenetics.com/blog/december32011/index.html太(参见最后的插图),据我所知,除了他认为最小长度= 2这一事实之外,事情看起来完全相同。我总是可以编写2种算法(如果我检测到最小长度> 1,则编写一种算法,如果检测到最小长度> 1,则再编写一种算法)如果最小长度= 1,则“消耗”,但我不明白他如何管理这个东西......看起来他只考虑密度......

附注3 为什么关闭?我正在寻找一种在条件下工作的算法...我给出了条件以及算法应该做什么。我该如何澄清呢?这种问题我该怎么表达呢? (抱歉问这个问题,无意争论,只是学习)


根据这些规则,你实际上无法完全了解任何沉船的长度。您可以分配一些概率,但无法获得特定船只的长度。考虑一维版本:

0123456789
.XXXXXYY..

其中“X”和“Y”代表不同的船只。如果你从位置 4 开始射击,并继续向右前进,你将在 4 次命中后击沉一艘船。你知道你刚刚击沉的那艘船是no more长度超过 4 个空格,但实际上可以是 1-4 个空格之间的任何值。

The 最有可能的事情是你击中了一艘船,但你可以通过从第一次击中回溯来验证这一点。在这种情况下,您将一路被击中回到位置 1,然后另一艘船将被报告为“沉没”。所以你知道X船+Y船总共有7个空格长。只有少数组合可以加起来达到 7,所以这里有一些信息。不幸的是,有很多可能的两艘船组合,总计可达 7 个。

在 2D 板上情况更糟:

 0123456789
A..........
B..........
C..A.......
D..A.......
E..ABCDEE..
F...BCD....
G...BCD....
H....CD....
I.....D....
J..........

如果你从 E0 射击到 E9,你会击中 6 次,击沉 1 次。如果不检查从 D2 到 D7 的每个点,您就无法确定这些命中是否是在 E 行中垂直的船上。您还必须检查 F2 到 F6,以确保其中没有船只另一个方向。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

战舰人工智能在一定规则下沉没部分[关闭] 的相关文章

  • java.lang.VerifyError:JVMVRFY012堆栈形状不一致;

    在 WAS 8 5 5 中部署 Maven 项目时出现以下错误 我在WAS中安装了JDK 1 6和1 7 错误500 org springframework web util NestedServletException 处理程序处理失败
  • 从文本文件中读取阿拉伯字符

    我完成了一个项目 在该项目中我读取了用记事本编写的文本文件 我的文本文件中的字符是阿拉伯语 文件编码类型是UTF 8 当在 Netbeans 7 0 1 中启动我的项目时 一切似乎都正常 但是当我将项目构建为 jar 文件时 字符以这种方式
  • 将 MouseListener 添加到面板

    我正在尝试将鼠标操作添加到我的面板中 这就是程序应该做的事情 编写一个程序 允许用户通过按三下鼠标来指定一个三角形 第一次按下鼠标后 画一个小点 第二次按下鼠标后 绘制一条连接前两个点的线 第三次按下鼠标后 绘制整个三角形 第四次按下鼠标会
  • 在 jTextfield 中禁用“粘贴”

    我有一个用 Swing awt 编写的应用程序 我想阻止用户将值粘贴到文本字段中 有没有办法在不使用动作监听器的情况下做到这一点 您可以使用 null 参数调用 setTransferHandler 如下所示 textComponent s
  • 从 Spring MVC XML 文件转移到 javaconfig。我真的对我的数据库 XML 文件感到困惑

    我从 Spring MVC XML 文件转移到 javaconfig 我真的对我的数据库 XML 文件感到困惑 我不知道如何让 Hibernate4 工作以及我的 JBoss JNDI 数据源工作 有人可以告诉我如何使 javaconfig
  • 最快的高斯模糊实现

    如何以最快的速度实施高斯模糊 http en wikipedia org wiki Gaussian blur算法 我要用Java来实现它 所以GPU http en wikipedia org wiki Graphics processi
  • 运行 java -jar 时出现 java.lang.ClassNotFoundException

    我正在使用 ant 来构建我的build xml文件 它编译正常 但随后得到运行时java lang NoClassDefFoundError通过 运行生成的 jar 时java jar my jar jar 似乎这个问题出现了很多 但没有
  • 这个等待通知线程语义的真正目的是什么?

    我刚刚遇到一些代码 它使用等待通知构造通过其其他成员方法与类中定义的线程进行通信 有趣的是 获取锁后 同步范围内的所有线程都会在同一锁上进行定时等待 请参见下面的代码片段 随后 在非同步作用域中 线程执行其关键函数 即 做一些有用的事情1
  • 在java中将字符串日期转换为美国格式

    我有下面的代码 其中日期为字符串类型 我必须将其设置为美国格式 所以下面我已经展示了它 private static final SimpleDateFormat usOutputDate new SimpleDateFormat MM d
  • 纱线上的火花,连接到资源管理器 /0.0.0.0:8032

    我正在我的开发机器 Mac 上编写 Spark 程序 hadoop的版本是2 6 spark的版本是1 6 2 hadoop集群有3个节点 当然都在linux机器上 我在idea IDE中以spark独立模式运行spark程序 它运行成功
  • 拆分/标记化/扫描字符串并注意引号

    Java中是否有默认 简单的方法来分割字符串 但要注意引号或其他符号 例如 给定以下文本 There s a man that live next door in my neighborhood and he gets me down Ob
  • 如何从字符串中解析一个大整数? [复制]

    这个问题在这里已经有答案了 我有一个这样的方法 Integer parseInt myInt 不是这个整数变得很长 我得到以下异常 java lang NumberFormatException For input string 40001
  • 如何从intellij项目视图中隐藏不必要的文件?

    给定一个示例 gradle 项目 其项目结构如下所示 正如你所看到的 有很多东西你实际上不需要在想法中看到 但你需要它们存在 我知道下面被忽略的文件 文件夹类型Editor File Types但这些正在影响库和项目 idea 会在各处忽略
  • 使用单独的线程在java中读取和写入文件

    我创建了两个线程并修改了 run 函数 以便一个线程读取一行 另一个线程将同一行写入新文件 这种情况会发生直到整个文件被复制为止 我遇到的问题是 即使我使用变量来控制线程一一执行 但线程的执行仍然不均匀 即一个线程执行多次 然后控制权转移
  • 如何减去两个 XmlGregorianCalendar 对象来创建一个 Duration 对象?

    我想计算两个时间之间的差值XmlGregorianCalendar对象 从而创建一个Duration object 但我还没有找到执行减法的干净方法 你会怎么做 那应该是 DatatypeFactory newDuration xgc2 t
  • 当底层连接是有状态时如何使用 Apache HttpClient?

    我在谷歌上搜索了很多关于如何使用 HttpClient 进行多线程处理的信息 他们中的大多数人建议使用 ThreadSafeClientConnManager 但我的应用程序必须登录某个主机 登录表单页面 以便 HttpClient 获得底
  • 让 Hibernate 和 SQL Server 与 VARCHAR 和 NVARCHAR 良好配合

    我目前正在大型数据库的某些表中启用 UTF 8 字符 这些表已经是 MS SQL 类型 NVARCHAR 此外 我还有几个使用 VARCHAR 的字段 Hibernate 与 JDBC 驱动程序的交互存在一个众所周知的问题 例如 参见在 h
  • spring data jpa复合键重复键记录插入导致更新

    我有一个具有复合键的实体 我试图通过使用 spring data jpa 存储库到 mysql 数据库来持久化它 如下所示 Embeddable public class MobileVerificationKey implements S
  • 在实现使用原始类型的接口时如何避免警告?

    我正在实施流程工厂 http help eclipse org ganymede index jsp topic org eclipse platform doc isv reference api org eclipse debug co
  • 受信任的 1.5 小程序可以执行系统命令吗?

    如果是的话 这个能力有什么限制吗 具体来说 我需要以 Mac OSX 为目标 我以前用过这个在 Windows 系统上启动东西 但从未在 Mac 上尝试过 public void launchScript String args Strin

随机推荐

  • 具有 OneToOne 关系的 Django 模型?

    假设我使用默认值auth models User加上我的习惯Profile and Address模型看起来像这样 class Profile models Model user models OneToOneField User prim
  • 实体框架数据库首次 POCO t4 生成和验证

    注意 我使用的是 ASP Net 应用程序而不是 MVC 因此不支持验证属性 我使用数据库优先方法 然后使用 POCO t4 模板生成 POCO 类 我将生成的 POCO 类移动到它自己的库 Domain Model 中 现在我想使用 En
  • Rails:ActionMailer 的运行时配置?

    我想通过 Gmail 从我的应用程序发送少量电子邮件 现在 SMTP 设置将在运行时确定 即 从数据库 可以这样做吗 编辑 我可以在该类的方法之一中设置 ActionMailer 子类 名为 Notifier smtp 设置 这样我就可以设
  • 对于在 Python3 中的 Tornado 上使用非阻塞 MySQL api 有什么建议吗?

    我希望tornado支持异步sql数据库操作 在我阅读源代码之后 http www tornadoweb org documentation modules tornado database html Connection http www
  • WHOIS 服务器守护进程

    是否有任何 WHOIS 服务器守护程序可以在我的服务器上运行并服务我的请求 是否可以像 DNS 服务器一样在 WHOIS 层次结构的末尾部署自己的 WHOIS 服务器 看一眼rwhois https www rfc editor org r
  • Request.Unvalidated 在 asp.net-core 上在哪里?

    我注意到在classic ASP NET MVC有一个Unvalidated属性于Request它允许访问当前请求提供的原始值 我无法在 ASP NET MVC 上识别此属性Core 还有办法访问该信息吗 ASP NET Core 不具有与
  • 为什么Java需要Serialized接口?

    我们大量地进行序列化工作 并且必须在我们使用的每个对象上指定可序列化标签是一种负担 尤其是当它是我们无法真正更改的第 3 方类时 问题是 由于 Serialized 是一个空接口 一旦添加 Java 就会提供健壮的序列化implements
  • Django:重建通过 $.post 发送的结构化参数

    我正在发送带有结构化发布数据的 Ajax 请求 使用 jQuery post myUrl items code a description aaa code b description bbb 我所看到的request POST is
  • 签名 APK 中的空响应 - 调试 APK 中的正确响应

    我正在使用 Retrofit 进行网络调用 我在签名 APK 时面临奇怪的问题 改造请求 FormUrlEncoded Headers Accept application json POST Call
  • 如何在 VB.NET 中每 x 分钟调用一个函数?

    如何每 x 分钟调用一个函数 我想我必须在表单中添加一个计时器 这是一个简单的例子 Public Class SampleCallEveryXMinute Private WithEvents xTimer as new System Wi
  • 总是在 Perl 脚本结束之前执行一些代码

    如何设置在 Perl 脚本停止之前必须执行的代码 In here 如何在perl脚本退出之前运行一段代码 https stackoverflow com questions 3078508 how to run piece of code
  • 调用app.MainLoop()后更新wxPython进度条

    我有一个执行计算的 python 脚本 并且我已经为弹出 wxPython 进度条创建了一个类 目前我有 app wx App progress ProgressBar app MainLoop for i in xrange len to
  • Android:设置自定义字体时出现异常

    自一小时以来 我一直在绞尽脑汁地从代码中设置自定义字体到文本 我已经在之前的项目中做到了这一点 而且它有效 但我不知道出于什么原因 它给了我例外 无法制作原生字体 在这里 我已经解决了许多与此相关的问题 并尝试了建议的解决方案并适用于这些情
  • 是否可以从我自己的 AoG 应用程序的实现中触发另一个 Actions on Google 应用程序? [复制]

    这个问题在这里已经有答案了 此问题专门与 Google Apps 上的操作有关 涉及触发事件 操作以使助手为最终用户选择另一个 AoG 应用程序的能力 专门用于触发其他人的 AoG 应用程序 而不是您编写的应用程序 Idea 我想创建一个自
  • 轴位于中心的 R 图

    默认情况下 R 中的笛卡尔轴位于图的底部和左侧 如何使轴居中 如下图所示 Example using data generated by bgoldst estimate curve x lt seq 1 1 5 0 1 y lt c 1
  • 使用 Hibernate 映射双向列表

    我不明白映射双向列表时 Hibernate 的行为 Hibernate 生成的 SQL 语句对我来说似乎不是最佳的 有人可以启发我吗 场景如下 我有一对多的父子关系 我用双向列表来映射这种关系 根据Hibernate 注解参考指南 http
  • AngularJS:如何在模板内设置变量?

    我怎样才能避免 f 第三行语句打印出内容forecast day iso 我想避免使用forecast day iso temperature每次迭代依此类推 div index day iso day name f forecast da
  • IE9 文本渲染问题 - 字母尾部被切断

    我遇到了一个问题 在 IE9 标准模式下 IE9 以降序字母的尾部 q p y 等 消失的方式呈现文本 已尝试使用填充和其他常见的 CSS 设置来帮助解决此问题 但到目前为止我还没有运气 谁知道这可能是什么 EDIT 我在博客上找到了这个
  • Glassfish 3.1.1:在 RESTful Web 服务中检索 HTTP 身份验证

    我正在使用基于我的客户表的 HTTP 身份验证 用户通过身份验证后 将调用静态 Web 服务 但是我如何在 Web 服务中访问 HTTP 身份验证 HttpRequest 的标头数据 我的代码如下所示 GET Path id Produce
  • 战舰人工智能在一定规则下沉没部分[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我在寻找在某些规则下是否可以为战舰沉