Définitions
- Une sous-séquence peut ne pas être contiguë, par exemple
[1, 1, 1]
est une sous-séquence de[1, 2, 1, 2, 1]
. - Une sous-séquence égale est une sous-séquence dans laquelle chaque élément est égal.
- La sous-séquence égale la plus longue peut ne pas être unique, par exemple
[1, 1]
et[2, 2]
sont toutes les deux les sous-séquences égales les plus longues de[2, 1, 1, 2]
.
Contribution
Une liste non vide d'entiers positifs dans l'un des formats ci-dessous:
- comme l'implémentation native d'un tableau d'entiers positifs dans votre langue
- comme une chaîne d'entiers séparés par des sauts de ligne en décimal
- comme une chaîne d'entiers séparés par des sauts de ligne en unaire
- tout autre format raisonnable
Production
Toutes les sous-séquences égales les plus longues dans n'importe quel ordre dans l'un des formats ci-dessous:
- comme un tableau imbriqué 2D dans votre langue (si l'entrée est un tableau)
- comme un tableau aplati avec les éléments égaux contigus
- tout autre format raisonnable
Notation
Bien que nous recherchions quelque chose de long, le code utilisé doit être aussi court que possible en termes de nombre d'octets, car il s'agit de code-golf
Cas de test
Contributions:
[1, 2, 3]
[1, 2, 2, 1]
[1, 2, 3, 2, 1]
[1, 2, 1, 2, 3, 4, 1]
Les sorties:
[[1], [2], [3]]
[[1, 1], [2, 2]]
[[1, 1], [2, 2]]
[[1, 1, 1]]
Notez que pour les sorties ci-dessus, toute commande est valide.
Un tableau aplati est également valide, tant que les éléments égaux sont contigus.
code-golf
array-manipulation
Leaky Nun
la source
la source
1 2 3
,1 1 2 2
,1 1 2 2
,1 1 1
?Réponses:
Gelée , 5 octets
Essayez-le en ligne!
Comment ça fonctionne
la source
Brachylog , 7 octets
Essayez-le en ligne!
Explication
⊇
L'ordre naturel de Génère d'abord les sous-séquences les plus longues, donc ce sont celles qui finissent dans le premier groupe.la source
Pyth, 5 octets
Suite de tests
Explication:
C'est implicitement
S.M/QZQ
..M
est la fonction maximale, donc.M/QZQ
sélectionne tous les éléments où la valeur de/QZ
, compter le nombre d'occurrences de l'élément dans l'entrée, est maximale.S
trie ensuite la liste afin que les éléments identiques soient contigus.la source
bash, 66 octets
Cela semble être beaucoup plus court, mais je ne sais pas comment.
Essayez-le en ligne!
Merci à Leaky Nun pour 3 octets!
la source
Python 2 ,
6863 octetsEssayez-le en ligne!
la source
print
parreturn
.map
.Mathematica,
423125 octetsMerci @GregMartin pour 5 octets et @MartinEnder pour un autre octet!
Explication
la source
Gather@#~MaximalBy~Length&
.MaximalBy[Length]@*Gather
.Empilé ,
555243 octetsEssayez-le en ligne!
Fonctionne en encodant la longueur d'exécution en entrée, en triant par occurrences, en conservant les occurrences pour lesquelles le nombre d'occurrences est maximal et en décodant la longueur d'exécution. Sorties à travers une liste plate, comme cela est acceptable par le défi.
la source
En fait , 23 octets
Essayez-le en ligne ou exécutez tous les cas de test !
Merci à Leaky Nun d'avoir souligné une amélioration d'un octet qui aurait vraiment dû être évidente pour moi
-3 octets du format de sortie détendu
Explication:
la source
Python 2, 138 octets
la source
itertools
n'est jamais le plus court: pMATL , 10 octets
Essayez-le en ligne!
Explication
Similaire à ma réponse Octave. Considérez l'entrée
[10, 20, 30, 20, 10]
comme exemple.la source
Octave , 47 octets
Essayez-le en ligne!
Explication
Les deuxième et troisième sorties de
mode
(obtenues en tant que[~,b,c]=mode(...)
) donnent respectivement le nombre de répétitions (b
) et un tableau de cellules de colonne (c
) des éléments les plus répétés dans l'entrée (input(0)
). Le tableau de cellulesc
est ensuite répété horizontalementb
fois (repmat(c,1,b)
), converti en une liste séparée par des virgules ({:}
) et contaténé horizontalement ([...]
) pour donner une matrice numérique, qui est affichée (disp(...)
).la source
05AB1E ,
85 octetsSort une liste plate dans l'ordre
Utilise l' encodage 05AB1E . Essayez-le en ligne!
la source
CJam , 22 octets
Il s'agit d'un bloc (fonction) anonyme qui prend l'entrée du haut de la pile et la remplace par la sortie. La sortie est un tableau aplati avec les éléments égaux contigus.
Essayez-le en ligne!
Explication
Considérez l'entrée
[10 20 30 20 10 ]
comme exemple.la source
Perl 5, 58 octets
la source
APL (Dyalog) , 22 octets
Requiert
⎕ML←3
ce qui est par défaut sur de nombreux systèmes.Programme:
s/⍨(⌈/=⊢)≢¨s←⊂⍨(⍋⊃¨⊂)⎕
⎕
obtenir une entrée numérique (évaluée)(
…)
Fonction tacite⍋
les indices des éléments ascendants à⊃¨
chaque sélection⊂
le tableau entier⊂⍨
partition en coupant à ses augmentationss←
stocker en tant que s≢¨
compter chacun(
…)
Fonction tacite⌈/
le maximum (total)=
est égal à⊢
l'argument (les décomptes)s/⍨
filtre s avec çaUne fonction:
{s/⍨(⌈/=⊢)≢¨s←⊂⍨⍵[⍋⍵]}
{
…}
Fonction anonyme où l'argument est⍵
⍵[⍋⍵]
tri (index lit. avec index des éléments ascendants)⊂⍨
partition en coupant à ses augmentationss←
stocker en tant que s≢¨
compter chacun(
…)
Fonction tacite⌈/
le maximum (total)=
est égal à⊢
l'argument (les décomptes)s/⍨
filtre est avec cette Essayez en ligne!la source
PHP, 69 octets
Version en ligne
Format de sortie
clé = valeur, valeur = compte
PHP, 96 octets
Version en ligne
Format de sortie
1D Key = valeur
Clé 2D = position dans le tableau d'entrée pour chaque valeur
PHP, 97 octets
la source
JavaScript (ES6),
8483 octetsRenvoie un tableau aplati trié.
Cas de test
Afficher l'extrait de code
la source
CJam, 24 octets
Je voulais le faire en 05ab1e, mais j'ai abandonné: P
Ceci est un bloc. L'entrée et la sortie sont des tableaux sur la pile.
Essayez-le en ligne!
Explication:
la source
$W=
au lieu du premier0=
.Clojure, 65 octets
Non golfé:
la source
C #, 145 octets
Cela doit être mieux possible aussi, mais je suis un peu coincé.
Explication
Une approche totalement différente serait probablement beaucoup plus courte, donc le défi C # est toujours ouvert :)
la source
Rubis , 57 octets
Essayez-le en ligne!
la source