Je suis une personne paresseuse mais efficace, comme beaucoup d'entre vous le sont probablement aussi. Donc, chaque fois que je fais quelque chose, je veux le faire avec un minimum d'effort. C'est pourquoi je vous demande de résoudre ce problème pour moi.
Ce que j'ai ici, c'est une sorte de document. Sur chaque ligne de ce document se trouve un seul mot ou une courte phrase. Le document n'est pas trié, mais ça va, je sais où tout est. Je pourrais utiliser un peu d'aide pour trouver les choses plus rapidement, et pour cela j'ai besoin d'une deuxième liste. C'est là que vous intervenez. Pour chaque ligne de texte de ce document, j'ai besoin d'un identifiant. Quelque chose que je peux CTRL+ F, mais cela ne peut pas être plus long que nécessaire pour obtenir ce résultat.
Exemple d'entrée:
(blank)
an apple
spiderman 3
7pm pick up laundry
tequila
fake mustache
dishes on wednesday
banana
biscuits
(blank)
Exemple de sortie:
ap,3,7,q,f,w,ba,bi
Je vais me répéter ici, pour m'assurer que nous sommes sur la même longueur d'onde:
- L'entrée est un fichier texte non formaté contenant une liste d'éléments, séparés par des sauts de ligne. Je l'ai ici au format .txt, ça s'appelle "STUFF.TXT"
- La première et la dernière ligne du document sont vides. Une ligne sur deux contient une entrée de longueur> 0.
- Le fichier contient uniquement des caractères alphanumériques (tous en minuscules), des espaces et des sauts de ligne.
- La sortie souhaitée est une liste d'identifiants, dans le même ordre que ma liste d'origine.
- Je ne veux pas plus d'un mot de recherche pour chaque élément de la liste. S'il y a plusieurs réponses, choisissez-en une, je m'en fiche. Dans l'exemple ci-dessus, j'ai choisi «ap» pour
an apple
, mais vous auriez pu choisir «n», «a», «pp», «pl» ou «le». Pas «un», parce que c'est dedansbanana
. - Je peux vous assurer que le fichier n'est jamais vide et qu'il ne contient jamais de doublons.
- Si nécessaire , vous pouvez faire correspondre le terminateur de ligne. Mais c'est un dernier recours à utiliser uniquement lorsqu'il n'y a pas d'autre moyen de faire la distinction entre les éléments de la liste (par exemple «pomme» et «pommes»).
Les échappatoires standard ne sont pas autorisées. De plus, c'est le golf de code, donc le code le plus court gagne.
Un autre exemple:
(blank)
ban
any
king
bean
yen
rake
raki
bar
(blank)
Et sa sortie:
ban,ny,g,be,ye,ke,aki,ar
Réponses:
Pyth, 39 octets
Renforce tous les sous-ensembles de chaque chaîne en augmentant la longueur et vérifie si cette chaîne se produit à l'intérieur d'une autre. Si cela ne fonctionne pas, il fera de même sauf pour tous les sous-ensembles de
\nstring\n
.la source
.:
avec une chaîne de premier type et un deuxième type int n'est pas une erreur. Essayez d'utiliser Pyth à partir du référentiel