ある開発者が、平均的な国旗をわずか76ビット、あるいはBase94形式で約9文字で表現できるカスタムエンコードスキームを作成しました。国旗をストライプ、星、三日月などの一連の層状の幾何学的コンポーネントとして扱うことで、このシステムは、認識可能なSVGグラフィックスに再構成可能な高度に圧縮されたデータを可能にします。

エンコードスキームから生成された国旗のレンダリングされたSVGグラフィック。
minidecoderは、エンコードされたビットを認識可能なSVGグラフィックに再構成します。vantezzen.io

この視覚資料は、デコードおよびレンダリングプロセスの最終的な出力を示しています。

幾何学的レイヤーモデル

このエンコードは、国旗を静止画としてではなく、個別の視覚的要素の複合体として扱います。それは、Photoshopのようなソフトウェアがオブジェクトを処理するのと同様に、国旗が層から構築されるプロトコルを定義します。例えば、アメリカの国旗は、まずストライプ層を定義し、次に青い長方形の領域、最後に星の形状層を定義することで構築されます。

フラグのエンコーディング統計: 平均フラグサイズ 76 bits; 中央値フラグサイズ 55 bits; 最長フラグ (Qatar) 420 bits
フラグのエンコーディング統計vantezzen.io

HN Digestによる図表(vantezzen.ioの報告数値に基づく)。数値はソースの表記のまま表示。

一般的な要素は、特定のタイプに分類されます。ストライプ(水平、垂直、または斜め)、形状(星、三日月、円)、および領域(長方形またはバンド)です。ユニオンジャックのような特殊なコンポーネントは、「組み込み」の形状として扱われ、オーストラリアやニュージーランドのような国旗の構築を簡素化します。

「平均的な国旗は76ビットで表現でき、中央値は55ビットです。」

— Compressing a flag to 11 bits · vantezzen

ハフマン符号とビットパッキング

高い圧縮率を達成するために、システムはハフマンツリーを採用し、国旗の特徴の頻度に基づいてバイナリコードを割り当てます。世界の国旗の45%が2:3のアスペクト比を共有しているため、システムはこの共通の特性に単一のビット(0)を割り当てます。同様に、最も頻繁な色である赤、白、青には、定義されたカラーパレット内で短いビットシーケンスが与えられます。

国旗がバイナリビットのシーケンスに変換される視覚的表現。
システムはハフマン符号を使用して、国旗の属性をコンパクトなビットシーケンスに変換します。vantezzen.io

この画像は、幾何学的な国旗のコンポーネントをビットパッキング形式に変換するプロセスを説明しています。

このフォーマットは、ハフマンツリーの「Custom」リーフを使用することで、ユニークな国旗の「ロングテール」を処理します。もし国旗にエルサルバドルの189:335のような珍しい属性がある場合、システムは固定長のフリーバリューオプションに切り替わります。これにより、一般的な国旗についてはエンコードをコンパクトに保ちつつ、例外的なケースもサポートすることが可能になります。

トレードオフと制限

この幾何学的アプローチの主なトレードオフは、紋章学的な精度の喪失です。このシステムは、「認識可能」な正確さを優先するために、正確な色の色合いや複雑な細部を意図的に無視しています。これはインドネシアのような単純なデザインには機能しますが、複雑な紋章、印章、または動物のグリフを含む国旗には苦戦します。

現在、67の国旗がエンコード不可能なままです。それらは、アフガニスタンのY字型やスペインやメキシコのような国の複雑なエンブレムなど、幾何学的モデルでは表現できない要素を含んでいるためです。単純な8ビットのルックアップテーブルを使用すれば、これらの国旗をより正確に表現できるかもしれませんが、ハフマンベースのビットパッキング手法が持つ生成の柔軟性やビット節約の可能性は失われてしまいます。

Hacker Newsの読者の反応

  • 代替案: あるコメント投稿者は、複雑な紋章やほぼ同一の国旗をより効果的に処理できるため、単純な8ビットのルックアップテーブルの方が11ビットのエンコードよりも優れていると提案しました。 コメント ↗
  • 懐疑的: あるコメント投稿者は、このスキームの成功に対して懐疑的な見方を示し、単純な国旗を持ついくつかの国を含む世界の人口の約35%をエンコードできなかったことを指摘しました。 コメント ↗
  • 技術的な指摘: 別のユーザーは、カラー量子化と、すべての国旗を区別する最小のピクセル位置のサブセットを見つけるための最小テストセット問題を解決することを含む、異なる技術的アプローチを提案しました。 コメント ↗
  • 懐疑的: ある読者は、目標は一意のアイテムのリストを保存することではなく国旗を描画することであるため、8ビットのIDシステムで十分であると主張し、エンコードの有効性に疑問を投げかけました。 コメント ↗

Hacker Newsのスレッドで出た意見の要約です。事実として検証されたものではありません。 議論の全文を読む ↗