Étant donné une liste de chaînes, remplacez chaque chaîne par l'une de ses sous-chaînes non vides qui n'est une sous-chaîne d'aucune des autres chaînes de la liste et aussi courte que possible.
Exemple
Étant donné la liste ["hello","hallo","hola"]
, "hello"
devrait être remplacée par juste "e"
comme cette sous-chaîne n'est pas contenue dans "hallo"
et "hola"
est aussi courte que possible. "hallo"
pourrait être remplacé soit par "ha"
ou "al"
et "hola"
par l' une "ho"
, "ol"
ou "la"
.
Règles
- Vous pouvez supposer que les chaînes ne seront pas vides et ne contiendront que des caractères alphabétiques du même cas.
- Vous pouvez supposer qu'une telle sous-chaîne existe pour chaque chaîne de la liste, c'est-à-dire qu'aucune chaîne de la liste ne sera une sous-chaîne de l'une des autres chaînes.
- L'entrée et la sortie peuvent être dans n'importe quel format raisonnable.
- Il s'agit de code-golf , essayez donc d'utiliser le moins d'octets possible dans la langue de votre choix.
Cas de test
Une seule sortie possible est donnée pour la plupart des cas.
["ppcg"] -> ["p"] (or ["c"] or ["g"])
["hello","hallo","hola"] -> ["e","ha","ho"]
["abc","bca","bac"] -> ["ab","ca","ba"]
["abc","abd","dbc"] -> ["abc","bd","db"]
["lorem","ipsum","dolor","sit","amet"] -> ["re","p","d","si","a"]
["abc","acb","bac","bca","cab","cba"] -> ["abc","acb","bac","bca","cab","cba"]
En relation: Sous - chaîne d'identification la plus courte - idée similaire, mais règles plus impliquées et format encombrant.
code-golf
string
code-golf
string
code-golf
array-manipulation
code-golf
quine
code-golf
array-manipulation
integer
matrix
classification
code-golf
quine
code-golf
string
matrix
conversion
code-golf
string
number
code-golf
string
code-golf
number
sequence
integer
code-golf
decision-problem
matrix
code-golf
string
code-golf
math
code-golf
math
array-manipulation
combinatorics
code-golf
random
code-golf
code-golf
alphabet
code-golf
python
c
code-golf
base-conversion
code-golf
string
counting
code-challenge
code-generation
fastest-code
code-golf
kolmogorov-complexity
matrix
code-golf
string
code-golf
array-manipulation
decision-problem
random
sudoku
code-golf
chess
code-golf
card-games
encode
code-golf
decision-problem
code-golf
code-golf
math
array-manipulation
matrix
Laikoni
la source
la source
""
(chaîne vide) ne s'identifie pas uniquement pour le"ppcg"
cas unique ?Réponses:
Gelée ,
129 octetsEssayez-le en ligne! Ou consultez la suite de tests (dure environ 35 secondes)
la source
Python 2 , 116 octets
Essayez-le en ligne!
la source
Pyth , 12 octets
Essayez-le ici!
Comment ça marche
Fondamentalement, filtre les sous-chaînes de chacune qui n'apparaissent que dans l'une des chaînes de la liste (c'est-à-dire qu'elle est unique à cette chaîne) et obtient la première.
la source
Prolog (SWI) ,
175163 bytesEssayez-le en ligne!
La plupart des choses ici devraient être assez évidentes, mais:
Explication
Signatures: (
+
= entrée,?
= facultatif,-
= sortie,:
= expression)sub_string(+String, ?Before, ?Length, ?After, ?SubString)
string_length(+String, -Length)
member(?Elem, ?List)
between(+Low, +High, ?Value)
findall(+Template, :Goal, -Bag)
forall(:Cond, :Action)
\+ \+
est justenot not
(c.-à-d. convertit une correspondance en booléen (dans ce cas, l'empêche de faire correspondre les deuxp
sppcg
séparément))la source
APL (Dyalog) , 25 octets
Merci ngn pour avoir sauvé un octet
Essayez-le en ligne!
la source
J ,
30 2925 octetsEssayez-le en ligne!
la source
Gelée , 10 octets
Essayez-le en ligne!
la source
JavaScript (ES6), 93 octets
Essayez-le en ligne!
Comment?
Pour chaque chaîne s de longueur L dans le tableau d'entrée a [] et en commençant par n = 0 , nous utilisons la fonction récursive g () pour générer toutes les sous-chaînes u de s avec:
Par exemple, avec s = "abc" et L = 3 :
Certaines sous-chaînes sont générées plusieurs fois, mais cela n'a pas d'importance. Ce qui est important, c'est que toutes les sous-chaînes de longueur N ont été générées avant toute sous-chaîne de longueur N + 1 .
Nous arrêtons le processus dès que u ne peut être trouvé dans aucune autre chaîne S dans un [] , ce qui est garanti de se produire lorsque u == s dans le pire des cas, conformément à la règle de défi n ° 2:
Par conséquent, dans l'exemple ci-dessus, les étapes 7 et 8 ne seront en fait jamais traitées.
la source
PowerShell , 107 octets
Essayez-le en ligne!
Explication
Pour chaque chaîne fournie (et affectez l'ensemble du tableau à
$a
):for
boucle sur chaque longueur de sous-chaîne (basée sur 1) de la chaîne (en affectant la chaîne elle-même$s
et la longueur à$g
)$i
):$i
, puis pour chaque index:$s
) en position$_
(index) et de longueur$i
Where-Object
(?
) et retournez-la si:$a
) qui ne contient pas la chaîne actuelle$s
, n'a pas de correspondance avec la sous-chaîne actuelle$_
De retour au niveau de la chaîne, nous avons toutes les sous-chaînes de cette chaîne qui n'ont pas été trouvées dans les autres, alors prenez la première
[0]
car nous n'en avons besoin que d'une, puis passez à la chaîne suivante.la source
C # (Visual C # Interactive Compiler) , 149 octets
Essayez-le en ligne!
Moins golfé ...
la source