应用重力的宝石镶嵌位板

2024-01-25

我正在尝试用位板制作一个宝石迷阵级联模拟器。到目前为止,我已经能够检测并移除火柴,但现在我需要让珠宝掉下来。我的状态由一系列位板表示,每个位板对应一种宝石。我有一张所有被移除的珠宝的面具。

是否可以使用一些按位魔法来做到这一点?

两个初始位板的示例(我们假设只有两种类型的宝石,并且它是 4x4 板而不是 8x8)。第一位是左下方,第四位是左上方,最后一位是右上方。

0 0 1 1    1 1 0 0
1 0 0 0    0 1 1 1
1 1 1 1    0 0 0 0
0 0 1 0    1 1 0 1

删除匹配项后:

0 0 1 1    1 1 0 0
1 0 0 0    0 0 0 0
0 0 0 0    0 0 0 0
0 0 1 0    1 1 0 1

使用的面膜是:

0 0 0 0
0 1 1 1
1 1 1 1
0 0 0 0

重力之后它应该看起来像:

0 0 0 0    0 0 0 0
0 0 0 0    1 0 0 0
1 0 1 1    0 1 0 0
0 0 1 0    1 1 0 1

这是用整数实现的,步骤如下:

[43814, 21721]       # Initial state
[35076, 4249], 26210 # State after matches have been removed, mask used to remove matches
[8962, 4149]         # State after gravity has been applied

要放下这些位,您需要使用位移位将掩码向上移动一行。使用掩码从上面的行中选择位,然后使用位移位和或运算将所选位复制到下一行。简单的算法会将掩码向上循环到顶部并向下逐行移动。但优化可以通过位移位和与自身进行或运算来扩展掩码,然后通过单个操作将所有上述位向下移动。

位板操作的良好来源是国际象棋维基:https://chessprogramming.wikispaces.com/General+Setwise+Operations https://chessprogramming.wikispaces.com/General+Setwise+Operations

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

应用重力的宝石镶嵌位板 的相关文章

  • SQL Alchemy 中的 NULL 安全不等式比较?

    目前 我知道如何表达 NULL 安全的唯一方法 SQL Alchemy 中的比较 其中与 NULL 条目的比较计算结果为 True 而不是 NULL 是 or field None field value 有没有办法在 SQL Alchem
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • ExpectedFailure 被计为错误而不是通过

    我在用着expectedFailure因为有一个我想记录的错误 我现在无法修复 但想将来再回来解决 我的理解expectedFailure是它会将测试计为通过 但在摘要中表示预期失败的数量为 x 类似于它如何处理跳过的 tets 但是 当我
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • 如何计算 3D Morton 数(交织 3 个整数的位)

    我正在寻找一种快速计算 3D Morton 数的方法 这个网站 http www graphics stanford edu seander bithacks html InterleaveBMN有一个基于幻数的技巧来处理 2D Morto
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • 如何在 Django 中使用并发进程记录到单个文件而不使用独占锁

    给定一个在多个服务器上同时执行的 Django 应用程序 该应用程序如何记录到单个共享日志文件 在网络共享中 而不保持该文件以独占模式永久打开 当您想要利用日志流时 这种情况适用于 Windows Azure 网站上托管的 Django 应
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • 使用基于正则表达式的部分匹配来选择 Pandas 数据帧的子数据帧

    我有一个 Pandas 数据框 它有两列 一列 进程参数 列 包含字符串 另一列 值 列 包含相应的浮点值 我需要过滤出部分匹配列 过程参数 中的一组键的子数据帧 并提取与这些键匹配的数据帧的两列 df pd DataFrame Proce
  • 您可以在 Python 类型注释中指定方差吗?

    你能发现下面代码中的错误吗 米皮不能 from typing import Dict Any def add items d Dict str Any gt None d foo 5 d Dict str str add items d f
  • Python:元类属性有时会覆盖类属性?

    下面代码的结果让我感到困惑 class MyClass type property def a self return 1 class MyObject object metaclass MyClass a 2 print MyObject
  • Python 分析:“‘select.poll’对象的‘poll’方法”是什么?

    我已经使用 python 分析了我的 python 代码cProfile模块并得到以下结果 ncalls tottime percall cumtime percall filename lineno function 13937860 9

随机推荐

  • 目前不会命中断点,源代码与原始代码不同(即使在清理/重建之后)

    NET 4 控制台应用程序 该项目设置为 调试 模式 所设置的断点位于主 启动项目中 我在解决方案和项目级别上右键单击 gt 清理 然后右键单击 gt 重建 按照中的说明进行操作这个问题 https stackoverflow com qu
  • 在 Node.js 中请求相同模块时 require() 如何工作

    当 Node js 中多次需要一个模块时 它会返回相同的对象 因为require 缓存之前的调用 假设我有一个主记录器模块 可以注册子记录器模块 这些实际上是通过主记录器模块进行记录的log 功能 但这里不相关 我在主记录器模块中有类似的内
  • 如何从 android.support.v7.widget.Toolbar 中删除顶部和底部填充?

    我正在尝试放置一个SlidingTabLayout https github com google iosched blob master android src main java com google samples apps iosc
  • 如何在方法调用时将数组解包为不同的参数

    我想知道是否可以在接受 vargs 的方法调用上将对象数组解压到单独的对象中 这个问题类似于this one https stackoverflow com questions 6062618 java unpacking argument
  • 如果是超链接,则转到外部网站

    我在每一行的 gridview 中都有一个指向 aspx 页面的 视图 链接 根据资源类型 1 文件 或 2 超链接 它应该下载文件或转到提到的超链接
  • Angularjs HTML5 视频开放

    我正在加载 html5 mp4 视频 我想在视频结束时从角度范围触发功能 我尝试了下面的简单代码 但 onending 事件无法在角度范围内找到该函数 HTML
  • EJB3事务回滚

    我在 EJB3 无状态会话 bean 中使用 CMT 我还创建了自己的异常 并带有注释 ApplicationException rollback true 当我想回滚事务时 是否必须使用 context setRollbackOnly 我
  • 使用 seq2seq API 的 Tensorflow 序列到序列模型(版本 1.1 及更高版本)

    我在用着TensorFlow v 1 1 我想实施一个序列到序列使用 tf contrib seq2seq API 的模型 然而 我很难理解如何使用提供的所有函数 BasicDecoder Dynamic decode Helper Tra
  • 删除重复的重复字符

    我的存储过程中有一个字符串 例如 sam bob or 从上面的字符串中我必须从中删除多个逗号 它必须看起来像 sam bob 或者仅当 then 我必须仅使用 Sql Server 函数 我使用 Sql Server 2008 和 Net
  • ADODB SQL 语法 - 使用 Excel 工作表访问表内连接

    我有一个项目 用户需要填写 Excel 文件 然后将数据导出到 Access 数据库 Excel文件中收集的数据需要分3步导出 1 导出数据集1条记录 2 查询新导入记录的主键 自动编号 Access 3 导出数据设置 2 记录 其中包括填
  • 尾部斜杠给出内部服务器错误

    我希望我的所有页面都能正常工作 无论用户是否在末尾添加了尾部斜杠 以下行有效 RewriteRule index page 0 9 cmstut index php page 1 QSA L 但以下行会导致内部服务器错误 这是最后一行 该行
  • 对于 TBitmap,FMX 中是否有相当于 FloodFill 的功能?

    我正在从 VCL 转换为 FMX 在VCL中 TBitmap的TCanvas中有一个名为FloodFill的函数 它允许TBitmap的画布充满特定的颜色 直到在位图的画布上达到另一种特定的颜色 FMX 中有与此功能等效的函数吗 根据 RR
  • 如何列出相机可用的视频分辨率

    如果我的电脑上连接了多个摄像头 我想知道特定摄像头的最佳可用分辨率 例如 有些相机是高清或全高清 1 280 720像素 720p 或1920x1080像素 1080i 1080p 或者最常见的是网络相机 我想至少知道相机正常工作的最佳视频
  • Sitecore 页面编辑器 发布与内容相关的项目

    我有一个 产品页面 产品页面映射到 ProductPage Sitecore 项目 网站 页面 产品页面 我在该页面中有一个带有页面编辑器的文本区域 该区域从 Web 数据库中的 产品示例文本 Sitecore 项目的 描述 文本加载文本
  • 有没有办法用 Laravel 的 ELOQUENT ORM 来“限制”结果?

    有没有办法用 Laravel 的 ELOQUENT ORM 来 限制 结果 SELECT FROM games LIMIT 30 30 和雄辩 创建一个扩展 Eloquent 的 Game 模型并使用它 Game take 30 gt sk
  • 如何使用 Javascript WebCrypto API 加载 PKCS#12 数字证书

    我正在尝试使用 WebCrypto API 签署数据 但我真的很想使用用户的 PKCS 12 来签署数据 而不是创建私钥 公钥并将其导出到 pkcs 1 或 8 我已经阅读了 W3C 规范 但无法充分理解它 也找不到任何关于如何执行此操作的
  • 模拟实例属性

    请帮助我理解为什么以下不起作用 特别是 被测试类的实例属性对 Python 不可见unittest Mock 在下面的例子中bar实例属性不可访问 返回的错误是 AttributeError
  • Struts 2 选择带有数组列表值的标签

    我正在开发一个简单的 struts 应用程序 在我的 JSP 中 我有一个下拉列表框 使用s select标签 我需要用操作类中的数组列表值填充这些值 我怎样才能做到这一点 需要进行哪些改变structs xml文件来完成这个 JSP
  • 在WAMP中更改MySQL root密码后无法连接

    这是 WAMPSERVER 中最常见的问题之一 我也遇到了这个问题 并在此处以同一标题发布了我的解决方案 但在没有得到适当的回复 解决方案后 我不得不转储 Wampserver 并安装 XAMPP 运行顺利 为了解决问题Scroll dow
  • 应用重力的宝石镶嵌位板

    我正在尝试用位板制作一个宝石迷阵级联模拟器 到目前为止 我已经能够检测并移除火柴 但现在我需要让珠宝掉下来 我的状态由一系列位板表示 每个位板对应一种宝石 我有一张所有被移除的珠宝的面具 是否可以使用一些按位魔法来做到这一点 两个初始位板的