Étant donné une liste de listes, trouvez la liste la plus courte qui est une sous-liste contiguë d'exactement une liste.
Par exemple, si nous avions
[[1,2,3],
[1,2,3,4],
[2,4,5,6],
[1,2,4,5,6]]
la sous-liste contiguë la plus courte serait [3,4]
puisqu'elle n'apparaît que dans la deuxième liste.
S'il n'y a pas de sous-liste contiguë unique (cela nécessite au moins une entrée en double), affichez une liste vide. Voici un exemple
[[1,2,3],
[1,2,3],
[1,2]]
S'il existe plusieurs sous-listes contiguës de taille minimale, vous pouvez générer n'importe laquelle d'entre elles ou une liste les contenant toutes. Par exemple, si l'entrée était
[[1,2,3],[2],[1],[3]]
Vous pouvez sortir soit [1,2]
, [2,3]
soit [[1,2],[2,3]]
. Si vous choisissez de faire cette dernière option, vous pouvez générer des listes singleton pour les cas où il n'y a qu'une seule solution.
La sortie peut apparaître plusieurs fois dans la même liste tant qu'elle n'apparaît dans aucune autre liste. Par exemple
[[1,2,1,2],[2,1]]
devrait sortir [1,2]
car [1,2]
est une sous-liste de la première liste mais pas la seconde, même s'il s'agit d'une sous-liste de la première liste de deux manières différentes.
Vous pouvez prendre en entrée une liste de listes contenant n'importe quel type tant que ce type a plus de 100 valeurs possibles, c'est-à-dire aucun booléen.
Il s'agit de code-golf donc les réponses seront notées en octets avec moins d'octets mieux.
Cas de test
[[1,1]] : [1]
[[1],[1]] : []
[[1,1],[1]] : [1,1]
la source
[[1,1]]
Pyth, 15 octets
Suite de tests
Tout d'abord, nous générons toutes les sous-chaînes de chaque liste d'entrée avec
.:R)Q
. Ensuite, nous générons tous les ordres possibles, de ces groupes de sous-chaînes.p
.Maintenant , pour la partie la plus délicate:
-M
. Cela replie la-
fonction sur chaque liste de commande. Il commence par la première liste de sous-chaînes, puis filtre tous les occupants de toutes les autres listes.Ensuite, les résultats sont concaténés, classés par longueur, a
[]
est ajouté, puis le premier élément de la liste résultante est extrait avech
.Ce serait 4 octets plus court si je pouvais faire une erreur sur aucune sous-liste unique plutôt que de sortir une liste vide.
la source
hlDs-M.p.:R
est probablement ce qu'il veut dire.Pyth - 20 octets
Suite de tests .
la source
[[1,1]]
.Haskell ,
149128126113 octetsEssayez-le en ligne!
Enregistrement de 21 octets grâce à Wheat Wizard, H.PWiz et Bruce Forte.
Enregistré deux octets supplémentaires grâce à H.PWiz.
Enregistré 13 octets grâce à nimi.
EDIT C'était l'explication originale:
la source
i=
à la fin de votre programme car les fonctions sans point n'ont pas besoin d'être attribuées selon nos règles.foldl1(++)
justeconcat
?(length$filter(==x)l)
pourrait être plus courtlength(filter(==x)l)
ou même plus courtsum[1|y<-l,y==x]
[]
cela, mais>>=id
est encore plus court;) Aussi @jferard: Vous pouvez incorporer de nombreuses fonctions (par exemplef
,g
etc.) car vous ne les utilisez qu'une seule fois.Java 8, 251 + 19 = 270 octets
Un lambda très grossier de, au minimum,
List<List>
àList
(préférable de le lancerFunction<List<List<Integer>>, List<Integer>>
). C'est une solution de force brute qui itère les longueurs de blocs de 1 à la taille de la plus grande liste, dans chaque cas, itère sur chaque bloc de cette longueur dans chaque liste et vérifie chacun de ces blocs par rapport à chaque bloc de taille égale dans toutes les autres listes.Craignez-moi, ramasseur d'ordures.
Lambda non golfé
Essayez-le en ligne
Java 8, 289 + 45 = 334 octets
Il s'agit d'une approche plus fonctionnelle utilisant des flux. S'il y avait une méthode
Stream
pour réduire à seulement les éléments qui apparaissent une fois, cette solution aurait battu celle ci-dessus. Attribuez au même type que ci-dessus.Lambda non golfé
Essayez-le en ligne
la source
Gelée , 15 octets
Essayez-le en ligne!
-3 octets grâce à Jonathan Allan
la source
ċ1
être remplacé parS
?[1, 2, 1]
pour la saisie[[1,2],[1,2,1],[2,1,1]]
tandis qu'elle[1,1]
est plus courte.05AB1E , 15 octets
Essayez-le en ligne!
la source
Pyth, 14 octets
Essayez-le ici.
la source