introduction
Observons le tableau suivant:
[1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1]
Un groupe est composé des mêmes chiffres côte à côte. Dans le tableau ci-dessus, il existe 5 groupes différents:
[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
Le plus petit groupe d'entre eux est [2, 2]
donc nous sortons [2, 2]
.
Prenons un autre exemple:
[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
Vous pouvez voir qu'il existe plusieurs groupes de même longueur. Les plus petits groupes sont:
[3, 3], [4, 4], [4, 4] and [5, 5].
Nous sortons donc simplement [3, 3], [4, 4], [4, 4], [5, 5]
dans un format raisonnable. Vous pouvez les afficher dans n'importe quel ordre.
La tâche
Étant donné un tableau composé uniquement d'entiers positifs, affichez le ou les plus petits groupes du tableau. Vous pouvez supposer que le tableau contiendra au moins 1 entier.
Cas de test
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]
C'est du code-golf , donc la soumission avec le moins d'octets gagne!
11101010100100
ne semble pas correct pour la saisie: p.Réponses:
Pyth,
141211Suite de tests
2 octets grâce à Jakube! Et 1 octet grâce à isaacg!
Malheureusement, le décodage de la longueur d'exécution ne fait pas tout à fait ce que nous voulons qu'il fasse, mais il fonctionnera avec une solution de contournement mineure, mais cela le rend légèrement plus long que l'implémentation manuelle:
Nous remercions Jakube de l'avoir découvert.
la source
mr]d9.mhbrQ8
.bmYN
==mM_M
Mathematica, 24 octets
Il s'agit d'une composition de deux fonctions qui peuvent être appliquées à une liste.
Split
prend tous les groupes de nombres consécutifs etMinimalBy[Length]
sélectionne ceux de longueur minimale.la source
Haskell, 38 octets
Exemple d'utilisation:
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]]
.Construisez des groupes d'éléments égaux et trouvez ceux de longueur minimale.
la source
Data.Lists
?argmins
par exemple, provient de Data.List.Extras.Agrmax .Python 2, 120 octets
Prend l'entrée sous la forme d'une chaîne d'entiers séparés par un espace avec un espace de fin et génère une liste de listes de chaînes. La stratégie consiste à rechercher des groupes à l'aide de l'expression régulière
(\d+ )\1*
(qui correspond à un ou plusieurs entiers séparés par un espace, avec un espace de fin), puis à les diviser sur des espaces en listes d'entiers et à imprimer les groupes dont la longueur est égale à la longueur minimale du groupe.Essayez-le en ligne
la source
C #, 204 octets
Je ne sais pas si l'utilisation d'une chaîne est juste compte tenu du fait que tous les esolangs de golf obtiennent leur entrée de la même manière, mais il a demandé une entrée de tableau.
non golfé:
J'ai besoin d'un moyen d'obtenir les plus petites correspondances pour le tableau de correspondance, la plupart de mes octets y sont gaspillés, aide appréciée. J'essaie d'entrer dans LINQ et les trucs lambda.
la source
Python 2.x, 303 octets
Le plus laid. Code. Déjà.
Entrée: un tableau au format
r'\[(\d,)*(\d,?)?\]'
En d'autres termes, un tableau python de nombres
Sortie: un tableau de tableaux (les plus petits groupes), dans l'ordre dans lequel ils apparaissent dans le tableau d'entrée
Fonctionnalités coïncidentes supplémentaires (fonctionnalités que je n'avais pas l'intention de créer):
min
enmax
, il renverra un tableau des plus grands groupes.print r
, il imprimera tous les groupes dans l'ordre.la source
MATL, 15 octets
Essayez-le en ligne
L'entrée est un vecteur, comme
[1 2 3 4]
, et la sortie est une matrice où chaque colonne est l'un des plus petits groupes, par exemple:pour le troisième cas de test.
Explication:
la source
Gelée,
221716 octetsEssayez-le en ligne!
la source
JavaScript (ES6), 106
Tester
la source
h.map(length)
ne marche pas?length
il faut une fonction avec la chaîne comme argument, pas une méthode de chaîneJavaScript (ES6), 113 octets
la source
Rétine,
9185807977767574 octetsEssayez-le en ligne!
Explication
L'entrée est
1,1,10,10,10,100,100
.La première ligne correspond aux groupes ayant les mêmes termes:
L'entrée devient:
Les deux lignes suivantes ajoutent le nombre de virgules à la ligne:
L'entrée devient:
Ensuite, ils sont triés par cette ligne, qui recherche le premier nombre comme index:
L'entrée devient:
Ensuite, ces deux lignes trouvent l'endroit où la longueur est différente et supprimez tout ce qui suit:
L'entrée devient:
Ensuite, les nombres sont supprimés par ces deux lignes:
Où l'entrée devient:
la source
APL, 25 caractères
En anglais:
la source
⍵⊂⍨1,2≠/⍵
J , 31 octets
L'entrée est un tableau de valeurs. La sortie est un tableau de tableaux encadrés.
Usage
Explication
la source
Clojure, 65 octets
Utilise
+
laidentity
fonction telle qu'elle(+ 5)
est 5 :) Le reste doit être évident,G
c'est une carte de hachage utilisée comme fonction et étant donné une clé, elle renvoie la valeur correspondante.la source
Brachylog , 6 octets
Essayez-le en ligne!
Entrée via la variable d'entrée et sortie via la variable de sortie.
Bien que, à la différence
ḅ
, desᵍ
groupes d' éléments égaux non consécutifs, l'lᵒ
est encore nécessaire de trouver le groupe avec les longueurs les plus courtes, et il fonctionne parce que l'ordre des groupes dans la sortie deᵍ
est déterminée par la position du premier élément de chaque groupe, de sorte que quiᵍhᵐ
pourrait fonctionner comme une sorte de déduplication par pseudo-métaprédicat.la source
Perl 5
-MList::Util=pairkeys,min -a
, 69 octetsEssayez-le en ligne!
la source