いくつかの文字を落とし、コードを削るコードゴルフエントリが表示されたら、横並びのdiffの編集履歴を確認します。見て、学ぶ:)
この課題は、最も美しいアニメーションdiffを生成するプログラムを作成することです。
- 入力は、順序付けられた一連のテキストバージョンになります。
- プログラムは、任意のプログラミング言語で作成できます。
- プログラムは、特定のプログラミング言語の入力データにプログラム自体を制限することが許可されています。
- プログラムは特定の入力データに合わせて調整しないでください。プログラムは汎用で、順序付けられた一連のテキストバージョンで機能する必要があります。
- 入力のバージョンごとに、バージョンの全文が表示される出力アニメーションに対応する時間が必要です。バージョンステージ間の差分をアニメーション化する必要があり、すべてのバージョンステージが出力に順番に存在している必要があります。これらのキーフレームでは、バージョンサイズを表示する必要があり、視聴者はこれがその時点で見ている完全なバージョンであることを理解する必要があります。
- プログラムは、差分の計算にサードパーティのコードを使用することはできません。
- 構文強調表示の出力はオプションです。プログラムが構文を色付けする場合、サードパーティのコードを使用して色付けすることはできません。
- 出力は、アニメーションGIFになります。
- プログラムは、サードパーティのライブラリを使用してGIFを作成する場合があります。
- これは人気コンテストなので、このサイトの人気コンテストの定義に従って、最も投票数の多いエントリが勝ちます。
PythonのndiffとPillowの初歩的なアニメーションGIFサポートを使用し、追加と削除の各ステップをアニメーション化する簡単なスクリプトの例を次に示します。
個人的には、これはかなり悪い仕事だと思います。構文の強調表示は行わず、再配置されたコードチャンクを移動しようとすることも、誰かがライブで編集しているように感じることもありません。また、キーフレームの入力サイズをバイト単位で表示することに関する規則を破り、サードパーティのライブラリを使用して差分を作成します。改善の余地がたくさん!
そして、できれば、人気のあるエントリがcodegolf.stackexchange.comコミュニティにとっても便利な楽しいツールになることを願っています。そのため、他の人がプログラムを簡単に実行して使用できるようになれば幸いです。