完全由正则表达式驱动的国际象棋引擎
Nicholas Carlini 这篇文章介绍了自己如何使用 84,688 个正则表达式构建了一个双层 MiniMax 国际象棋引擎。
具体而言,作者是先用正则表达式写了个 CPU 模拟器,然后在这个 cpu 模拟器上写了个编译器,然后用编译器写了个国际象棋引擎。引擎名为 "Regex Chess",可以根据输入的棋盘状态走出一手合理(且不完全糟糕)的棋步。
https://nicholas.carlini.com/writing/2025/regex-chess.html
一些技术细节:
1. 基于正则表达式的 CPU 模拟器:
*作者首先设计了一个基于正则表达式的 CPU,它是一种无分支、条件执行、单指令多数据(SIMD)的架构。
*该 CPU 的状态由一个字符串表示,包含程序“栈”和所有变量。
*基本指令包括 push(入栈)、pop(出栈)、lookup(变量查找)和 assign_pop(变量赋值)等。
*条件执行通过修改状态字符串的开头(%%)来实现,从而控制哪些指令生效。
*SIMD 特性通过正则表达式的全局替换功能实现,可以同时处理多个棋盘状态。
2. 编译器(宏汇编器):
*作者没有构建传统的编译器,而是采用了一种基于符号执行的方法,将 Python 风格的代码转换为正则表达式指令序列。
*符号执行通过跟踪变量操作来记录执行轨迹,而不是实际执行它们。
*条件语句通过创建分支并在后续合并来实现,每个分支对应一个条件路径。
3. 国际象棋引擎的实现:
*引擎使用 FEN 字符串表示棋盘状态。
*通过并行处理,可以同时生成所有棋子的合法走法。例如,pawn_moves 函数可以并行计算所有兵的可能走法。
*利用并行处理,引擎可以模拟 MiniMax 算法,通过生成所有可能的走法并评估其分数来实现。
*引擎通过生成伪合法走法(可能会导致王被将军)然后排除这些走法来实现,这本质上是一种双层 MiniMax 搜索。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
使用大模型编程的一些经验
David Crawshaw(Tailscale 公司的创始人)介绍了他用大型语言模型编程的一些经验。 https://crawshaw.io/blog/programming-with-llms 作者在过去的一年里积极探索并使用大型语言模型进行编程,发现这种技术可以显著提高工作效率。他在编程中使用 LLMs 的方式主要有三种:自动补全、搜索和基于聊天的编程。 作者强调,LLMs 在编程中的应用不仅仅是提供代码片段,更是一种新的编程范式,需要程序员学习如何与之合作。他还提到,LLMs 在处理复杂的编程任务时,尤其是在编写测试和处理编译器错误方面,可以提供宝贵的帮助。 此外,作者还分享了他在使用 LLMs 时的一些具体实践,例如如何编写一个用于计算浮点数四分位数的保留样本器,并展示了如何通过 LLMs 生成和改进测试代码。 ——蚁工厂
- 下一篇
视频号入选腾讯最高奖“名品堂”,产品团队瓜分 1 亿奖金
据报道,微信视频号近期入选腾讯内部年度产品最高荣誉“名品堂”。 根据惯例,腾讯预计将在2025年新年晚会上为视频号团队颁发这一象征产品里程碑的奖项。与NBA名人堂类似,腾讯的“名品堂”是对其内部产品的最高认可。自2015年12月18日员工大会腾讯COO(首席运营官)任宇昕首次提出以来,通常每个产品仅有一次入选机会。唯一能够与之匹敌的奖项,是腾讯的“创始人奖”。 以往,入选“名品堂”的产品团队将获得1亿奖金分配。鉴于视频号目前仅有300多名正式员工,每人的分配额度可能会更高,按300人的团队规模来算的话,每人能到手33万。 不过有消息透露,自2018年起,“名品堂”的奖金分配已不再如往年那般慷慨。 需要注意的是,“名品堂”并非每年都有产品入选。除2020年颁给光子工作室旗下的《PUBG Mobile》,“名品堂”上次颁发还是在2018年。如此算来,该奖项已经断档三年。 在外界看来,这一现象曾被解读为,腾讯近年来新增优质产品数量的下滑。从入围产品的数量来看,2015年曾有4款产品入选,然而到了2017年,仅剩2款,随后的断档更让人不免产生疑问。
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装