Dada uma lista de números inteiros, crie uma máscara booleana para que os índices verdadeiros possam ser usados para filtrar os valores distintos da lista. Qual índice é selecionado como o verdadeiro não importa, desde que apenas um deles seja selecionado para cada conjunto de índices correspondentes a valores idênticos.
A entrada será uma lista não vazia de números inteiros não negativos em um formato adequado ao seu idioma e a saída será uma lista de valores booleanos seguindo a especificação acima. Você tem permissão para usar suas próprias definições de valores de verdade e falsidade na lista de saída.
Nos meus exemplos abaixo, defino 1
ser verdadeiro e 0
falso.
[5, 4, 7, 1] Input
[1, 1, 1, 1] Output
Select only the values with with true indicies in the sieve
[5 4 7 1] Contains zero duplicate values
[5, 9, 7, 5, 6, 0, 5]
[0, 1, 1, 1, 1, 1, 0]
[ 9, 7, 5, 6, 0 ]
Casos de teste
Quando existe um or
, significa que existem várias saídas válidas. Se houver reticências à direita ...
após or
isso, significa que nem todas as saídas possíveis foram listadas.
[0] = [1]
[55] = [1]
[32, 44] = [1, 1]
[0, 0] = [1, 0] or [0, 1]
[9001, 9001, 9001] = [1, 0 , 0] or [0, 1, 0] or [0, 0, 1]
[5, 4, 7, 1] = [1, 1, 1, 1]
[1, 2, 3, 4, 3, 5] = [1, 1, 1, 1, 0, 1] or
[1, 1, 0, 1, 1, 1]
[5, 9, 7, 5, 6, 0, 5] = [1, 1, 1, 0, 1, 1, 0] or
[0, 1, 1, 1, 1, 1, 0] or
[0, 1, 1, 0, 1, 1, 1]
[0, 8, 6, 6, 3, 8, 7, 2] = [1, 1, 1, 0, 1, 0, 1, 1] or
[1, 0, 0, 1, 1, 1, 1, 1] or
[1, 0, 1, 0, 1, 1, 1, 1] or
[1, 1, 0, 1, 1, 0, 1, 1]
[45, 47, 47, 45, 24, 24, 24, 8, 47, 41, 47, 88]
= [1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1] or ...
[154, 993, 420, 154, 154, 689, 172, 417, 790, 175, 790, 790, 154, 172, 175, 175, 420, 417, 154, 175, 172, 175, 172, 993, 689, 993, 993, 790]
= [1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] or ...
Regras
- Isso é código-golfe então a solução mais curta vence.
- Builtins são permitidos!
- Você tem permissão para usar suas próprias definições de valores de verdade e falsidade na lista de saída. Se você optar por fazê-lo, indique suas definições.
- A entrada será uma lista não vazia de números inteiros não negativos.
- Você é livre para escolher entre produzir apenas uma das peneiras ou várias ou mesmo todas. Desde que cada peneira seja válida, ela será aceita.
[0, 8, 6, 6, 3, 8, 7, 2]
, deve[1, 0, 0, 1, 1, 1, 1, 1]
ser adicionado à lista de saídas válidas?