今日の頭の体操
- どう書く?org 2508 hirose31: shだったりps{2,to}pdfだった...(Hello, world! PDF版) - 投稿の詳細
- どう書く?org 2509 hirose31: diffの中のスタック操作のメモ。 ...(隣り合う二項の差) - 投稿の詳細
「隣り合う二項の差」のお題のdiffのメモ。
/diff { % [3 1 4 1 5 9 2 6 5] dup % [3 1 4 1 5 9 2 6 5] [3 1 4 1 5 9 2 6 5] length % [3 1 4 1 5 9 2 6 5] 9 /n exch def % [3 1 4 1 5 9 2 6 5] 9 /n -> [3 1 4 1 5 9 2 6 5] /n 9 -> [3 1 4 1 5 9 2 6 5] aload pop % 3 1 4 1 5 9 2 6 5 [3 1 4 1 5 9 2 6 5] -> 3 1 4 1 5 9 2 6 5 n 1 sub { % 8回繰り返す exch %% 3 1 4 1 5 9 2 5 6 dup %% 3 1 4 1 5 9 2 5 6 6 3 1 roll %% 3 1 4 1 5 9 2 6 5 6 sub %% 3 1 4 1 5 9 2 6 -1 n 1 roll %% -1 3 1 4 1 5 9 2 6 } repeat % -2 3 -3 4 4 -7 4 -1 3 pop % -2 3 -3 4 4 -7 4 -1 n 1 sub array astore % [ -2 3 -3 4 4 -7 4 -1 ] } def
あ、最初のdup要らないじゃん。。。