ラテックスはチューリングが完了していると聞きました。ラテックスで書かれたプログラムはありますか?

StackOverflow https://stackoverflow.com/questions/2968411

  •  24-10-2019
  •  | 
  •  

質問

通常、タイプセット言語と考えられるもので興味深いことをすることは可能です。たとえば、Mandelbrotセットを構築できます PostScriptを使用します.

で提案されています この数学の質問 そのラテックスはそうかもしれません チューリングコンプリート. 。これは、任意のプログラムを書く能力を意味します(ただし、簡単ではないかもしれません!)。ラテックスでのそのようなプログラムの具体的な例を知っている人はいますか?それは言語で非常に珍しいことをしますか?

役に立ちましたか?

解決

第13号で モナドリーダー, 、スティーブン・ヒックスは、マクロを大量に使用して、TexのICFPコンテスト(Mars Rover Navigationを含む)のソリューションの実装について書いています。面白いことに、TypeSetがRoverのパスのPostScriptマップである場合のソリューションの出力。

他のヒント

あるいは、アンドリュー・グリーンは書いた Texの基本的な通訳 (詳細)。これはわずかに逆にカウントされる場合があります。

pgfmath 図書館はまだ私を驚かせます。しかし、よりチューリング関連のメモ:TEXに実際のチューリングマシンを書くことは可能です。 http://en.literateprograms.org/turing_machine_simulator_(latex). 。 Texで拡張を使用する気の利いた方法です。

あなたが読むならば、ポストスクリプトも完全にチューリングをしています マニュアル あなたはそれの一般的なプログラミング機能に驚くでしょう(少なくとも、私はそうでした)。

def k#1#2 {#2}

def s#1#2#3 {#1#3 {#2#3}}

これがその資格があるかどうかはわかりません プログラミング それ自体ですが、私は最近、ラテックスでオブジェクト指向のもののような何かを始めました。 (以下に従うために数学を知る必要はありません。)最近の論文で、私は書いています カテゴリ, 、持っています オブジェクト形態. 。それらのかなりの数があったので、私は一貫したスタイルを望んでいたので、たとえば𝒞が典型的なオブジェクトを持つカテゴリーでした c そして典型的な形態 c. 。それから私は𝒟を持っています dd. 。したがって、「クラス」を定義し、「カテゴリ」(そこでジョークを理解するには数学者である必要があります)を定義し、Cがこのクラスのインスタンスであると宣言し、 ccat、 cobj、 cmorにアクセスできることを宣言します。など。 cat {c}、 obj {c}、および mor {c}などをしない理由は、これらのカテゴリに特別な名前があるため、インスタンスを宣言した後、簡単に名前を変更できます。 (単にRedefine ccat-まあ、実際には、 ccatは数学モードで mathccatを選択し、テキストモードで textccatを選択するラッパーであるため、実際に mathccat)。 (もちろん、それは上記の提案よりも少し複雑であり、OOのものは、新しいカテゴリを古いカテゴリのバリアントとして定義したいときに本当に便利になります(古いものがそうでない場合さえ対処することができます。まだ存在します。)。

それは実際のプログラミングとしての資格がないかもしれませんが、私はそれを論文で使用していて、それを有用であると感じています - 他の答え(これまでのところ)は、実際の問題に対する賢明な解決策よりもラテックスの能力を披露するという感触を持っています。

私は答えを書いた人を知っています ACMコンテストの問題 ラテックスで。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top