RosettaCodeData/Task/Remove-duplicate-elements/NetRexx/remove-duplicate-elements.n...

48 lines
1.5 KiB
Plaintext

/* NetRexx */
options replace format comments java crossref symbols nobinary
-- Note: Task requirement is to process "arrays". The following converts arrays into simple lists of words:
-- Putting the resulting list back into an array is left as an exercise for the reader.
a1 = [2, 3, 5, 7, 11, 13, 17, 19, 'cats', 222, -100.2, +11, 1.1, +7, '7.', 7, 5, 5, 3, 2, 0, 4.4, 2]
a2 = [1, 2, 3, 'a', 'b', 'c', 2, 3, 4, 'b', 'c', 'd']
a3 = ['Now', 'is', 'the', 'time', 'for', 'all', 'good', 'men', 'to', 'come', 'to', 'the', 'aid', 'of', 'the', 'party.']
x = 0
lists = ''
x = x + 1; lists[0] = x; lists[x] = array2wordlist(a1)
x = x + 1; lists[0] = x; lists[x] = array2wordlist(a2)
x = x + 1; lists[0] = x; lists[x] = array2wordlist(a3)
loop ix = 1 to lists[0]
nodups_list = remove_dups(lists[ix])
say ix.right(4)':' lists[ix]
say ''.right(4)':' nodups_list
say
end ix
return
-- =============================================================================
method remove_dups(list) public static
newlist = ''
nodups = '0'
loop w_ = 1 to list.words()
ix = list.word(w_)
nodups[ix] = nodups[ix] + 1 -- we can even collect a count of dups if we want
end w_
loop k_ over nodups
newlist = newlist k_
end k_
return newlist.space
-- =============================================================================
method array2wordlist(ra = Rexx[]) public static
wordlist = ''
loop r_ over ra
wordlist = wordlist r_
end r_
return wordlist.space