mplement the function unique_in_order which takes as argument a sequence and returns a list of items without any elements with the same value next to each other and preserving the original order of elements.
For example:
uniqueInOrder('AAAABBBCCDAABBB') == ['A', 'B', 'C', 'D', 'A', 'B']
uniqueInOrder('ABBCcAD') == ['A', 'B', 'C', 'c', 'A', 'D']
uniqueInOrder([1,2,2,3,3]) == [1,2,3]
# Unique-In-Order.jl
"""
删除与前一个元素相同的元素
"""
#> "删除与前一个元素相同的元素\n"
function unique_in_order(arr)::Vector
∈ enumerate(arr) if (i == 1 || x ≠ arr[i-1])]
[x for (i, x) end
#> unique_in_order (generic function with 1 method)
unique_in_order([1, 2, 2, 3, 3, 3, 2])
#> 4-element Vector{Int64}:
#> 1
#> 2
#> 3
#> 2
unique_in_order("aabbccaa")
#> 4-element Vector{Char}:
#> 'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)
#> 'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)
#> 'c': ASCII/Unicode U+0063 (category Ll: Letter, lowercase)
#> 'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)
# Unique-In-Order.R
library(tidyverse)
<- function(arr) {
unique_in_order if (is.character(arr) && length(arr) == 1) {
<- unlist(str_split(arr, ""))
arr
}
<- c()
output
%>%
arr walk(function(x) {
if (length(output) == 0) {
<<- c(output, x)
output else if (x != output[length(output)]) {
} <<- c(output, x)
output
}
})
output
}
unique_in_order(c(1, 2, 2, 3, 3, 3))
#> [1] 1 2 3
unique_in_order("aabbbccaa")
#> [1] "a" "b" "c" "a"
/**
* @module Unique-In-Order
*/
/**
* 只保留与前一项不同的项,组成新向量
* @param {Iterable} iterable
* @returns {Iterable}
*/
function uniqueInOrder(iterable) {
return [...iterable].filter((a, i) => a !== iterable[i - 1]);
// index为-1时,返回undefined
;
}
console.log(uniqueInOrder('AAAABBBCCDAABBB'));
#> [ 'A', 'B', 'C', 'D', 'A', 'B' ]
# Unique-In-Order.py
#%%
from itertools import groupby
def unique_in_order(iterable):
return [k for (k, _) in groupby(iterable)]
1, 2, 2, 3, 3])
unique_in_order([
# %%
#> [1, 2, 3]