你能在500字节内构建一个可识别的世界地图吗?
摘要
一位开发者尝试使用ASCII字符和deflate-raw压缩技术,在500字节内创建可识别的世界地图,尽管未压缩文本为8,523字节,仍实现了445字节的压缩地图。
暂无内容
查看缓存全文
缓存时间: 2026/07/05 00:43
# 仅用 500 字节构建世界地图
来源:https://www.experimentlog.com/blog/building-a-world-map-with-only-500-bytes
2026 年 6 月 28 日
仅用 500 字节的世界地图 (https://piwodlaiwo.github.io/smallest-world-map/)
大约十年前,我参加了一场 JS1k 竞赛,用不到 1k 的代码构建了一个 **小型的 jsfiddle 克隆** (https://js1k.com/2014-dragons/demo/1797)。几年后,我再次参赛,想试试能否用 1k 以下的代码构建一张 **世界地图** (https://js1k.com/2019-x/demo/4249)。我的方法是在一个 `<` 标签内以 ASCII 形式渲染地图,并用极小的字符表示陆地和海洋。这个方案是可行的,但最近我想看看能否把体积压得更小——也许借助生成式 AI 的帮助。我一直在大量使用 Claude Code,所以这次想试试 Codex,结果发现 AI 的表现并不理想。
Codex 尝试了多种方案,从 SVG 开始,但失败了——500 字节似乎不足以画出任何可辨认的形状。一张真实感的世界地图主要依赖海岸线细节,而 SVG/canvas 路径的每个坐标都要占用字节。一旦形状简化到足够小,它们就不再像世界地图了。最后 Codex 又回到了 ASCII 方案,但没有建议进一步的优化——比如去掉任何不利于识别的内容。我建议去掉表示水域的点,裁剪掉左侧空白边距,并将地图压缩到只包含陆地的 `*` 字符,限制在一个更紧凑的边界框内。我们还尝试去除填充的陆地内部,只保留大陆轮廓,但这样压缩效果反而更差。填充的陆地会产生长而可预测的重复字符序列,压缩算法更喜欢这种重复序列,而非稀疏轮廓中大量的小间隔。
最后的压缩步骤是对仅含陆地的裁剪地图使用 `deflate-raw` 压缩。未压缩时可见地图文本仍有 8,523 字节,但压缩后的地图数据降到了 445 字节。我认为这才是亮点——不是绘制一张细节更少的地图,而是选择了一种压缩算法能够充分利用的表示方式。HTML 部分更大(仍小于 1k),因为它需要包含 base64 数据以及浏览器端的解压代码,但地图本身确实小于 500 字节。
你可以在这里查看 (https://piwodlaiwo.github.io/smallest-world-map/),这是代码仓库 (https://github.com/piwodlaiwo/smallest-world-map)。
现在,有人能用不同的方法(不只是去掉几个字符)来挑战这个方案,或者生成一个更逼真的 1k 版本吗?
相似文章
仅用500字节构建世界地图
Iwo Kadziela 创建了一种方法,利用 deflate 压缩和 JavaScript 的 DecompressionStream API,仅用445字节数据生成可信的ASCII世界地图。
@HowToAI_: 这个仓库将201GB文本压缩至6GB,且不损失任何精度。→ 比向量数据库小97% → 本地运行 →…
这个仓库将201GB文本压缩至6GB,且无精度损失,比向量数据库小97%。它可本地运行,并为Claude提供即插即用的MCP,完全开源且私密。
最大的可用Minecraft世界,总计15 TB
2b2t.place团队宣布发布最大的可用Minecraft世界下载,总计15 TB高度压缩数据,覆盖2b2t服务器1,024,000²区域及额外维度,使用机器人账户经过一年多的开发创建。
@0x0SojalSec: 这个工具将6000万个文本块从201GB压缩到仅6GB,且精度无损,可在本地笔记本上运行
该工具将6000万个文本块从201GB压缩到6GB,用于RAG且精度无损,使得在笔记本上实现强大的本地检索增强生成成为可能。
13KB的Quake (2021)
探讨了游戏Quake如何被压缩到仅有13KB,展示了极致的优化技术。