Dada una matriz de enteros positivos, genera una matriz estable de los distintos factores primos de estos enteros. En otras palabras, para cada entero en la entrada en orden, obtenga sus factores primos, ordénelos y agregue cualquier primo que aún no esté en la salida a la salida.
Casos de prueba
[1,2,3,4,5,6,7,8,9,10] -> [2,3,5,7]
[10,9,8,7,6,5,4,3,2,1] -> [2,5,3,7]
[100,99,98,1,2,3,4,5] -> [2,5,3,11,7]
[541,60,19,17,22] -> [541,2,3,5,19,17,11]
[1,1,2,3,5,8,13,21,34,45] -> [2,3,5,13,7,17]
[6,7,6,7,6,7,6,5] -> [2,3,7,5]
[1] -> []
[8] -> [2]
[] -> []
La salida puede ser como una matriz o lista de enteros o cadenas, salida delimitada o cualquier otro medio estándar de salida de una lista ordenada de números.
Este es el código de golf , por lo que la respuesta más corta en bytes gana.
code-golf
array-manipulation
primes
Stephen
fuente
fuente
Respuestas:
05AB1E , 3 bytes
Salidas como una lista de cadenas.
Pruébalo en línea!
2sable , 3 bytes
Sí, esto también funciona en 2sable. También devuelve una lista de cadenas.
Pruébalo en línea!
fuente
f U
. Quiéralo.Casco , 3 bytes
1 byte guardado gracias a @Zgarb .
Pruébalo en línea!
Explicación
fuente
Σ†
puede serṁ
.Bash + GNU utilidades, 37
Pruébalo en línea .
fuente
nl|sort|...
can be done usingawk
:awk '!a[$0]++'
(print if not seen before; so order is never lost), saving 15 bytes. Then thesed
command can be eliminated using a slightly longerawk
one:factor|awk '!/:/&&!a[$0]++' RS='[ \n]+'
(split records on spaces and newlines, skip records with:
), saving another 4 bytes.tr
:factor|tr \ \\n|awk '!/:/&&!a[$0]++'
(that's two spaces after the first backslash)MATL, 6 bytes
Try it online!
Explanation:
Interesting MATL tidbits: generally, all functions apply to vectors (arrays) just as easily. But in this case, the number of factors is variable for each input, and Matlab and by extension MATL generally only deal in square matrices, so I had to use a for loop
"
.Además, MATL tiene dos operadores principales de concatenación:
h
yv
, concatenación horizontal y vertical. Su comportamiento difiere significativamente:v
concatena toda la pila, incluso si solo tiene un elemento como en nuestra primera iteración.h
toma exactamente dos elementos y fallará si solo hay uno presente, lo que lo hace inadecuado para esta aplicación.fuente
Brachylog , 6 bytes
Pruébalo en línea!
Brachylog , 6 bytes
Pruébalo en línea!
Explicación
fuente
Pyth ,
54 bytesPruébalo aquí! o Verificar todos los casos de prueba.
Alternativa:
{sPM
Explicación
fuente
PowerShell , 102 bytes
Pruébalo en línea!
(Toma prestada la idea de factorización de la respuesta de TessellatingHeckler sobre "¡Apártate de mí, Satan-Prime!")
Takes input as a literal array
$x
. Creates a new empty array$a
. Loops over$x
. Each iteration we loop from2
up to the current number, checking whether that is a factor-and
is prime, then|sort
the output of that, and append it to$a
. When we're done going through$x
, we then output$a
but|select
only the-u
nique numbers thereof. This exploits the fact that the uniqueify goes left-to-right, keeping the first occurrence, which matches the problem description. Those numbers are left on the pipeline and output is implicit.fuente
CJam, 11 bytes
Función que toma una matriz de entradas y produce una matriz de entradas.
Versión de prueba
fuente
S*
dentro del corchete cerrado.Gaia , 4 bytes
Pruébalo en línea!
Explicación
fuente
Jalea ,
54 bytes1 byte gracias al aplauso.
Pruébalo en línea!
fuente
Æf
, por lo que probablemente puede dejar un byte conÆfFQ
Pyke , 4 bytes
Pruébalo aquí!
Explicación
fuente
Mathematica, 64 bytes
entrada
fuente
Select[#&@@@Gather[#&@@@Join@@FactorInteger@#],#>1&]&
Haskell, 77 bytes
Explicación:
x!y
operador devuelve una lista de todos los factores primosx
que son mayores o iguales quey
(!2)
función devuelve una lista de todos los factores primos de su argumentoPruébalo en línea.
fuente
Brachylog , 6 bytes
Pruébalo en línea!
Explicación
fuente
[10,9,8,7,6,5,4,3,2,1]
. Debería ser[2, 5, 3, 7]
, no[2, 3, 5, 7]
ḋᵐoᵐcd
Ohm v2 , 3 bytes
Sin embargo, otro 3 byter (gracias a los idiomas con auto-vectorización).
Pruébalo en línea!
Explicación
fuente
Japt , 6 bytes
Pruébalo
Explicación
Entrada implícita de matriz
U
. Map (m
) sobre él, obteniendo los factores (k
) de cada elemento. Flatten (c
), obtiene los elementos únicos (â
) y la salida implícita.fuente
Python 3 ,
128 125116 bytesEsta es una solución pura de Python. No paquetes Gracias a Halvard por guardar 9 bytes.
Pruébalo en línea!
Python 2 ,
133 127126 bytesPruébalo en línea!
Python 2 ,
142138134bytesPruébalo en línea!
Muy sorprendido de que aún no haya una respuesta de Python. Trabajando en golf.
fuente
Deorst , 16 bytes
Pruébalo en línea!
Hecho con la ayuda de @cairdcoinheringaahing en la sala de chat Deorst (tenga en cuenta que las soluciones son diferentes).
Explicación
fuente
Deorst , 16 bytes
Pruébalo en línea!
Hecho con la ayuda de @ Mr.Xcoder. Esto es demasiado tiempo para un lenguaje pseudogolfing.
Cómo funciona
fuente
Pyke , 4 bytes
Pruébalo aquí!
fuente
Octava, 61 bytes
Pruébalo en línea!
fuente
MI, 17 bytes
Pruébalo en línea!
¿Cómo?
⎕
entrada evaluadaḊ
divisores (vectoriza / vecifica)ḟ
aplanar’⊢f(‘
decremento, filtro, incremento (elimina1
)53ǵ'
la cadena'P'
en la página de códigos de MY, que es la prueba de primalidad. Lamentablemente0x35=53
es el número 16 primo, y no hay un comando para empujar16
a la pila> _ <.ƒ
como una funciónf(
filtrar por esoū
uniquify←
salidafuente
C ++, 118 bytes
Necesita pasar la entrada en a
std::vector<int>
, devuelve otrostd::vector<int>
para la salida.fuente
J, 10 bytes
Estoy seguro de que algún J-er inteligente podría acortar esto.
fuente
En realidad , 5 bytes
Pruébalo en línea!
Explicación:
fuente
Python 2,
88119103 bytesAquí vamos. Con la clasificación correcta.
Aparentemente no puedo hacer que funcione en TIO, porque el paquete no es compatible. Se ejecuta en mi máquina aunque. Aquí están mis resultados de prueba:
De alguna manera no pude hacer la función como una función lambda. Cada vez que intento devolver la comprensión de la lista, devuelve [Ninguno, Ninguno, ...]. Si solo estoy pasando por alto algo, ¿alguien podría señalar ese error? ¡Gracias por la respuesta!
Editar:
Usando el algoritmo de ordenación del Sr. Xcoders, podría reducir el código en 16 bytes. Gracias por esa parte
fuente
[2, 5, 3, 7]
. El orden de las salidas es importante.sorted(set().union(*map(primefac,l)))
s.append(x) for
->s.append(x)for
,primefac(i)) for
->primefac(i))for
,[]) if
->[])if
Braingolf , 7 bytes
Pruébalo en línea!
Oh mira, es básicamente una cadena de 4 integradas
Explicación
fuente
[10,9,8,7,6,5,4,3,2,1]
. - El orden es importante: debe regresar en[2, 5, 3, 7]
lugar de[2, 3, 5, 7]
.K
solo hace daño aquí.APL (Dyalog Extended) , SBCS de 4 bytes
Pruébalo en línea!
fuente