Rebol3 Code Examplex


Unique characters in each string

Given a list of strings, find the characters appearing exactly once in each string.

Rebol [
    title: "Rosetta code: Unique characters in each string"
    file:  %Unique_characters_in_each_string.r3
    url:   https://rosettacode.org/wiki/Unique_characters_in_each_string
]

unique-chars: function [
    "Returns string of unique characters from a block of strings, sorted"
    block [block!]
][
    str: sort ajoin block      ;; flatten & sort so duplicates are adjacent
    out: copy ""
    forall str [
        if str/1 != str/2 [append out str/1] ;; first occurrence → keep
        while [str/1 == str/2] [++ str]      ;; skip consecutive duplicates
    ]
    out
]

unique-in: function [
    "Returns string of chars appearing exactly once in every string in block"
    block [block!]
][
    out: unique-chars [block/1]             ;; unique chars in first string
    foreach str next block [
        out: intersect out unique-chars [str]  ;; keep common uniques
    ]
    out
]

probe unique-in ["1a3c52debeffd" "2b6178c97a938stf" "3ycxdb1fgxa2yz"]

Output:

"123abc"