Introducción
Observemos la siguiente matriz:
[1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1]
Un grupo consta de los mismos dígitos uno al lado del otro. En la matriz anterior, hay 5 grupos diferentes:
[1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1]
1, 1, 1
2, 2
1, 1, 1, 1
2, 2, 2
1, 1, 1
El grupo más pequeño de estos es [2, 2]
, por lo que sacamos [2, 2]
.
Tomemos otro ejemplo:
[3, 3, 3, 4, 4, 4, 4, 5, 5, 4, 4, 3, 3, 4, 4]
3, 3, 3
4, 4, 4, 4
5, 5
4, 4
3, 3
4, 4
Puede ver que hay varios grupos con la misma longitud. Los grupos más pequeños son:
[3, 3], [4, 4], [4, 4] and [5, 5].
Así que simplemente imprimimos [3, 3], [4, 4], [4, 4], [5, 5]
en cualquier formato razonable. Puede generarlos en cualquier orden.
La tarea
Dada una matriz que consta solo de enteros positivos, genera los grupos más pequeños de la matriz. Puede suponer que la matriz contendrá al menos 1 entero.
Casos de prueba
Input: [1, 1, 2, 2, 3, 3, 4]
Output: [4]
Input: [1]
Output: [1]
Input: [1, 1, 10, 10, 10, 100, 100]
Output: [1, 1], [100, 100]
Este es el código de golf , por lo que gana el envío con la menor cantidad de bytes.
11101010100100
no parece correcto para la entrada: p.Respuestas:
Pyth
141211Banco de pruebas
2 bytes gracias a Jakube! ¡Y 1 byte gracias a Isaac!
Desafortunadamente, la decodificación de longitud de ejecución no hace exactamente lo que queremos que haga, pero funcionará con una solución alternativa menor, pero eso lo hace un poco más largo que la implementación manual:
Gracias a Jakube por descubrir esto.
fuente
mr]d9.mhbrQ8
.bmYN
==mM_M
Mathematica, 24 bytes
Esta es una composición de dos funciones que se pueden aplicar a una lista.
Split
toma todos los grupos de números consecutivos yMinimalBy[Length]
selecciona aquellos con longitud mínima.fuente
Haskell, 38 bytes
Ejemplo de uso:
argmins length.group $ [3,3,3,4,4,4,4,5,5,4,4,3,3,4,4]
->[[4,4],[3,3],[4,4],[5,5]]
.Construya grupos de elementos iguales y encuentre aquellos con una longitud mínima.
fuente
Data.Lists
?argmins
por ejemplo es de Data.List.Extras.Agrmax .Python 2, 120 bytes
Toma la entrada como una cadena de enteros separados por espacios con un espacio final, y genera una lista de listas de cadenas. La estrategia es encontrar grupos utilizando la expresión regular
(\d+ )\1*
(que coincide con uno o más enteros separados por espacios, con un espacio final), luego dividirlos en espacios en listas de enteros e imprimir esos grupos cuya longitud es igual a la longitud mínima del grupo.Pruébalo en línea
fuente
C #, 204 bytes
No sé si usar una cadena es justo teniendo en cuenta que todos los esolangs de golf obtienen su entrada de la misma manera, pero solicitó la entrada de la matriz.
sin golf:
Necesito una forma de obtener las coincidencias más pequeñas para la matriz de coincidencias, la mayoría de mis bytes se desperdician allí, se agradece la ayuda. Estoy tratando de entrar en LINQ y cosas lambda.
fuente
Python 2.x, 303 bytes
Más feo Código. Nunca.
Entrada: una matriz en el formato
r'\[(\d,)*(\d,?)?\]'
En otras palabras, una matriz de números de Python
Salida: una matriz de matrices (los grupos más pequeños), en el orden en que aparecen en la matriz de entrada
Características coincidentes adicionales (características que no tenía la intención de hacer):
min
amax
, devolverá una serie de los grupos más grandes.print r
, imprimirá todos los grupos en orden.fuente
MATL, 15 bytes
Pruébalo en línea
La entrada es un vector, como
[1 2 3 4]
, y la salida es una matriz donde cada columna es uno de los grupos más pequeños, por ejemplo:para el tercer caso de prueba.
Explicación:
fuente
Jalea,
221716 bytesPruébalo en línea!
fuente
JavaScript (ES6), 106
Prueba
fuente
h.map(length)
funcionalength
debería ser una función con la cadena como argumento, no un método de cadenaJavaScript (ES6), 113 bytes
fuente
Retina,
9185807977767574 bytesPruébalo en línea!
Explicación
La entrada es
1,1,10,10,10,100,100
.La primera línea coincide con grupos con los mismos términos:
La entrada se convierte en:
Las siguientes dos líneas anteponen el número de comas a la línea:
La entrada se convierte en:
Luego se ordenan por esta línea, que busca el primer número como índice:
La entrada se convierte en:
Luego, estas dos líneas encuentran el lugar donde la longitud es diferente y eliminan todo en adelante:
La entrada se convierte en:
Luego, las dos líneas eliminan los números:
Donde se convierte la entrada:
fuente
APL, 25 caracteres
En inglés:
fuente
⍵⊂⍨1,2≠/⍵
J , 31 bytes
La entrada es una matriz de valores. La salida es una matriz de matrices en caja.
Uso
Explicación
fuente
Clojure, 65 bytes
Usos
+
comoidentity
función que(+ 5)
es 5 :) El resto debería ser obvio,G
es un hash-mapa utilizado como una función y dado una llave que devuelve el valor correspondiente.fuente
Brachylog , 6 bytes
Pruébalo en línea!
Entrada a través de la variable de entrada y salida a través de la variable de salida.
Aunque, a diferencia de
ḅ
,ᵍ
agrupa los elementos iguales no consecutivos, ellᵒ
todavía es necesario para encontrar el grupo con las longitudes más cortas, y funciona debido a que el orden de los grupos en la salida deᵍ
está determinada por la posición del primer elemento de cada grupo, por lo esoᵍhᵐ
podría funcionar como una especie de deduplicado por pseudo-metapredicate.fuente
Perl 5
-MList::Util=pairkeys,min -a
, 69 bytesPruébalo en línea!
fuente