检测零分和交叉中获胜的比赛

2024-01-05

我需要知道在圈和十字游戏中检测获胜动作的最佳方法。源代码并不重要,我只需要一个示例或可以开始的东西。

我唯一能想到的就是使用循环并测试玩家所做的每个动作的每个方向,以搜索例如连续五个。有没有更快更有效的方法呢?


真正简单的解决方案是从最后一步开始检查...显然,之前的任何一步都不可能赢得比赛,否则你就不会在这里...所以你只需要检查是否有 5 (或无论多少)在刚刚放置的棋子周围的行/列/对角线上。

例如,如果棋盘看起来像这样,X 标记最近的移动:

.............
.............
.............
.............
.....X.......
.............
.............
.............
.............
.............

您不需要检查“C”范围之外的任何内容:

.C...C...C...
..C..C..C....
...C.C.C.....
....CCC......
.CCCCXCCCC...
....CCC......
...C.C.C.....
..C..C..C....
.C...C...C...
.............

这有帮助吗? (看起来您可能在最初的问题中提到了这一点,但我不确定。)

除此之外,简单的循环将成为你最好的朋友。您可能可以进行一些微观优化,但是(取决于您的实际应用程序正在做什么)这可能不值得。

需要注意的一件事是,您不能从最近的举动中向任何方向跳出 5 来连续寻找那么多,因为该举动可能处于连续走势的中间。所以我会做类似的事情

From the new move
    left = how many in a row we have to the left of the lastest move
    right = how many in a row we have to the right of the latest move
    if (left + right + 1 >= 5) then you have a winner

    up = how many in a row we have above the latest move
    down = how many in a row we have below the latest move
    if (up + down + 1 >= 5) then you have a winner

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

检测零分和交叉中获胜的比赛 的相关文章

  • 关于合并排序代码中的组合步骤的困惑

    我有一个关于数组上的合并排序如何工作的问题 我理解 划分 步骤 它将输入数组划分为 1 长度的元素 然而 当谈到 合并 部分 组合步骤 时 我感到困惑 例如 给定输入 3 5 1 8 2 除法过程将产生 5 个元素 3 5 1 8 2 我只
  • 计算标签云中标签字体大小的公式是什么?

    我有一个标签云 我需要知道如何更改最常用标签的字体大小 我需要设置最小字体大小和最大字体大小 您可以使用线性或对数评估与某个标签相对于最大标签关联的项目数量 将其乘以最小和最大字体大小之间的差值 然后将其添加到最小字体大小 例如 伪代码中的
  • 如何在代码生成过程中简化包含变量的 C 风格算术表达式?

    我正在尝试优化编译器中的表达式求值 算术表达式都是C风格的 并且它们可以包含变量 我希望尽可能简化表达 例如 3 100 A B 100 3 100可以简化为409 300 A B 主要取决于分配律 结合律和交换律 我遇到的主要困难是如何将
  • 如何使用哈希表在最小堆上实现 O(1) 删除

    在某处阅读以下声明 可以使用附加的哈希表来快速删除 最小堆 问题 gt 如何组合priority queue and unordered map这样我就可以实现上面的想法了 include
  • 在二维平面中找到距离 P 点最近的 K 个点

    资料来源 亚马逊面试问题 解决方案1制作大小为 K 的堆并按最小距离收集点O NLogK 复杂 解决方案2 取大小为 N 的数组并按距离排序 应该使用QuickSort 霍尔修改 取前 K 点作为答案 这太复杂了 NlogN 但可以优化到近
  • 修改排列算法以防止重复打印输出的策略

    我一直在审查实践算法 目前正在研究一种我非常喜欢的排列算法 void permute char set int begin int end int range end begin if range 1 cout lt lt set lt l
  • Java:使用indexOf方法根据另一个数组对数组进行排序

    我想根据另一个数组 索引 的排序顺序迭代两个数组 A B 在本例中为 10 34 32 21 String A a b c d String B e f g h int indexes 10 34 32 21 为这里的坏例子道歉 我已经更新
  • 为无向无权图实现推重标签算法 s-t 最小割边

    我正在寻找一个好的解决方案来在无向和未加权图中找到 s t 最小切割边 我想使用推送重新标记算法 但我不确定如何实现它以在无向和未加权图上找到最小割 在每对顶点之间有两条反向边 并在所有边上赋予相同的权重 并应用推送重新标记算法 我可以用这
  • 稀疏矩阵中的最大和子矩形

    求一个子矩形中的最大和NxN矩阵可以完成O n 3 正如其他帖子中指出的 使用 2 d kadane 算法的时间 然而 如果矩阵是稀疏的 具体来说O n 非零条目 可以O n 3 时间被打败了吗 如果有帮助的话 对于我感兴趣的当前应用程序
  • 交换两个向量之间的值,使两个向量的 max_element 之和最小

    这是 Codechef 的问题 但请耐心等待 https www codechef com ZCOPRAC problems ZCO16001 https www codechef com ZCOPRAC problems ZCO16001
  • 在无向图中查找强连通分量

    我想在无向图中找到强连接的组件 即如果我从节点开始A然后我会回到节点A并且每条边都被恰好访问一次 对于有向图可以使用Tarjan算法来寻找强连通分量 但是对于无向图怎么办 我认为您错过了强连通分量的含义 强连接组件 如果所有顶点对之间都存在
  • cordova 使用什么 js“引擎”?

    Cordova 使用什么 JS 引擎 它是特定于平台的还是跨所有平台的一个标准 意味着 iOS 的 safari 和 Android 的 chrome 以及 Windows 可能的 IE 标准 或者跨所有平台的 Cordova JS 引擎
  • 缩短文本并仅保留重要句子

    德国网站 nandoo net 提供了缩短新闻文章的可能性 如果使用滑块更改百分比值 文本会发生变化并且某些句子会被遗漏 您可以在这里看到它的实际效果 http www nandoo net read article 299925 http
  • 如何查找给定字符串中仅出现一次的第一个字符[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何求解:T(n) = T(n - 1) + n

    我已经解决了以下问题 T n T n 1 n O n 2 现在 当我解决这个问题时 我发现界限非常松散 我是否做错了什么 或者只是这样 您还需要一个递归关系的基本情况 T 1 c T n T n 1 n 为了解决这个问题 您可以首先猜测一个
  • 线性代数如何在算法中使用?

    我的几个同行都提到 学习算法时 线性代数 非常重要 我研究了各种算法并学习了一些线性代数课程 但我没有看到其中的联系 那么线性代数如何应用在算法中呢 例如 图的连接矩阵可以带来哪些有趣的事情 三个具体例子 线性代数是现代 3D 图形的基础
  • 快速求解子集和

    考虑这种解决子集和问题的方法 def subset summing to zero activities subsets 0 for activity cost in activities iteritems old subsets sub
  • 通过分布式数据库聚合作业优化网络带宽

    我有一个分布式 联合数据库 结构如下 数据库分布在三个地理位置 节点 每个节点集群有多个数据库 关系数据库是 PostgreSQL MySQL Oracle 和 MS SQL Server 的混合体 非关系数据库是 MongoDB 或 Ca
  • Codility 钉板

    尝试了解 Codility NailingPlanks 的解决方案 问题链接 https app codility com programmers lessons 14 binary search algorithm nailing pla
  • 如何从一组重叠的圆计算多边形集?

    这个问题是一些计算细节的扩展这个问题 https stackoverflow com questions 1667310 combined area of overlapping circles 假设有一组 可能重叠的 圆 并且希望计算这组

随机推荐

  • SFML 在 Windows 下加载字体时出错

    我一直在尝试使用 SFML 开发适用于 Windows 和 Linux 的跨平台应用程序 到目前为止一切都很顺利 除了 Windows 版本似乎无法加载字体 不过我在 Linux 下没有任何问题 我做了研究 并根据我执行的位置确保文件就位
  • 在Python中使用Popen执行Powershell脚本,如何获取Powershell脚本的输出并将其更新到网页?

    我创建了一个带有按钮的简单 HTML 当用户单击该按钮时 它将调用在服务器端执行的Python文件 在Python文件中 我使用Popen调用Powershell脚本 如下代码 command line r C WINDOWS system
  • 在Python中组合模块文件

    有没有一种方法可以将 Python 文件组合在一起 类似于 Java 中的 JAR 我需要一种打包 Python 类和函数集的方法 但与标准模块不同 我希望它位于一个文件中 在寻找同一问题的解决方案后 我最终编写了一个简单的工具 它将多个
  • 如何从Flash加载flex swf?

    我有一些在 Flex 中编译的 swf 我想将其加载到 flash pro 中的影片剪辑中 那么如何在 Flash CS4 中加载 flex swf 呢 怎么做这样的事情 您可以在这里阅读更多相关信息 http troygilbert co
  • Cakephp 路由前缀

    我的应用程序有 3 种不同的布局 与内容的不同部分相关 我想定义我的 url s 以便他们在开头的 ex 中包含该部分 mypage com part1 controller 我不知道如何改变路线来实现这一点 附 我不想要普通的前缀路由 其
  • 如何在日志文件名中的文件扩展名之前附加滚动索引

    我正在使用RollingLogFileAppender它工作得很好并且正在滚动到新文件中 但它在文件的最后添加了 1 2 等 所以我最终得到 log 1 log 2等等 所以从技术上讲 每个文件都有一个资源管理器不知道的新扩展名 所以我不能
  • scanf 不超过缓冲区溢出

    我有一个缓冲区 我不希望用户输入的字符多于缓冲区可以容纳的字符 以避免缓冲区溢出 我在用scanf并做了这样的事情 char buffer 30 0 scanf 30s buffer 但是 我知道如果用户输入超过 30 个 我会受到保护 但
  • 用户空间和内核线程之间的共享内存

    我正在开发一个涉及 kthreads 的内核应用程序 我创建一个结构数组并在用户空间中使用 malloc 分配内存 然后我调用系统调用 我实现的 并将数组的地址传递到内核空间 在我创建的系统调用处理程序中 我创建了 2 个 kthreads
  • 使用分组依据和按日期排序的 SQL 选择

    我正在使用 SQL Server 2008 我想知道是否可以在一个 select 语句中完成我的查询 而无需子查询 如果记录中的字段在最近 10 个创建的记录中为 true 我想将变量设置为 true 如果该字段在最后 10 个记录中为 t
  • Google GData .Net OAuthUtil.GetAccessToken 400 错误请求

    我正在尝试通过 Google Net GData 客户端库生成 OAuth 访问令牌 我一直在使用中的说明http code google com apis gdata docs auth oauth html http code goog
  • 在数据库中使用DXL导入SSJS脚本库

    我们需要使用 DXL 在数据库中导入 SSJS 库 为此 我们编写了一个 Java 代理 其代码如下 import lotus domino public class JavaAgent extends AgentBase private
  • 堆栈不足以继续安全地执行程序。 ASP.NET MVC 4

    我的搜索功能似乎在无限循环中继续 每次我的调试命中 POST actionresult 下面的操作时都会被触发 在我的 Masterpage cshtml 中 我有以下操作 li Html Action Search Search li 这
  • 递归删除数组键前缀

    我有一个以下格式的数组 每个子数组都以父级的键作为前缀 input array seo text gt array seo text title gt seo text description gt seo text button gt a
  • 一键上传文件

    如何在需要发送文件的 html 中制作一个按钮 允许您选择文件 然后将其发送到我想要的页面上 而不使用按钮来选择文件并使用按钮将其发送到另一个页面 感谢您
  • python3.6 - TypeError:write() 参数必须是 str,而不是 bytes - 但不涉及文件

    以下代码返回错误 我不明白为什么 在Python 3 6上运行 import subprocess import sys import os def execute shell cmd cmd process subprocess Pope
  • Qt 上的“GLib-ERROR **:无法创建管道主循环唤醒:打开的文件太多”

    我正在 Ubuntu 上工作 当我运行程序大约 1 小时后 我收到此错误 GLib ERROR 无法创建管道主循环唤醒 打开的文件太多程序意外完成 当我使用 gdb 运行时 它不会崩溃 我不明白为什么 以及此错误的原因是什么 非常感谢 打开
  • 后台模式下的 iOS 区域监控

    我在我的应用程序中使用区域监控 但遇到了一个问题 但找不到任何答案 区域监控在后台模式下如何工作 根据位置感知 PG 的说法 每次用户的当前位置 跨越边界区域 系统 生成适当的区域事件 为您的应用程序 如果你的 应用程序已经在运行 这些 活
  • 寻找一个 Perl 模块来在共享 RAM 中存储哈希结构

    我想将数据结构持久存储在 RAM 中 并可以从预分叉中访问它 Perl 中的 Web 服务器进程 理想情况下 我希望它的行为类似于 memcached 但不需要单独的守护进程 有任何想法吗 Use 缓存 FastMmap http sear
  • 定义中的预处理器指令? [复制]

    这个问题在这里已经有答案了 可能的重复 C 预处理器 在 define 中使用 if https stackoverflow com questions 2831934 c preprocessor using if inside defi
  • 检测零分和交叉中获胜的比赛

    我需要知道在圈和十字游戏中检测获胜动作的最佳方法 源代码并不重要 我只需要一个示例或可以开始的东西 我唯一能想到的就是使用循环并测试玩家所做的每个动作的每个方向 以搜索例如连续五个 有没有更快更有效的方法呢 真正简单的解决方案是从最后一步开