Postscriptで「ライフゲーム」 35
ストーリー by Oliver
トナーまみれの人生 部門より
トナーまみれの人生 部門より
dseg 曰く、 "本家より。Postscriptを使ってコンウェイの『ライフゲーム』をプログラムしたヤツが現れた。それぞれの「世代」のスナップをプリンタに送り込んで実際に印刷させる事もできるという。 Postscriptは現アドビシステムズ会長のジョン・E・ワーノックが開発したページ記述言語。立派なプログラミング言語なので、原理的にはこういうものも組めるのだろうが、本当に作った作者氏に脱帽...。"
Print out each generation on a new page (スコア:3, 参考になる)
若干の変更が必要です (1000 枚もまずいので 10 枚に変更)
--- life.ps.org 2003-05-27 07:04:13.000000000 +0900
+++ life.ps 2003-05-27 07:17:52.000000000 +0900
@@ -21,7 +21,7 @@
/size 70 def
/cellsize 5 def
-/numgens 1000 def
+/numgens 10 def
/get2 {
3 1 roll get exch get
@@ -153,6 +153,6 @@
ar ar2 arcpy
-numgens { disp DoGen } repeat
+numgens { dispPage DoGen } repeat
disp
showpage
お約束のコメント (スコア:3, 参考になる)
NeXTは、WYSIWYGを実現するために、画面描画にDisplay Postscriptを採用してました。
確かこれは、AdobeとNeXTが共同で開発したものです。
そのため、ちょっと凝ったことをやるのには、Postscriptで関数を書き、
それを*.pswというファイルで保存し、Objective-Cから利用します。
これらの仕様はAdobeによってX環境に移植されたので、IBMのAIXやSunのSolarisなど、
Display Postscriptを採用した環境では同様のプログラミングが可能だったと思います。
サンプルもついてたけど、糞重たかったのを覚えています。
Re:お約束のコメント (スコア:1)
簡単な図は自分で PostScript 書いて TeX に張り込んでました。
PostScript でハノイの塔やってる人がいた記憶がありますが。
# と召還してみるテスト
--- show mpls ldp neighbor
ライフゲームではありませんが (スコア:1, 参考になる)
Re:ライフゲームではありませんが (スコア:3, 参考になる)
前にもどこかで紹介したと思いますが、1993年に開催された国際邪悪なPostScriptコンテスト [mit.edu]のBest Artwork賞受賞作 [titech.ac.jp]の 改良版 [titech.ac.jp]です。あきれるほど凝縮されたコードですが、実際にレイトレやってます。
PostScript に完全なプログラミング言語としての機能を持たせた ことは、古い機械が新機能に柔軟に対応できる利点がありましたが、 欠点も多かったと思います。最大の問題点は、データの正当性が検証 できない(停止問題ですから)ことでしょう。 その結果、DTP 業界においてはアプリケーションが極端に固定化 されてしまうことになりました。
その反省の上に立って作られたのが PDFです。仕様を読むと、注意 深くプログラム可能な要素を取り除いていることが判ります (例えば Type4関数に条件分岐はあってもループは無いとか)。
Re:ライフゲームではありませんが (スコア:2, 興味深い)
Re:ライフゲームではありませんが (スコア:1)
Windows2000 (P3-1.7GHz,256M) 上で AFPL GS 7.04 を使って
pent.ps を実行したところ 30 分でできました。
ファイルサイズは 12.68M。bz2 で圧縮したら 40.17KB。
XML 世代のライフゲーム (スコア:1)
PostScript は反復と条件分岐が備わっているからそれなりにプログラムが書ける訳ですよね。そのような要素がない言語。例えば SVG [w3.org] と XSL [w3.org] でライフゲームを実現するのは無理なんでしょうか。
Re:XML 世代のライフゲーム (スコア:2, 興味深い)
問題なく実現可能だと思います。
SVGって、Flush対抗技術なんだからそれができないと困ると思います。
実際、僕もSVGとJavaScriptでインタラクティブなツールを開発したことがあります。
ECMAScriptを使ってはダメというなら、かなり厳しいというか、できるの?という感じですけど。
Re:XML 世代のライフゲーム (スコア:1)
以前、XSL-List [mulberrytech.com]で、N-Queenを実装するなんていうのがなんていうのが出たことがありました(ここ [orbeon.com]に動作するものがあるようです)。
XSL Chess [orbeon.com]なんていうのもありますね。
Re:XML 世代のライフゲーム (スコア:0)
パターンマッチによる比較と分岐はあるようです。
Re:XML 世代のライフゲーム (スコア:0)
Basic インタプリタ (スコア:1)
以前どこかで、各言語ごとの Basic インタプリタ実装を集めたページを見た記憶があるんですが、見つからないなあ。
Re:Basic インタプリタ (スコア:1)
すっかりオフトピですが……ここのことかな [airnet.ne.jp]?
「各言語ごと」というのがよくわからんので、はずしてるかも。
Re:Basic インタプリタ (スコア:0)
> 「各言語ごと」というのがよくわからんので、はずしてるかも。
これは
「C言語によるBASIC実装」
「ForthによるBASIC実装」
「Lispによる…」
「Smalltalk…」
:
:
という事だと思うのですが。
先生が (スコア:0)
Re:先生が (スコア:2, おもしろおかしい)
私も関数グラフまでは出力させたりしていました。
大学の時、友達がで 8-Queen を直接 LW-II で解かせて
すごい長い時間『印刷中』にしてしまって、まわりから袋叩きに
あってたのを懐かしく思い出しました。
Re:先生が (スコア:0)
ウチの大学の先生は、フラクタルの話をするのに、 コッホ曲線とかヒルベルト曲線とかドラゴン曲線とかを描くプログラムを postscript で書いて配ってました。
PostScriptって (スコア:0)
Forth みたいな。
昔、大学にいたとき、素でPS書いて印刷してました・・・
Re:PostScriptって (スコア:2, 参考になる)
単純に印刷するだけなら大体
の手順で出来ますから意外に簡単だったりします. 特に業務用の帳票みたいに, ページ単位で配置のコントロールをアプリケーションプログラム側で行う場合には, 各印字項目を好きな順番で出力することができるのでプログラマには好評でした.
Re:PostScriptって (スコア:1)
画面をミジン切りにするのとか、15パズル状態にするのとか
スクリプトが書けました。
でもってそいつを添付ファイルで友人にメールで送って、
実行させて驚かせたり...
MacOS Xではできないのかな。
あれはPDFだからむりかなぁ。
Re:PostScriptって (スコア:1)
私もtext->Postscriptのコンバーターを自作して、線が引けたり、 Postscriptコードを貼り込んだり出来る奴を作ったことがあります。 あと、カルコンプファイルからのコンバーターとか。
使ってくれる人がいるなら公開するんだけどなぁ。
それと、そのtext->Postscriptのコンバーターの最初のバージョン では、改行・改頁の判断及び処理をPostscript内でやってました。 そうすると、コンバーターの主な処理はカッコのエスケーピングだけに なるし、プロポーショナルなフォントを選べば、カーニングにも対応できるという優れもの(笑)
今考えると、sedで20行以下で書けそうなコンバーターですね。
Re:PostScriptって (スコア:1)
青本 [ascii.co.jp]、緑本(残念、画像なし) [ascii.co.jp]、赤本 [ascii.co.jp]とか、必携のバイブルでした。
(赤本って、昔は全面赤かったような気がするんですが)
職場のPSプリンタでよく遊びました。
BASICの一行プログラム(オフトピ) (スコア:0)
一行には255文字しか詰め込めないけど結構盛り上がっていたような。
#どんなプログラムがあったか思い出せないのでAC
Re:BASICの一行プログラム(オフトピ) (スコア:0)
#同じくどんなものがあったかは思い出せないのでAC
Re:BASICの一行プログラム(オフトピ) (スコア:0)
Re:BASICの一行プログラム(オフトピ) (スコア:0)
Re:BASICの一行プログラム(オフトピ) (スコア:0)
#やはりどんなものがあったかは思い出せないのでAC
Re:BASICの一行プログラム(オフトピ) (スコア:0)
http://pc2.2ch.net/test/read.cgi/tech/1051703369/l50
見習え (スコア:0)
しょっちゅうプリンターがお腹壊して便秘になるときたもんだ。
#Adobe純正、なはず、だよなぁ、、
#やっぱ2バイト文字圏はおざなりなのか?
高速版 (スコア:0)
Postscriptって (スコア:0)
たかが Life Game 程度のプログラムを記述することが、記事になるほど難しい物なのですか?
Postscript を解釈するには、多くのリソースを必要とするようですが。そうだとしたら、いくら印刷用に作られたとしても、(記述能力/リソース)が低すぎる、駄目な設計のような気がします。
現在の低価格プリンタといえども、高速なCPUと大きなメモリをもっているはずなのに、ほとんど Postscript を採用していないのも、しかたないと思いました。
Re:Postscriptって (スコア:1)
> Postscript を解釈するには、多くのリソースを必要とするようですが。
Postscriptの様なFORTH系言語はむしろ最もリソースを消費しない高級(?)言語です. Life Game程度は手慰みに過ぎません. このプログラミング言語としての柔軟性・拡張性がプリンタ用ページ記述言語として10年以上も一線級で使われてきた原因であることは間違い有りません.
しかし何でも出来るってことは逆に言えばいかようにでもシステムリソースを消費することが可能ってことで, ちょっとしたプログラミングミスや下手なコードで印刷できないという事態に陥ることがあります. 前の方のコメントで有ったように, その反省から出てきたのがPDFで, 通常のコンシューマ向けやオフィス用途ならこれで十分なわけです. 結局低価格プリンタでPostscriptを使うっていうのは鶏を裂くのに牛刀を使うってなもんで, Adobeの高額なライセンスに見合ったものじゃなかったというのが, 現在の普及率の原因と言ってよいでしょう.
Re:憂鬱 (スコア:1)