用11位二进制重构国旗

Compressing a Flag to 11 Bits

用11位二进制重构国旗

受 Physics for the Birds 视频启发,我尝试设计一套极简编码方案,将各国国旗压缩至仅11位二进制。通过拆解条纹、星星、新月等通用元素,结合 Huffman Tree 对高频率特征进行优化编码,平均仅需76位即可还原一面国旗。印度尼西亚国旗甚至只需11位(Base94编码为'<F'),而复杂的卡塔尔国旗则需要420位。利用 ChatGPT Codex 生成解码器与 SVG 渲染器,这套系统证明了即使是看似复杂的视觉符号,也能通过数据压缩算法被极度精简地表达。

简单的国旗只需要很少的位,而极其复杂的国旗则允许占用更多位,因此没有固定长度。
  1. kjgkjhfkjf

    如果有人也对使用查找表感兴趣:公认的国家和地区少于 256 个 [1],所以 8 位应该足以作为键值。

    这比文中提出的 11 位编码更优,因为它能处理诸如国徽等复杂情况。它也能应对一些离奇状况,比如两个国家的国旗几乎一模一样 [2]。

    [1] https://en.wikipedia.org/wiki/List_of_countries_and_territor...

    [2] https://www.worldatlas.com/articles/country-flags-that-resem...

  2. mabster

    标题太棒了。我当时的反应是:“国旗用 10 个比特都嫌多啊!”哈哈

  3. fwlr

    恰好有 64 面国旗因为包含自定义的字符、印章、符号或图标而被排除在外,这简直是在大声疾呼需要一个“附录”查找表来补全编码。而且这些位置看起来非常有规律,你完全可以把定位信息塞进 u8 剩下的 2 个比特里。

  4. blixt

    这让我想起 YouTube 上一个很棒的系列视频,叫《你能在 PowerPoint 里画出每一面国旗吗?》[1]。那哥们儿拼了老命去精准还原,在这个过程中你会学到国旗究竟有多具体(有时又有多不具体)!

    [1] 第一部分:https://www.youtube.com/watch?v=w5QSVhgrqVE

  5. gerdesj

    Jack(船首旗)是挂在 jackstaff(船首旗杆)上的旗帜,这种旗杆通常位于船尾或船头。

    英国国旗正式名称是 Union Flag(联合旗,因为它是一面旗帜,也是各种旗帜乃至国家的联合!),但说实话,既然那么多人叫它 Union Jack,叫什么都无所谓了。

    如果你家院子里的旗杆有点倾斜,我觉得你也可以叫它 jackstaff,理由和英国皇家海军把岸上基地也命名为“舰船”差不多。比如就在附近就有 HMS Heron(皇家海军赫伦号:Her Majesty's Ship: Heron)。

    联合旗/船首旗作为英国国旗只是基于惯例,而非法律。这有点模糊,就像我们的宪法一样,但一切运转良好。

    我的意思是,虽然我很欣赏这种编码方案,它确实非常巧妙,但现实要复杂得多。英国国旗确实挺复杂的,但它不是唯一的。我敢肯定好几面国旗都有流苏,这估计就扯到国徽的范畴了。

    你到底想眯着眼看多仔细呢!

同日更多故事

2026-09-14