Unique characters
- Task
Given a list of strings find characters appearing only one string and once only.
The result give in alphabetical order.
Let list = ["133252abcdeeffd", "a6789798st","yxcdfgxcyz"]
Factor
<lang factor>USING: io sequences sets.extras sorting ;
{ "133252abcdeeffd" "a6789798st" "yxcdfgxcyz" } concat non-repeating natural-sort print</lang>
- Output:
156bgstz
Julia
<lang julia>list = ["133252abcdeeffd", "a6789798st", "yxcdfgxcyz"]
function is_once_per_all_strings_in(a::Vector{String})
charlist = collect(prod(a)) counts = Dict(c => count(x -> c == x, charlist) for c in unique(charlist)) return sort([p[1] for p in counts if p[2] == 1])
end
println(is_once_per_all_strings_in(list))
</lang>
- Output:
['1', '5', '6', 'b', 'g', 's', 't', 'z']
Ring
<lang ring> see "working..." + nl see "Unique characters are:" + nl row = 0 str = "" cList = [] uniqueChars = ["133252abcdeeffd", "a6789798st","yxcdfgxcyz"] for n = 1 to len(uniqueChars)
str = str + uniqueChars[n]
next for n = 1 to len(str)
ind = count(str,str[n]) if ind = 1 row = row + 1 add(cList,str[n]) ok
next cList = sort(cList) for n = 1 to len(cList)
see "" + cList[n] + " "
next see nl
see "Found " + row + " unique characters" + nl see "done..." + nl
func count(cString,dString)
sum = 0 while substr(cString,dString) > 0 sum++ cString = substr(cString,substr(cString,dString)+len(string(sum))) end return sum
</lang>
- Output:
working... Unique characters are: 1 5 6 b g s t z Found 8 unique characters done...
Wren
<lang ecmascript>import "/seq" for Lst import "/sort" for Sort
var strings = ["133252abcdeeffd", "a6789798st","yxcdfgxcyz"] var totalChars = strings.reduce { |acc, str| acc + str }.toList var uniqueChars = Lst.individuals(totalChars).where { |l| l[1] == 1 }.map { |l| l[0] }.toList Sort.insertion(uniqueChars) System.print("Found %(uniqueChars.count) unique character(s), namely:") System.print(uniqueChars.join(" "))</lang>
- Output:
Found 8 unique character(s), namely: 1 5 6 b g s t z