Dada una lista de enteros, cree una máscara booleana de modo que los índices verdaderos se puedan usar para filtrar los valores distintos de la lista. El índice seleccionado como verdadero no importa siempre que solo se seleccione uno de ellos para cada conjunto de índices correspondientes a valores idénticos.
La entrada será una lista no vacía de enteros no negativos en un formato adecuado para su idioma y la salida será una lista de valores booleanos siguiendo la especificación anterior. Puede usar sus propias definiciones de valores de verdad y falsedad en la lista de resultados.
En mis ejemplos a continuación, defino 1
ser verdadero y 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 prueba
Cuando hay un or
, significa que hay múltiples salidas válidas. Si hay puntos suspensivos finales ...
después de or
, significa que no se enumeraron todas las salidas posibles.
[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 ...
Reglas
- Este es el código de golf, por lo que gana la solución más corta.
- ¡Las construcciones están permitidas!
- Puede usar sus propias definiciones de valores de verdad y falsedad en la lista de resultados. Si elige hacerlo, indique sus definiciones.
- La entrada será una lista no vacía de enteros no negativos.
- Usted es libre de elegir entre emitir solo uno de los tamices o múltiples o incluso todos. Mientras cada tamiz sea válido, será aceptado.
fuente
[0, 8, 6, 6, 3, 8, 7, 2]
Debería[1, 0, 0, 1, 1, 1, 1, 1]
agregarse a la lista de salidas válidas?Respuestas:
MATL,
764 bytes1 byte guardado gracias a @Luis
2 bytes guardados gracias a @Dennis
Definimos
1
ser veraces y todos los demás valores como falseyPruébalo en línea
Todos los casos de prueba
Explicación
fuente
&=Rs1=
l=
.Jalea , 4 bytes
Favorece los últimos sucesos. Pruébalo en línea! o verificar todos los casos de prueba .
Cómo funciona
fuente
Python 3,
47353936 bytesHace estallar el primer elemento de la lista, comprueba si existe en otra parte de la lista e inserta
True
oFalse
en una nueva lista.Para esta función,
False
indica un valor distinto, y deTrue
lo contrario es (True=0
yFalse=1
)Gracias a Dennis por una tonelada de bytes.
Original, 47 bytes:
Intentalo
fuente
lambda n:[1-(n.pop()in n)for x in n*1]
Guarda algunos bytes.lambda n:[n.pop()in n for x in n*1]
que también funciona..pop(0)
o la máscara sale invertida..pop()
procesa el último elemento primero, por lo que están en orden inverso.Pyth, 6 bytes
Emite una lista de bools (
True
yFalse
). Comprueba para cada elemento en la entrada, si su índice es igual al índice de la primera aparición del valor. En otras palabras, esto está verificando si cada elemento es la primera ocurrencia.En pseudocódigo pitónico:
Pruébalo aquí.
fuente
J , 2 bytes
Aquí es donde se originó la idea de este desafío. La construcción
~:
se llamaNub-Sieve
en J y crea una lista booleana que realiza la operación descrita en el desafío. Aquí,1
representatrue
y0
representafalse
.fuente
05AB1E , 8 bytes
Código:
Explicación:
Utiliza la codificación CP-1252 . Pruébalo en línea! .
fuente
APL, 6 bytes
Intentalo
Explicación:
fuente
C #, 63 bytes
¿También podría hacer que devuelva 1 o 0 y que el parámetro y el tipo de retorno sean el mismo que me permita hacer que esta sea una expresión lambda por sí misma?
se agradecería alguna orientación
mismo código de tipo
fuente
Python, 35 bytes
Usos
True
como el valor falso yFalse
para el valor verdadero. Marca la última aparición de cada elemento.Selecciona el primer elemento solo si no aparece entre los elementos restantes, luego recurre al resto de la lista siempre que no esté vacío. El
l.pop(0)
extrae el primer elemento al mismo tiempo que la eliminación de la misma.fuente
Retina , 23 bytes
La entrada es una lista separada por espacios. (En realidad, otros formatos como
[1, 2, 3]
también funcionarán siempre que haya un espacio delante de cada número, excepto el primero).Pruébalo en línea! (Funciona en múltiples casos de prueba separados por salto de línea a la vez).
Simplemente convertimos cada elemento en
0
si hay otra copia más adelante en la entrada y en lo1
contrario.fuente
PowerShell v2 +, 40 bytes
Crea una matriz vacía
$a
. Luego tomamos la lista de entrada vía$args[0]
y la canalizamos en un bucle|%{...}
. Cada iteración seleccionamos1
o0
de un pseudoternario en función de si el elemento actual está$a
o no. Esas selecciones se dejan en la tubería. Luego agregamos el elemento actual a la matriz$a
. Los elementos de canalización se recopilan y la salida como una matriz es implícita.Ejemplo:
(salida aquí con un separador de nueva línea, ya que ese es el valor predeterminado
.ToString()
para una matriz)fuente
JavaScript (ES6), 31 bytes
El cero es verdadero y otros números son falsos.
fuente
Mathematica,
5331 bytesGracias a millas por darme una idea que ahorró 22 bytes.
fuente
MapIndexed
sobre las sublistas anteriores?MapIndexed[s[[;;#-1&@@#2]]~FreeQ~#&,s=#]&
toma 41 bytes.MapIndexed
este caso y ni siquiera tiene que extraer o disminuir el índicePerl 5
fuente
..
proporciona contexto escalar, por lo que no debería necesitar~~
. 2.grep
devuelve verdadero / falso, por lo que no debería necesitar?1:0
. 3.grep/.../,@a
es más corto quegrep{/.../}@a
. 4. No deberías necesitar la final;
. 5. No deberías necesitar los paréntesis1..@a
. 6. No muestra de dónde proviene la entrada o la salida va a: ver meta.codegolf.stackexchange.com/q/2447Java, 96 bytes
Modifica la matriz en el lugar. Favorece la última ocurrencia.
El valor verdadero es
1
mientras que el valor falsey es0
.Verificar todos los casos de prueba .
Sin golf:
fuente
En realidad, 11 bytes
Pruébalo en línea!
Explicación:
fuente
Pyke, 4 bytes
Pruébalo aquí!
fuente
C ++, 242 bytes
Es cierto que es una solución excesiva, ya que funciona en cualquier contenedor estándar de cualquier tipo ordenado:
Sin golf:
(y más generalizado)
Banco de pruebas:
fuente
TSQL 52 bytes
Violín
fuente
PHP,
666239 bytesexcepto los valores que se evalúan como falso (falso, 0, "") y cadenas numéricas ("1" es igual a 1)
La nueva versión (programa, 37 + 2 bytes)
supera a Java y (ahora de nuevo) C #. Incluso casi vence a Python ahora. Contento.
0
(verdadera) y1
(falsa) después de invertir!
print
register_globals=On
,short_open_tags=On
yerror_reporting=0
en elphp.ini
dephp-cgi
entonces llamada
php-cgi -f <filename> a[]=<value1> a[]=<value2> ...;echo""
;$a
con$_GET[a]
(+6), establecershort_open_tags=On
yerror_reporting=0
$a
conarray_slice($argv,1)
(+19), eliminar<?
(-2)y llamar
php -d error_reporting=0 -r '<code>' <value1> <value2> ...;echo""
versión anterior (función, 62 bytes)
false
para verdadero ytrue
para falso; (salida como cadena vacía o1
)insertar
!
después$m[]=
para invertirpruebas (en la versión anterior)
fuente
Haskell,
2927 bytesUsos
False
como verdadero,True
como valor falso:Puede que tenga que
import Data.List
usarlotails
, pero tryhaskell.org ejecuta el código tal como está.fuente
\a->[...]
Es una función adecuada. En caso de duda, se dará un nombre:f a=[...]
.import Data.List
mucho. a. es una pendiente muy resbaladiza, ya que podría poner cualquier cantidad de importaciones (¡o incluso definiciones!) en su configuración de GHCi. si. trata tryhaskell.org como una implementación autorizada del lenguaje Haskell, pero realmente no lo es. (Una vez más, ¿qué pasa si creo mi propio entorno try-Haskell-online que viene con todas las importaciones y definiciones que los golfistas podrían desear? ¿Sigue siendo realmente "Haskell"?)Perl 5 + Perligata , 343 bytes
315 bytes, más 28 para
-MLingua::Romana::Perligata
Usar como
perl -MLingua::Romana::Perligata foo.pl
; input (desde stdin) y output (hasta stdout) son cadenas de enteros decimales separadas por subrayado. Probado en Strawberry 5.20.2 con la versión 0.6 de Perligata; No sé si funciona con Perligata versión 0.50.Obviamente esto es claro como una campana. En caso de que no sea así, ejecútelo con en
-MLingua::Romana::Perligata=converte
lugar de-MLingua::Romana::Perligata
, yperl
, en lugar de ejecutar el script, generará una traducción al Perl normal:Para un análisis token por token, use
-MLingua::Romana::Perligata=discribe
.Notas de golf:
.
.scinde
no necesita un segundo argumento y utilizahoc
.ao aum tum nullum addementum da
porque no pude conseguirmorde
a trabajar.per ium in qis... ro I da
porque no podía obtenervanne
a trabajar.huic vestibulo perlegementum da
, lo intenté-pMLingua::Romana::Perligata
, pero tampoco pude hacerlo funcionar.Solo por patadas (aunque toda esta respuesta fue solo por patadas):
Huic vestibulo perlegementum da. Qis lacunam scindementa da. Dum qis fac sic ao qis decumulamentum da. Ao aum tum nullum addementum da. Meo io. Meo ro. Per ium in qis fac sic si ium tum aum aequalitas fac sic ro I da cis cis. Ro nullum tum non rum addementum da. Capita bis rum cis. Per in bis fac sic hoc tum lacunam egresso scribe cis.
, Google Translate daThis court perlegementum grant. QIS gap scindementa grant. While QIS QIS decumulamentum do so ao da. Ao sum and no addementum grant. My io. My ro. Through ium in QIS do so if the sum ium equality do so ro 1 from cis. Ro was not any rum addementum grant. The heads of the bis side. Write, do so as soon as he at that time that in the gap by the Kish was taken.
.fuente