使用SAT解算器生成填字游戏

在哈布雷(Habré)上有一些有关填字游戏的文章。 其中之一是“由计算机编译的最复杂的填字游戏”,它说的是由计算机组成的非常复杂的填字游戏,它“必须有所帮助”。 第二篇文章“填字游戏形成算法”讨论了作者创建填字游戏的算法,并指出这个“最困难的填字游戏”仍然没有被征服,并说:“也许这个未被征服的高峰会激发某人再掀一场风暴!” 好吧,您可以接受挑战。 它的结果是,在切口下看。

首先,我将给出这个最复杂的填字游戏:

图片

您需要找到的第一件事是用于编译此填字游戏的单词列表。 因此,从上述文章中提取了两个文件-一个文件用俄语单词,一个文件用英语。 然后有必要解决主要问题-使用哪种算法来编译此填字游戏。 实际上,此填字游戏并不因单词数量而“复杂化”,而是根据其相交数量来“复杂化”。 显然,在这里不适合使用暴力攻击,因为要花太多时间来整理所有选项。 在上面的文章中,许多启发式方法被认为可以加快搜索过程,但是,此填字游戏从未用俄语或英语版本进行过编译。 您可以继续提出其他启发式方法来加快解决方案的速度,但是大多数启发式方法已经在SAT解算器中发明和实现。 因此,您可以将任务转换为SAT解算器可以理解的形式,并使用其中之一。

什么是SAT求解器?我在文章“使用pentamino示例借助SAT求解器解决平铺问题”中所考虑的输入中期望得到什么信息。 在产生填字游戏的情况下,需要一种略有不同的方法以合乎范式的形式表述问题,我现在将对此进行概述。

首先要做的是将列表中的所有单词分组。 每个组将包含相同长度的单词。 显然,对于填字游戏拼图网格中的每个单词,您都可以从组中选择一个具有相应长度的单词。 我们将可以用网格中的单个单词编写的组中的每个单词与布尔变量相关联。 如果将组中给定的单词写入网格中的该单词,则此变量为true,否则为false。

现在,让我们草拟一个描述我们问题的公式,也就是说,我们实际上将对变量施加限制。 垂直查找单词的所有交集,水平查找单词的所有交集。 对于每个交集,我们确定哪些单词对彼此组合,哪些不组合。 但是,这里出现问题,因为对于一个路口,这样的对的数量可能超过一百万。 因此,我们将使用不同的方法。 我们按字母水平排列对应于该单词的组中的单词,该字母位于这两个单词的交点处。 垂直对单词进行相同操作。 显然,匹配的单词在交点处将具有相同的字母。 我们为在水平和垂直方向上至少一个单词中出现的每个字母引入一个附加变量。 现在,两个单词相互组合的条件是至少有一个这样的变量为真。 因此,对于每个相交,将添加一个由与字母相对应的变量组成的子句。 现在,您需要在单词的交点位置将对应于特定字母的变量与包含该字母的单词相关联。 这是通过保证两个布尔变量具有相同值的子句来完成的。 最后,您需要确保在填字游戏中没有相同的单词。 为此,对于数据库中的每个单词,我们添加以下形式的子句(不是x_i V而不是x_j),其中x_i是与填字游戏拼图网格中一个单词对应的实例变量,而x_j是与填字游戏拼图网格中另一个单词对应的实例变量。

在内存为16 GB的Intel 2600K 3.5 GHz上,使用俄语单词生成此“最复杂的填字游戏”需要花费几分钟。 使用英语单词创建一个填字游戏大约需要二十分钟。

之后,我尝试了其他填字游戏。 例如,我设法以6×6正方形的形式组成了英语和俄语单词的填字游戏,其中所有单词都相交。
接下来,我给出产生的填字游戏。 那些愿意的人可以解决他们。

俄语单词选项:
1带有凸起鼻子的卧式慢动作飞机
6横式日本弦乐器
10水平在斯堪的纳维亚神话中,一个从世界深渊的过早混乱中崛起的巨人
14属的水平流放
15水平矿物
16捷克水平诗人(20摄氏度)
17几内亚湾(赤道几内亚)的水平岛
18水平嘴巴,嘴唇(过时)
19横向怨恨,愤怒
20水平只有一个政党在场
23水平的爱尔兰最大的河流
24卧式文职服装
25安哥拉和扎伊尔的水平河,Kwango河的左支流
27匈牙利公交的水平品牌
32朝鲜的水平城市和港口
35水平婆婆或婆婆
37茄科水平植物
38 Horizo​​ntal一个从事梳理羊毛的人
41水平女性名字(希腊善良,善良)
42枚加拿大水平人造卫星
韦伯歌剧《自由射手》的43个水平角色
斯洛伐克的44 Horizo​​ntal City
46水平支出
鲤科48头水平养殖鱼
50 Horizo​​ntal在日本神话中,大米穗的神
54卧式无机晶体荧光粉
59伊朗水平先知,摩尼教的创始人(3摄氏度)
西印度群岛的60个水平农舍
61水平牧羊犬的品种(类似于狐狸)
62卧式(反式)愚蠢固执的傻瓜
奥伦堡地区63水平城市 在乌拉尔河上
64 Horizo​​ntal在希腊神话中,一个巨大的猎人被阿尔emi弥斯杀死
65位水平的智利歌手和诗人
66 Horizo​​ntal印度民间剧院的角色,是一个残破的玩者的形象,一个有很多顾客的寄生虫
67水平的车臣人和因古什大地母亲
1 1413年巴黎民众起义领导人之一的垂直昵称
2垂直不满意的感觉
3垂直的德国古生物学家(1800-1862)
4纵向伊比利亚半岛的土著居民占领了摩尔人占领的领土
5位立式俄罗斯吉他大师
6瑞典和俄罗斯垂直军事领导人,将军,彼得一世同伙(1667-1717)
7垂直音乐家演奏乐器
8垂直扬声器,雄辩的人
日本本州岛9个垂直山脊
10立式朝鲜打击乐器,八角鼓
11拉脱维亚垂直指挥(1917-1967)
12垂直亲切,黄鼠狼
13 Vertical在斯拉夫神话中,精神是死亡的化身
起源于日本的21种垂直动画类型
22立式螺纹加热灯阴极
阿尔汉格尔斯克州26垂直湖
28垂直河在西班牙
29立式落叶乔木
30垂直稀有物品
31垂直比利时风琴师,萨克斯风的发明者
32立式小框
33垂直黑色
34药物的垂直老方法重量= 62.21毫克
沙特阿拉伯的36个垂直省
39垂直减摩润滑脂
40以植物的茎和叶的形式,对首都,檐口等进行垂直雕塑装饰
45名垂直的俄罗斯作家,诗人,电影剧作家,A。Sokurov电影的编剧(“ Moloch”,“ Taurus”)
47立式多硫化橡胶,一种合成橡胶
49垂直英语病理学家(1945年诺贝尔奖)
51 Vertical在穆斯林神话中,具有特殊力量的精灵
52垂直鹅哭
53垂直女性名(和平生活女神的希腊名字;和平)
54垂直国际象棋大师
55垂直的历史形成的人类群体,由共同的起源团结在一起
56垂直杂种,从单峰骆驼(Dromedar)与两峰骆驼(双峰)越过,纳尔
57垂直引起加速度的机械值
58日本垂直作家(1909-1989,``囚徒笔记'',``田野之光'',``莱特之战'')

带有英语单词的选项:
1水平吸引很多游客的地方
6水平的Car科鱼类中的任何一种
10水平可以得出结论的事实的集合
14水平的Nintu)
15活体动物的水平身体覆盖物
16水平钝性持续性(通常为中等强度)疼痛
17 Horizo​​ntal人体组织对损伤或刺激的反应
Horizo​​ntal科淡水鸭的18个横型属
19水平王朝在947年至1125年统治整个满洲和中国东北的王朝
20水平白色结晶性化合物,用作止痛药和退烧药
23 Horizo​​ntal坦桑尼亚中部的一座城市
24死亡之神
25水平用面粉,水和有时是鸡蛋制成的干面团
27 Horizo​​ntal维吉尼亚州和北卡罗来纳州的苏族人
32水平强烈的躁动欲
35水平的南非主教和反种族隔离斗争的领袖(生于1931年)
37 Horizo​​ntal一种商业文件,用于要求某人提供某些东西作为回报
38水平咬mid
41 Horizo​​ntal葡萄牙北部的一座古老城市
42水平的爱斯基摩小屋
43通用旋转轮形式的水平旋转机构,可抵抗任何方向的旋转
44 Horizo​​ntal巴林首都
46 Horizo​​ntal使头发略带色的动作
48个Majidae的水平类型属
50 Horizo​​ntal Camassia属的几种植物中的任何一种
54条水平飞鱼
59水平一次可以收获整个农作物
60横向美国国会通过的一项法律,旨在防止雇员在雇用期间受伤或染上疾病
61 Horizo​​ntal铁或钢的重块,锤击可在其上成形铁水
62位反对英国亨利八世与阿拉贡凯瑟琳离婚并被监禁并斩首的英国政治家
63 Horizo​​ntal一个男人向一个女人求婚
64位水平的美国棒球运动员
65 Horizo​​ntal秘密的外观
66水平小型细长鸥,翅膀狭窄,叉状尾巴
67 Horizo​​ntal以葡萄,橄榄和橄榄油闻名
1法国垂直革命领袖(出生于瑞士),曾是推翻吉伦特派的领袖,并被夏洛特·科迪(Charlotte Corday,1743-1793)刺死在浴中
地中海地区2种垂直的一年生至多年生草本
3垂直热带东南亚灌木状藤蔓,带有辛辣的浆果样水果
4垂直阿尼
5垂直天一亮
6伊朗前世袭君主的垂直头衔
7垂直操作摄影机的摄影师
8 Vertical土耳其南部的一座城市,位于塞汉河上
9垂直的干旱地区几乎没有植被
10名垂直超现实主义西班牙画家(1904-1989)
11垂直具酸味并能使石蕊变红并与碱反应形成盐的各种水溶性化合物中的任何一种
12 Vertical一个泰国人或居民
13垂直(在诺斯替教中)一种来自至高无上的神的力量或自然,并在宇宙的运转中扮演各种角色
21垂直安第斯山脉哥伦比亚东南部的活火山
22垂直质量非常轻的轻子
26垂直居住在巴西和巴拉圭的南美印第安人的成员
28垂直脸的主要感觉神经和咀嚼肌肉的运动神经
29垂直当流体的流向自身加倍时产生的微型旋涡或旋风
30垂直英国艺术家和废话作家(1812-1888)
31垂直巧克力曲奇配白色奶油夹心
32垂直弹道导弹,能够从一个大陆传播到另一个大陆
33 Vertical一种三音Chadic语言
34 Vertical用来测量新鲜鲱鱼的容量单位
36垂直大的橘子和柚子之间的大汁多汁杂种,皮肤厚实皱纹
39羊毛或羊毛和棉布制成的垂直平纹(通常为釉面)织物,以前特别用于衬里,服装和窗帘
40垂直药剂师的重量单位,等于480粒或十二分之一磅
45 Vertical比利时中部的一个小镇
47 Vertical鲜艳的长披肩
49垂直旧约中的一本书描述了约书亚在摩西去世后如何带领以色列人进入迦南(应许之地)
51 Vertical一种非甾体类抗炎药(商品名Advil和Motrin和Nuprin),用于减轻关节炎的疼痛以及作为止痛和解热药
52欧亚大陆中部的垂直山羊状羚羊,鼻子长而像长鼻
53美国垂直网球选手(1973年生于南斯拉夫)
54垂直稍湿
55棵垂直的肉质植物,叶片的花环通常带有像麻的纤维和艳丽的花的穗状花序
56垂直活动涉及保持某些物品处于良好的工作状态
57纵向(南非)牛车旅行(特别是一群定居者的有组织移民)
58垂直的高山湖泊(尤其是由冰川形成的高山湖泊)

俄语中的6字纵横填字游戏6:
1名卧式苏联试飞员,苏联英雄,莫斯科-北极-温哥华直飞航班的参与者之一
2横耳
3水平分压器
意大利西西里岛上的4水平城市
5在加热室中通过波纹获得的水平卷曲变形纱
6法国水平电影制片人,编剧(《恶血》,《男友遇见女孩》)
16世纪立陶宛大公国的7枚垂直银币
8美国垂直生物化学家,首先合成了tRNA基因(1968年诺贝尔奖)
9俄罗斯联邦的垂直城市,北奥塞梯,在阿斯顿河上,在奥塞梯军事路上
10垂直的壁iche位置在墓室的墙壁上,死者被安置在该处并围墙或用天篷悬挂
11垂直the体的大腿
法国东南部的12个垂直城市

英语填字游戏6对6:
1水平的,是北加利福尼亚州和俄勒冈州南部的印度人的成员
2水平的史前希腊人四个师之一的成员
3水平会上瘾
4水平希腊神
5水平小型个人或衣物或缝纫物品
新西兰的6棵水平可贵木材树,产硬红木,用于家具,桥梁和码头
7垂直线在两个或多个点处与曲线相交的直线
8垂直带有弯曲下垂曲线的几羽冠羽旧大陆鸟中的任何一种
9位美国小说家为儿童读物而着名(1832-1888)
10只垂直的北美蓝鸟
11垂直行业,其职业是制作和更换服装
番荔枝科的12个垂直型属

结论


SAT解算器的使用增加了可生成的填字游戏的复杂性。 与上一篇文章一样,我想问下一个无可争议的高峰-用7乘7的方格形式制作俄语或英语单词的填字游戏。谁将接受挑战?

Source: https://habr.com/ru/post/zh-CN408697/


All Articles