- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
首先,我不一定要寻找一个完整的算法,我可以直接复制和粘贴,然后收工。任何“通用方法”解决方案对我来说都很好!
整篇文章的灵感来自于一天的工作缓慢,并偶然发现了 this site并且无法弄清楚他们是如何实现他们的生成器的。
对于那些不知道的人,“斑马谜题”或“爱因斯坦谜题”是您以前可能遇到过的著名逻辑谜题。
完整的 wiki 文章是 here ,但我会发布相关位。
There are five houses.
The Englishman lives in the red house.
The Spaniard owns the dog.
Coffee is drunk in the green house.
The Ukrainian drinks tea.
The green house is immediately to the right of the ivory house.
The Old Gold smoker owns snails.
Kools are smoked in the yellow house.
Milk is drunk in the middle house.
The Norwegian lives in the first house.
The man who smokes Chesterfields lives in the house next to the man with the fox.
Kools are smoked in the house next to the house where the horse is kept.
The Lucky Strike smoker drinks orange juice.
The Japanese smokes Parliaments.
The Norwegian lives next to the blue house.
Now, who drinks water? Who owns the zebra? In the interest of clarity, it must be
added that each of the five houses is painted a different color, and their inhabitants
are of different national extractions, own different pets, drink different beverages
and smoke different brands of American cigarets [sic]. One other thing: in statement
6, right means your right.
这一切都很好。我在网上找到了几种简洁明了的方法来解决这个问题,尤其是使用约束编程。然而,我感兴趣的是制作更多此类拼图。
显然,矩阵表示是考虑这个问题的一种合乎逻辑的方式。每列包含一个人、房子、他们喝什么、他们开什么类型的车等等。
我最初的想法是从一个随机生成的完整(即已解决)网格开始,然后(以某种方式)从已解决版本创建唯一标识它的提示。每次可以确定某些东西时,它就会从网格中删除。
扯掉我在开头列出的站点,以下可用于解决网格的“提示”可以是以下类型:
人/动物/植物在给定的房子里生活/生长。
人/动物/植物不在给定的房子里生活/生长。
人/动物/植物与其他人住在同一所房子里人/动物/植物。
人/动物/植物是另一个的直接邻居人/动物/植物。
人/动物/植物是其他人的左邻居或右邻居人/动物/植物。
人/动物/植物和另一间房子之间有一间房子人/动物/植物。
人/动物/计划与另一间房子之间有一座房子左边或右边的人/动物/植物。
人/动物/植物和另一个之间有两个房子人/动物/植物。
在人/动物/计划和另一个之间有两个房子左边或右边的人/动物/植物。
人/动物/植物住在另一方的左边或右边人/动物/植物。
您可以看到这些如何被泛化、扩展等;
困难在于,使用我的方法(从完整的网格开始并生成这些提示),我不确定如何确保我创建的提示集绝对会产生目标网格。
例如,如果您说“The Englishman does not own a pine tree”,则您无法在拼图中的任何给定时间果断地将两件事配对在一起。然而,如果只剩下两棵树需要解决,这实际上可能是一个决定性的证据。
我是不是以完全错误的方式思考这个问题?更好的方法是使用一些随机的、预定义的已知元素(即红色房子在中间)创建一个网格,然后使用这些提示作为构建规则来构建网格吗?
如有任何建议、要阅读的文章、要学习的编程技术等,我们将不胜感激!
最佳答案
这是一个使用求解器的简单算法:
生成一个随机拼图实例。
构建与此拼图实例相关的所有可能线索的集合C。 (可能的线索是有限的,实际上数量很少:例如,如果有 5 栋房子,则有 5 条可能的线索形式为“A 住在 B 屋”,有 8 条可能的线索形式为“A 住在 B 屋旁边”,等等。)
选择一个随机排列 c1, c2, ..., C 中的 >cn 个线索。
设置i = 1。
如果 i> n,我们就完成了。线索集合 C 是最小的。
令 D = C − { ci } .在线索集 D 上运行求解器并计算可能的解决方案的数量。
如果只有一个解,则设置C = D。
设置 i = i + 1 并返回第 5 步。
(您可以通过分批而不是一次删除一个线索来加快速度,但这会使算法更难以描述。)
关于通过算法生成斑马/爱因斯坦拼图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14569375/
我在某处遇到了以下难题 #include int main() { { /*Fill in something here to make this code compile
我正在尝试为 iOS 创建一个拼图游戏应用程序。从我在互联网上的搜索来看,确实没有任何关于这个主题的教程。有谁知道任何人都知道的好教程或游戏教程的链接?谢谢。顺便说一下,iOS4 将不胜感激。 最佳答
如果必须使用 Promises,您会如何编写以下代码? 这个想法是,“私有(private)”方法 p1 调用一个执行异步操作的函数,然后,当异步调用的结果准备就绪时,控制权将传递给“私有(priva
下面是其中一个 facebook 谜题:我无法理解如何进行此操作。 你有 C 个容器、B 个黑球和无限数量的白球。您希望以一种方式在容器之间分配球,即每个容器至少包含一个球,并且选择白球的概率大于或等
有 5 位成员围坐在一张 table 旁。关键值是坐在 table 周围的成员数量。所以现在关键值将是 5。一个恐怖分子告诉成员,因为你们是 5 个成员,所以我将从第一个成员开始数,数到 5 的人将被
你能在不抛出错误的情况下解决这个问题吗?答案是单线。这是来自一个死的职位发布,在回复中要求回答。我认为这是剔除受访者的聪明方法,但我似乎无法在不出错的情况下回答它。 显而易见的解决方案: f.moo(
此源输出 G'Day Mate. 这是怎么发生的? public static void main(String args[]) { System.out.println("Hello Wor
我正在 android 中开发一个 slider 拼图,它有一个图像被分解成小图像,我们需要对这些 fragment 进行排序以形成正确的图像。我使用了一个 3x3 的 GridView ,其中包含
我遇到了以下难题,无法在 Picat 中制定解决方案: You will generate 5-digit numbers, where each digit is in 1..5 and diffe
我是 Javascript 新手,并且正在努力解决 CodeWars 中的这个难题。 约翰想用壁纸装饰房间。房间的尺寸为:宽度(w)、高度(h)、长度(l)。一卷壁纸的尺寸为 52cm 宽,10m 长
我对 Java 还很陌生,尝试过 Best Before puzzle from Spotify昨天。当我发送它时,我收到“错误答案”错误。检查其他解决方案没有帮助,我无法弄清楚哪个输入给出了错误的答
我正在尝试恢复我拥有的一些旧代码,这是一个拼图游戏。它从文件夹中加载图像(拼图),将它们随机放置在页面周围,然后拖放到板上。这曾经有效,但当我今天尝试使用它时,它只是抛出错误(见下文)。 HTML:
这对你们来说可能是个愚蠢的问题。它是关于 CSS Sprites 的。我有一个包含 4 个菜单的导航,例如 .. HOME COMPANY SERVICES SUPPORT 尽管我使用了一个 css
我需要创建一个标题,可以根据正在构建的页面轻松添加或删除部分,但我在处理其中一部分时遇到了问题。 我有一个标题,看起来像这样将所有组件放在 如果导航被移除,它应该看起来像这样(垂直居中) 我的问题是如
我在 JS 中构建了一个 15 拼图,但我的随机拼图生成正在创建无法解决的拼图实例。这可能是因为我不是计算机科学专业的负责人,但我不确定如何计算代码排列中的反转次数。我想知道如何编写我的代码,以便我可
我正在寻找 8 Puzzle graphs tree generator,最好是 (php+) html+css+javascript。我需要的是类似 3 2 1 6 8 7 5 4 会生成所有可
我住在德国,在 Android Market 上发布“Last Call Widget”。随着时间的推移,我一直在稳步改进它,但一组用户仍然提示它无法在他们的设备上运行。 我的小部件监听“androi
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我正在尝试制作一个看起来像这样的拼图游戏。我试过的看起来像这样。 https://jsfiddle.net/uccfb46z/ 现在如果我想改变碎片的形状我需要修改这部分 - outside: fu
首先,让我为缺少 SSCCE 表示歉意。我在这方面真的没有足够的专业知识来弄清楚什么是相关的,什么不是。 简而言之,问题是在两台运行相同分辨率 (1366x768) 的不同计算机上,我女朋友的 tum
我是一名优秀的程序员,十分优秀!