[icfp2007]

ネタバレ

fillのスタックオーバーフローに悩まされたがどうにか再帰を回避してbuildも実装完了。
schemeとかの関数型言語だとこんな苦労いらないのだろうか。

PIPIIIP
PIIPIIP

これで一面赤色の画像ファイルが生成できるので、とりあえずちゃんと動いているのだろう。

prefixなしのendo.dnaから生成されるRNAを食わせてみるも真っ黒。
RNAを眺めてみると先頭でwhiteをbucketに追加してあとはひたすらpositionの移動とline命令を繰り返してる。
PIP(addColor系の命令)で検索かけてみても先頭と最後のほう以外ひっかからないので、色は追加されてない。
となると、きっとなにか文字を書いているのだということが想像されるのだが画像はあいにく真っ黒。
そこでRNAの最後のほうをみてみるとそれまでとはどうも違う命令が並んでいる。以下抜粋

PCCPFFP	;addBitmap
PIIPICP ;bucketを空に
PIIPIIP ;tryfill Bitmap[0]がたぶん真っ黒になる
PFFPCCP ;compose せっかく書いた文字も真っ黒に!
PIIPICP ;bucketを空に
PIPIIPF ;addColor(transparent)
PIIPIIP ;tryfill
PIIPICP ;bucketを空に
CCCCPIC ;ごみ?
CIPIICC ;ごみ?

これじゃ当然line命令で書いた線などみえるわけもなく。。。
とりあえずこの10行を削除してbuildしてみるとでました!

サムネでは見えないけど左隅に
"IIPIFFCPICFPPICIICCIICIPPPFIIC"
こいつをprefixにしろということか。


あれ、でもprefixなしのendo.dnaからはsource.pngがbuildできるんじゃなかったっけ?
なんか間違えてるのだろうか…