J'utilise ici "suffixe" pour désigner "toute sous-chaîne qui suit le préfixe".
"Préfixe" signifie ici le DÉBUT d'un mot, où le début d'un mot est défini soit après un espace, soit à partir du premier caractère du texte saisi (pour le premier mot). Un "préfixe" au milieu d'un mot est ignoré.
Par exemple, si votre préfixe d'entrée est "arm" et le texte d'entrée est "L'armée de Dumbledore était entièrement armée pour l'imminence de l'armageddon", alors la liste de sortie contient (y, ed, ageddon).
Cas de test
Supposons que les chaînes respectent la casse, les terminaisons après les espaces. L'entrée ne commencera pas par un espace.
La suppression des doublons est facultative.
Input prefix: "1"
Input text:
"He1in aosl 1ll j21j 1lj2j 1lj2 1ll l1j2i"
Output: (ll, lj2j, lj2) - in any permutation
Input prefix: "frac"
Input text:
"fracking fractals fracted fractional currency fractionally fractioned into fractious fractostratic fractures causing quite a fracas"
Output: (king, tals, ted, tional, tionally, tioned, tious, tostratic, tures, as)
Input prefix: "href="https://www.astrotheme.com/astrology/"
Input text:
"(div style="padding: 0; background: url('https://www.astrotheme.com/images/site/arrondi_450_hd.png') no-repeat; text-align: left; font-weight: bold; width: 450px; height: 36px")
(div class="titreFiche" style="padding: 5px 0 0 6px")(a href="https://www.astrotheme.com/astrology/Nolwenn_Leroy" title="Nolwenn Leroy: Astrology, birth chart, horoscope and astrological portrait")Nolwenn Leroy(br /)
(/div)
(div style="text-align: right; border-left: 1px solid #b2c1e2; border-right: 1px solid #b2c1e2; width: 446px; padding: 1px 1px 0; background: #eff8ff")
(table style="width: 100%")(tr)(td style="width: 220px")
(div style="padding: 0; background: url('https://www.astrotheme.com/images/site/arrondi_450_hd.png') no-repeat; text-align: left; font-weight: bold; width: 450px; height: 36px")
(div class="titreFiche" style="padding: 5px 0 0 6px")(a href="https://www.astrotheme.com/astrology/Kim_Kardashian" title="Kim Kardashian: Astrology, birth chart, horoscope and astrological portrait")Kim Kardashian(br /)(span style="font-weight: normal; font-size: 11px")Display her detailed horoscope and birth chart(/span)(/a)(/div)
(/div)
(div style="padding: 0; background: url('https://www.astrotheme.com/images/site/arrondi_450_hd.png') no-repeat; text-align: left; font-weight: bold; width: 450px; height: 36px")
(div class="titreFiche" style="padding: 5px 0 0 6px")(a href="https://www.astrotheme.com/astrology/Julia_Roberts" title="Julia Roberts: Astrology, birth chart, horoscope and astrological portrait")Julia Roberts(br /)(span style="font-weight: normal; font-size: 11px")Display her detailed horoscope and birth chart(/span)(/a)(/div)
(td id="cfcXkw9aycuj35h" style="text-align: right")
(/div)"
Output: (Nolwenn_Leroy", Kim_Kardashian", Julia_Roberts")
Le gagnant
C'est du code-golf , donc le moins d'octets gagne. :)
Peut accepter les entrées de n'importe quelle manière qui fonctionne, tant que votre code peut résoudre des problèmes arbitraires comme les cas de test.
la source
https://www.astrotheme.com/astrology/
peut-il être un préfixe quand il est précédéhref="
?Réponses:
R , 63 octets
Essayez-le en ligne!
L'implémentation positive-lookbehind est malheureusement de 5 octets de plus en raison de l'énorme
regmatches/gregexpr
combinaison:la source
Gelée , 12 octets
Essayez-le en ligne!
la source
Japt , 9 octets
8 octets si nous pouvons prendre l'entrée comme un tableau de mots.
Essayez-le en ligne!
la source
url('')
), aucune d'entre elles n'est au début.Python 2 ,
5756 octetsEssayez-le en ligne!
-1 avec merci à @mypetlion
la source
lambda i,j:[w[len(i):]for w in j.split()if w.find(i)==0]
pour -1 octetC (gcc) ,
113109106105 octets-4 octets grâce à @LambdaBeta!
-3 octets grâce à @WindmillCookies!
Essayez-le en ligne!
la source
^0
. Just;*t;
and&&*t;
Japt ,
1612 octetsPort d'Arnauld Answer
-4 octets de @Shaggy
Essayez-le en ligne!
la source
05AB1E , 11 octets
Essayez-le en ligne! ( voici une démo pour les chaînes multilignes)
Comment ça marche?
la source
Stax , 8 octets
Exécuter et déboguer
Explication:
Je pourrais également utiliser
x%t
(longueur de X, découpage à partir de la gauche), qui est tout aussi long mais qui contient 9 octets .la source
Rétine , 31 octets
Essayez-le en ligne! La première ligne doit être le préfixe souhaité, le reste est le texte d'entrée. Ne supprime pas les doublons. Serait de 25 octets si un espace blanc était un séparateur valide. Explication: Nous voulons répertorier les suffixes des préfixes valides. Le
[^ ¶]+
correspond au suffixe lui-même. Le préfixe de l'expression rationnelle est un lookbehind qui garantit que le préfixe du suffixe est le préfixe d'entrée. Comme un lookbehind est évalué de droite à gauche, cela commence par faire correspondre le préfixe (en utilisant le même modèle mais à l'intérieur de()
s pour le capturer), puis tous les caractères, avant de finalement faire correspondre le préfixe sur sa propre ligne au début de l'entrée.la source
¶
c'est un caractère de nouvelle ligne, mais je ne peux pas comprendre pourquoi tant de gens sont nécessaires ici.¶
garantit que toute la première ligne correspond au préfixe. La seconde¶
est nécessaire car on ne sait pas combien de lignes intermédiaires il y a. Les deux derniers¶
s fonctionnent de la même manière - les classes de caractères niés incluent normalement des retours à la ligne mais nous ne voulons pas cela ici.¶
, peut-être plus.Brachylog ,
2421 octetsEssayez-le en ligne!
Cela aurait pu être plus court de quelques octets s'il y avait un partage variable avec des prédicats en ligne.
L'entrée est un tableau avec le préfixe comme premier élément et le texte comme deuxième élément.
la source
Formule IBM / Lotus Notes, 54 octets
Prend sa saisie à partir de deux champs nommés
a
etb
. Fonctionne car Formula appliquera récursivement une fonction à une liste sans avoir besoin d'une@For
boucle.Pas de TIO disponible alors voici une capture d'écran:
la source
APL (Dyalog Unicode) , 23 octets SBCS
Programme complet. Demande le texte et le préfixe de stdin. Imprime la liste sur la sortie standard.
Essayez-le en ligne!
⎕
invite (pour le texte)⊢
rendement qui (se sépare'\1'
de⎕
)(
…)⎕S'\1'
PCRE Recherche et retourne la liste du groupe de capture 1 à partir de l'expression rationnelle suivante:⎕
invite (pour le préfixe)'(\w+)\b',
ajouter cette chaîne (groupe de caractères de mot suivi d'une limite de mot)5⌽
faites pivoter les 5 premiers caractères jusqu'à la fin;'\bPREFIX(\w+)'
la source
C (clang) , 107 octets
Essayez-le en ligne!
La description:
Doit être clang parce que gcc segfaults sans en
#include <string.h>
raison de problèmes strtok.la source
MATL, 17 octets
Essayez-le sur MATL Online
Comment?
Yb
- Divisez l'entrée aux espaces, placez les résultats dans un tableau de cellules94
- Code ASCII pour le^
caractèreih
- Récupère l'entrée (disons "frac"), concatène '^' et l'entrée'(.*)'h
- Poussez la chaîne'(.*)'
dans la pile, concaténez '^ frac' et '(. *)'. Nous avons donc maintenant'^frac(.*)
, une expression régulière qui correspond à "frac" au début de la chaîne et capture tout ce qui vient après.6&XX
- Exécutez la correspondance d'expressions régulières, en6&
spécifiant le mode «jetons», c'est-à-dire que les groupes de capture correspondants sont renvoyés à la place de la correspondance entière.Afficher implicitement les résultats.
la source
'Tokens'
fait; bon à savoir!Frapper + grep, 20 octets
Le préfixe est donné comme paramètre de ligne de commande et le texte d'entrée est canalisé via stdin.
Essayez-le en ligne!
la source
PowerShell 3.0,
606259 octetsPerte de quelques octets supprimant la sortie de cmatch. Avait une solution loufoque qui a gagné en provoquant délibérément des doublons. Mais il a également jeté des lignes rouges s'il ne correspondait pas au premier mais ce n'est pas bien maintenant que j'y pense. +2 octets pour le réparer cependant.
la source
king, tals, ted, tional, tional, tionally, tioned, tioned, tious, tostratic, tures,tures,tures, tures, as
et montre une erreur d'index sur l'He1in
exemple. Powershell 5.1, 6.0.2. La solution avec 62 octets est OK.JavaScript (ES6), 57 octets
Prend une entrée dans la syntaxe de curry
(text)(prefix)
. Ne supprime pas les doublons.Essayez-le en ligne!
la source
JavaScript (Node.js) ,
6459 octets-5 octets de @Shaggy
Essayez-le en ligne!
la source
Haskell , 51 octets
Essayez-le en ligne!
la source
Décortiquer , 11 octets
À peu près juste un port de la réponse Haskell :
Essayez-le en ligne!
Explication
la source
Gelée ,
119 octetsUn lien dyadique acceptant le texte (une liste de caractères) à gauche et le préfixe (une liste de caractères) à droite qui donne une liste de listes de caractères (les suffixes résultants).
Essayez-le en ligne! (le pied de page se joint aux espaces pour éviter l'écrasement implicite du programme complet)
Remarque: J'ai ajouté trois cas de bord à la chaîne dans l'OP - unfrackled et nofracfracheremate au début, qui ne devrait pas sortir et fracfracit à la fin qui devrait sortir fracit.
Comment?
11 octets précédents:
Également un lien dyadique comme ci-dessus.
Essayez-le en ligne!
la source
Perl 5 avec -asE,
232221 octets (?)Essayez-le en ligne!
Peut être exécuté en ligne de commande à une ligne comme
perl -asE 'say/^$b(.*)/ for@F' -- -b=frac -
, ou avec un nom de fichier à la place du dernier-
.Ou à partir d'un fichier de script, par exemple
perl -as -M5.010 script.pl -b=frac -
(merci à @Brad Gilbert b2gills pour le lien TIO qui le démontre).Le code lui-même fait 18 octets, j'ai ajouté 3 octets pour l'
-b=
option qui affecte sa valeur (l'entrée de préfixe) à une variable nommée$b
dans le code. Cela semblait être une exception au consensus habituel "les drapeaux ne sont pas comptés".-a
divise chaque ligne d'entrée en espaces et place le résultat dans le tableau@F
.-s
est un moyen raccourci d'assigner un argument de ligne de commande en tant que variable, en donnant un nom sur la ligne de commande. Voici l'argument-b=frac
qui place le préfixe "frac" dans une variable$b
./^$b(.*)/
- Correspond à la valeur de$b
au début de la chaîne..*
est tout ce qui vient après cela, jusqu'à la fin du mot, et les parenthèses environnantes capturent cette valeur. Les valeurs capturées sont automatiquement renvoyées, pour être imprimées parsay
. Itérer à travers des mots séparés par des espacesfor @F
signifie que nous n'avons pas à vérifier les espaces initiaux ou finaux.la source
Perl 6 , 30 octets
Essaye-le
Étendu:
la source
p
et<(
est nécessaire car sinon il peut être vu comme$v<…>
étant court pour$v{qw '…'}
.Java 10, 94 octets
Essayez-le en ligne ici .
Non golfé:
la source
Petit de base , 242 octets
Un script qui ne prend aucune entrée et ne sort pas vers l'
TextWindow
objetEssayez-le sur SmallBasic.com! Nécessite IE / Silverlight
la source
Python 2 , 53 octets
Essayez-le en ligne!
la source
Brachylog , 12 octets
Essayez-le en ligne!
Prend l'entrée comme
[text, prefix]
via la variable d'entrée et génère chaque mot via la variable de sortie. C'était à l'origine la réponse de sundar, que j'ai commencé à essayer de jouer au golf après avoir lu qu'elle "aurait pu être plus courte de quelques octets s'il y avait un partage variable avec des prédicats en ligne", ce qui est possible maintenant. Il s'avère que la sortie du générateur économise encore plus d'octets.Mes deux premières tentatives de golf, en utilisant des fonctionnalités assez nouvelles du langage:
Avec les variables globales espérées:
hA⁰&tṇ₁{∧A⁰;.c?∧}ˢ
(18 octets)Avec le métaprédicat à appliquer en tête:
ṇ₁ᵗz{tR&h;.cR∧}ˢ
(16 octets)Et ma solution originale:
Brachylog , 15 octets
Essayez-le en ligne!
Même E / S. Il s'agit essentiellement d'un générateur de mots avec le préfixe,,
ṇ₁ʰ⟨∋a₀⟩
modifié pour supprimer le préfixe.Un prédicat très différent avec le même nombre d'octets:
Brachylog , 15 octets
Essayez-le en ligne!
Même E / S.
la source
Rouge , 62 octets
Essayez-le en ligne!
la source
Pyth ,
2120181716 octetsEssayez-le en ligne!
-1 en utilisant
V
au lieu deFN
carV
définit implicitementN
-2 après quelques lectures supplémentaires sur les options de découpage de chaîne
-1 en utilisant
x
pour vérifier la présence de la sous-chaîne à l'index 0-1 en utilisant remplacer par "" pour obtenir la fin de la chaîne
Je suis sûr que cela pourrait utiliser du golf sérieux, mais en tant que débutant Pyth, le faire fonctionner était un bonus.
Comment ça marche?
la source
Excel VBA, 86 octets
Prend l'entrée comme préfixe
[A1]
et les valeurs[B1]
et les sorties vers la console.la source