HN 日本語サマリー

← 一覧へ戻る
プログラミング

500バイト未満で認識可能な世界地図を構築できますか?

Can you build a recognizable World Map in under 500 bytes? (experimentlog.com)

30 pointsby iweczek39 コメント

要約

著者は、GenAI(Codex)の助けを借りて、500バイト未満で認識可能な世界地図を作成しようと試みました。CodexはSVGやASCII形式を検討しましたが、バイト数制限内で詳細な地図を生成するのは困難でした。最終的に、著者は手動で最適化を行い、陸地のみをアスタリスクで表現し、圧縮を最大限に活用することで、445バイトの圧縮データで地図を完成させました。

全文翻訳

10年以上前、私はJS1kコンペティションに参加し、1kバイト未満で小さなJSfiddleクローンを構築しました。数年後、再びコンペティションに参加し、1kバイト未満で世界地図を構築できるか試しました。私のアプローチは、<pre>タグ内にASCII形式で世界を描画し、陸地と水には小さな文字を使用することでした。それは機能しましたが、最近、GenAIの助けを借りて、さらにサイズを小さくできるか試したいと思いました。私はClaude Codeで多くの作業を行ってきたので、今回はCodexを試したいと思いました。驚いたことに、AIのパフォーマンスはあまり良くありませんでした。Codexは様々なアプローチを検討しましたが、SVGから始めましたが、500バイトでは認識可能なものを描画するには不十分だったため失敗しました。リアルな世界地図は主に海岸線の詳細であり、SVG/canvasのパスはすべての座標にコストがかかります。形状が十分に単純化されて小さくなると、世界地図のように見えなくなりました。最終的に、CodexはASCII形式に戻りましたが、認識に役立たないものを削除するなどのさらなる改善は推奨しませんでした。私は水玉を削除し、左側の空のマージンをトリミングし、地図をよりタイトなバウンディングボックス内の陸地のみの '*' 文字に削減することを提案しました。塗りつぶされた内部を削除して大陸の輪郭のみを保持することもテストしましたが、実際には圧縮率が悪化しました。塗りつぶされた陸地は繰り返し文字の長い予測可能なランを作成し、圧縮は多くの小さなギャップを持つ疎な輪郭よりも繰り返しランを好みます。最終的な圧縮ステップでは、陸地のみのトリミングされた地図にdeflate-rawを使用しました。表示される地図テキストは、非圧縮で8,523バイトでしたが、圧縮された地図データは445バイトに減少しました。これは、詳細の少ない地図を描画することではなく、圧縮が利用できる表現を選択することがハイライトだったと思います。HTMLは、base64データとブラウザの解凍コードが必要なため、より大きくなります(それでも1kバイト未満です)が、地図自体は500バイト未満です。ここから確認できます。そして、これがリポジトリです。さて、別の(単に数文字を削除するだけでなく)アプローチでこれを上回る人や、より現実的な1kバージョンを生成できる人はいますか?