今日のPostScript - ujj問題

投稿者 nanki 2008-06-19 18:50:00 GMT

文字列をsplitしてsortしてuniqしてjoinする.(いわゆるujj問題)

array.string#concatはWikibooksから。 .sort はghostscript組み込みらしい。

% [(a) (b) ... (z)] array.string#concat -> (ab...z)
/array.string#concat
{ 0 1 index { length add } forall string
  0 3 2 roll
  {
    3 copy putinterval
    length add
  }
  forall pop
} bind def

% (string) string#chars -> [(s) (t) (r) (i) (n) (g)]
/string#chars {
  [ exch { 1 string dup 0 4 -1 roll put } forall ]
} bind def

% [0 0 1 1] array#uniq -> [0 1]
/array#uniq {
  dup 0 get /prev exch def
  [ prev 3 2 roll
    {
      dup /val exch def
      prev ne {
        val
        /prev val def
      } if
    } forall
  ]
} bind def

[(ujihisa) (jikka) (jissitsu)] array.string#concat string#chars {lt} .sort array#uniq array.string#concat ==
参考:

PostScript FAQ - Wikibooks, collection of open-content textbooks

This entry was posted on 2008-06-19 18:50:00 GMT and カテゴリ , . You can follow any response to this entry through the Atom feed. or a trackback from your own site.

タグ


トラックバック

トラックバックリンク:
http://blog.netswitch.jp/trackbacks?article_id=8626