it.xnews.jp
生成: 2026-09-07 読了 約 2 分 model: claude-haiku-4-5 原文: https://austinhenley.com/blog/python1024.html raw.md

1024バイトのPythonインタプリタをC言語で実装

Austin Z. Henley氏が、1024バイトのC言語コードでPythonインタプリタを実装するコードゴルフチャレンジに成功した。元の可読版は4800バイト以上であったが、最終的なゴルフ版は正確に1024バイトまで圧縮された。

Austin Z. Henley氏がコードゴルフのチャレンジとして、C言語でPythonインタプリタを実装した。当初は512バイト制限でのチャレンジだったが、これが十分ではないことが判明し、1024バイト制限に拡大された。

インタプリタの機能

このインタプリタは、単一の小文字名を持つ整数変数をサポートしており、算術演算子(+、-、*、%)と比較演算子(<、>、<=、>=、==)を優先順位付きで実装している。制御フロー機能として、if・else文、while ループ(オプションのelse ブロック付き)、for x in range(y) ループ(オプションのelse ブロック付き)に対応している。また、引数なしの関数定義と関数呼び出し(再帰呼び出しを含む)もサポートしており、インデント ベースのブロック構造を使用している。print文は文字列リテラルまたは整数式に対応し、コメントも認識する。

コードゴルフのテクニック

実装の工夫

このインタプリタは再帰下降パーサを採用しており、式を解析と同時に実行する。状態管理はグローバル変数で行われ、プログラムコードは999文字の固定長配列に、変数は256個のシンボルテーブル配列に格納される。ループは逆方向へのジャンプとソースコード再解析により実装され、関数はシンボルテーブル内の位置を保存して、呼び出し時にその位置にジャンプする仕組みになっている。

Pythonインタプリタの実行

元の可読版は4800バイト以上あったが、コードゴルフの手法を駆使して正確に1024バイトまで圧縮された。Henley氏は、もしfizzbuuzzのみの動作で良いのであれば、800バイト以下にできると予想している。また、他にも利用可能なゴルフテクニックがあると考えている。

筆者の見立て

この記事は元記事の事実のみに基づいて自動生成されました。

出典

Austin Z. Henley's blog, "Making a Python interpreter in 1024 bytes", https://austinhenley.com/blog/python1024.html (Stack Overflow および GitHub の報道による)

この記事をシェア