Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search

[REBOL] Re: Block/array manipulation

From: chris:ross-gill at: 15-Oct-2001 18:45

Hi Mat & Carl,
> Hmmm. A quick test of that didn't work for me. However, there's a > word to do that. It's called 'unique. (: ... > > >> unique stuff > == ["fire" "water" "air"]
Knew there was a more suitable word than 'union. Anyway, had a go refining the function. This one is better because: o It uses less words. o It works with blocks that include integers. Which itself is interesting - Try this at the console: x: [1] x: block-stats x ; keep repeating this line Try starting 'x at [1 2] or [1 2 3]. They all come to the same conclusion. (well, I found it interesting :o) - Chris -- REBOL [] block-stats: func [ in-blk [block!] /local num num-blk out-blk ][ out-blk: unique in-blk num-blk: copy [] loop length? out-blk [append num-blk 0] foreach item in-blk [ num: index? find out-blk item change back skip num-blk num num-blk/:num + 1 ] while [not tail? out-blk][ insert next out-blk first num-blk out-blk: skip out-blk 2 num-blk: next num-blk ] head out-blk ]