Ich verwende "Suffix" hier lose, um "jede Unterzeichenfolge zu bedeuten, die dem Präfix folgt".
"Präfix" bedeutet hier den START eines Wortes, wobei der Start eines Wortes entweder nach einem Leerzeichen oder ab dem ersten Zeichen des eingegebenen Textes (für das erste Wort) definiert wird. Ein "Präfix" in der Mitte eines Wortes wird ignoriert.
Wenn Ihr Eingabepräfix beispielsweise "arm" und der Eingabetext "Dumbledores Armee war für das bevorstehende Armageddon vollständig gerüstet" lautet, enthält die Ausgabeliste (y, ed, ageddon).
Testfälle
Angenommen, Groß- und Kleinschreibung wird beachtet, Zeichenfolgen enden nach Leerzeichen. Die Eingabe beginnt nicht mit einem Leerzeichen.
Das Entfernen von Duplikaten ist optional.
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")
Der Gewinner
Dies ist Code-Golf , so dass die wenigsten Bytes gewinnen. :)
Kann die Eingaben auf irgendeine Weise akzeptieren, die funktioniert, solange Ihr Code beliebige Probleme wie die Testfälle lösen kann.
quelle
https://www.astrotheme.com/astrology/
ein Präfix sein, wenn es vorangestellt isthref="
?Antworten:
R , 63 Bytes
Probieren Sie es online!
Die positiv aussehende Implementierung ist aufgrund der riesigen
regmatches/gregexpr
Kombination leider 5 Bytes länger :quelle
Gelee , 12 Bytes
Probieren Sie es online!
quelle
Japt , 9 Bytes
8 Bytes, wenn wir die Eingabe als Array von Wörtern annehmen können.
Probieren Sie es online!
quelle
url('')
), keine davon ist am Anfang.Python 2 ,
5756 BytesProbieren Sie es online!
-1 danke an @mypetlion
quelle
lambda i,j:[w[len(i):]for w in j.split()if w.find(i)==0]
für -1 ByteC (GCC) ,
113109106105 Bytes-4 Bytes dank @LambdaBeta!
-3 Bytes dank @WindmillCookies!
Probieren Sie es online!
quelle
^0
. Nur;*t;
und&&*t;
Japt ,
1612 BytesHafen von Arnauld Antwort
-4 Bytes von @Shaggy
Probieren Sie es online!
quelle
05AB1E , 11 Bytes
Probieren Sie es online! ( hier ist eine Demo für mehrzeilige Strings)
Wie funktioniert es?
quelle
Stax , 8 Bytes
Führen Sie es aus und debuggen Sie es
Erläuterung:
Ich könnte auch verwenden
x%t
(Länge von X, Beschnitt von links), die gleich lang ist, sich aber auf 9 Bytes packt .quelle
Retina , 31 Bytes
Probieren Sie es online! Die erste Zeile sollte das gewünschte Präfix sein, der Rest ist der Eingabetext. Entfernt keine Duplikate. Wäre 25 Byte, wenn ein Leerzeichen ein gültiger Trenner wäre. Erläuterung: Wir möchten die Suffixe gültiger Präfixe auflisten. Das
[^ ¶]+
stimmt mit dem Suffix selbst überein. Das Präfix des regulären Ausdrucks ist ein Lookbehind, der sicherstellt, dass das Präfix des Suffix das Eingabepräfix ist. Wenn ein Lookbehind von rechts nach links ausgewertet wird, beginnt dies mit dem Abgleichen des Präfixes (unter Verwendung desselben Musters, aber innerhalb von()
s, um es zu erfassen) und aller Zeichen, bevor schließlich das Präfix in einer eigenen Zeile am Anfang der Eingabe abgeglichen wird .quelle
¶
handelt sich um einen Zeilenumbruch, aber ich kann nicht herausfinden, warum hier so viele benötigt werden.¶
stellt sicher, dass die gesamte erste Zeile mit dem Präfix übereinstimmt. Die zweite¶
wird benötigt, da nicht bekannt ist, wie viele Zwischenzeilen es gibt. Die letzten beiden¶
funktionieren auf die gleiche Weise - negierte Zeichenklassen enthalten normalerweise Zeilenumbrüche, aber das wollen wir hier nicht.¶
, möglicherweise auch mehrere entfernen .Brachylog ,
2421 BytesProbieren Sie es online!
Hätte ein paar Bytes kürzer sein können, wenn Variablen mit Inline-Prädikaten geteilt worden wären.
Die Eingabe ist ein Array mit dem Präfix als erstem Element und dem Text als zweitem Element.
quelle
IBM / Lotus Notes-Formel, 54 Byte
Übernimmt die Eingabe aus zwei Feldern mit dem Namen
a
undb
. Funktioniert, weil Formula eine Funktion rekursiv auf eine Liste anwendet, ohne dass eine@For
Schleife erforderlich ist.Kein TIO verfügbar. Hier ist ein Screenshot:
quelle
APL (Dyalog Unicode) , 23 Byte SBCS
Volles Programm. Fordert zur Eingabe von Text und Präfix von stdin auf. Druckt die Liste nach Standard.
Probieren Sie es online!
⎕
Eingabeaufforderung (für Text)⊢
ergeben, dass (trennt sich'\1'
von⎕
)(
…)⎕S'\1'
PCRE-Suche und Rückkehrliste der Erfassungsgruppe 1 aus dem folgenden regulären Ausdruck:⎕
Eingabeaufforderung (für Präfix)'(\w+)\b',
voranstellen (Gruppe von Wortzeichen, gefolgt von einer Wortgrenze)5⌽
Drehe die ersten 5 Zeichen bis zum Ende.'\bPREFIX(\w+)'
quelle
C (clang) , 107 Bytes
Probieren Sie es online!
Beschreibung:
Muss wegen gcc segfaults klingeln, ohne dass
#include <string.h>
es zu strtok Problemen kommt.quelle
MATL, 17 Bytes
Probieren Sie es auf MATL Online aus
Wie?
Yb
- Teilen Sie die Eingabe in Leerzeichen und platzieren Sie die Ergebnisse in einem Zellenarray94
- ASCII-Code für^
Zeichenih
- Holen Sie sich die Eingabe (sagen Sie "frac"), verketten Sie '^' und die Eingabe'(.*)'h
- Schieben Sie den String'(.*)'
in den Stack, verketten Sie '^ frac' und '(. *)'. Jetzt haben wir also'^frac(.*)
einen regulären Ausdruck, der mit "frac" am Anfang der Zeichenfolge übereinstimmt und erfasst, was danach kommt.6&XX
- Führen Sie einen regulären Ausdrucksvergleich durch,6&
indem Sie den Modus "Tokens" angeben, dh, die übereinstimmenden Erfassungsgruppen werden anstelle der gesamten Übereinstimmung zurückgegeben.Die Ergebnisse implizit ausgeben.
quelle
'Tokens'
tut; gut zu wissen!Bash + grep, 20 Bytes
Das Präfix wird als Befehlszeilenparameter angegeben, und der Eingabetext wird über stdin weitergeleitet.
Probieren Sie es online!
quelle
PowerShell 3.0,
606259 BytesEinige Bytes verloren, die die cmatch-Ausgabe unterdrücken. Hatte eine ruckelige Lösung, die einige durch absichtliche Verursachung von Duplikaten gewann. Aber es hat auch Redlines ausgelöst, wenn es beim ersten Mal nicht gepasst hat, aber das ist nicht gut, jetzt, wo ich darüber nachdenke. +2 Bytes, um das Problem zu beheben.
quelle
king, tals, ted, tional, tional, tionally, tioned, tioned, tious, tostratic, tures,tures,tures, tures, as
und zeigt amHe1in
Beispiel einen Indexfehler . Powershell 5.1, 6.0.2. Lösung mit 62 Bytes ist Ok.JavaScript (ES6), 57 Byte
Übernimmt Eingaben in der Currying-Syntax
(text)(prefix)
. Entfernt keine Duplikate.Probieren Sie es online!
quelle
JavaScript (Node.js) ,
6459 Bytes-5 Bytes von @Shaggy
Probieren Sie es online!
quelle
Haskell , 51 Bytes
Probieren Sie es online!
quelle
Schale , 11 Bytes
So ziemlich nur eine Portierung der Haskell-Antwort :
Probieren Sie es online!
Erläuterung
quelle
Jelly ,
119 BytesEin dyadischer Link, der den Text (eine Liste von Zeichen) auf der linken Seite und das Präfix (eine Liste von Zeichen) auf der rechten Seite akzeptiert und eine Liste von Zeichenlisten (die resultierenden Suffixe) ergibt.
Probieren Sie es online!(Die Fußzeile wird mit Leerzeichen
verknüpft , um das implizite Zertrümmern des gesamten Programms zu vermeiden.) Hinweis: Ich habe der Zeichenfolge im OP drei Kantenfälle hinzugefügt - unfrackled und nofracfracheremate am Anfang, die nicht ausgegeben werden sollen, und fracfracit am Ende, die fracit ausgegeben werden sollen.
Wie?
vorherige 11 byter:
Auch ein dyadischer Link wie oben.
Probieren Sie es online!
quelle
Perl 5 mit -asE,
232221 Bytes (?)Probieren Sie es online!
Können als Kommandozeilen - Einzeiler laufen als
perl -asE 'say/^$b(.*)/ for@F' -- -b=frac -
oder mit einem Dateinamen anstelle der letzten-
.Oder etwa aus einer Skriptdatei
perl -as -M5.010 script.pl -b=frac -
(danke an @Brad Gilbert b2gills für den TIO-Link, der dies demonstriert).Der Code selbst ist 18 Bytes, ich habe 3 Bytes für die hinzugefügt
-b=
Option , die einer$b
im Code benannten Variablen ihren Wert (die Präfix-Eingabe) zuweist . Das schien eine Ausnahme zu dem üblichen Konsens zu sein, dass Flaggen nicht gezählt werden.-a
Teilt jede Eingabezeile in Leerzeichen und platziert das Ergebnis im Array@F
.-s
Dies ist eine Abkürzung, um ein Befehlszeilenargument als Variable zuzuweisen, indem Sie in der Befehlszeile einen Namen eingeben. Hier ist das Argument-b=frac
, welches das Präfix "frac" in eine Variable setzt$b
./^$b(.*)/
- Entspricht dem Wert$b
am Anfang der Zeichenfolge..*
Was auch immer danach kommt, bis zum Ende des Wortes, und die umgebenden Klammern erfassen diesen Wert. Die erfassten Werte werden automatisch zurückgegeben und von gedrucktsay
. Durchlaufen von durch Leerzeichen getrennten Wörtern mitfor @F
bedeutet, dass wir nicht nach anfänglichen oder endgültigen Leerzeichen suchen müssen.quelle
Perl 6 , 30 Bytes
Probier es aus
Erweitert:
quelle
p
und<(
ist notwendig, da es sonst als$v<…>
kurz für angesehen werden kann$v{qw '…'}
.Java 10, 94 Bytes
Probieren Sie es hier online aus .
Ungolfed:
quelle
Kleines Basic , 242 Bytes
Ein Skript, das keine Ein- und Ausgaben für die
TextWindow
Objekt vornimmtProbieren Sie es bei SmallBasic.com! Benötigt IE / Silverlight
quelle
Python 2 , 53 Bytes
Probieren Sie es online!
quelle
Brachylog , 12 Bytes
Probieren Sie es online!
Übernimmt Eingaben wie
[text, prefix]
über die Eingabevariable und generiert jedes Wort über die Ausgabevariable. Dies war ursprünglich Sundars Antwort, die ich zu spielen begann, nachdem ich gelesen hatte, dass sie "ein paar Bytes kürzer sein könnte, wenn eine variable Freigabe mit Inline-Prädikaten gegeben wäre", was jetzt möglich ist. Es stellt sich heraus, dass die Generatorausgabe noch mehr Bytes spart.Meine ersten beiden Versuche, es mit relativ neuen Sprachfeatures abzuspielen:
Mit den erhofften globalen Variablen:
hA⁰&tṇ₁{∧A⁰;.c?∧}ˢ
(18 Bytes)Mit dem Apply-to-Head-Metapredikat:
ṇ₁ᵗz{tR&h;.cR∧}ˢ
(16 Byte)Und meine ursprüngliche Lösung:
Brachylog , 15 Bytes
Probieren Sie es online!
Gleiche I / O. Dies ist im Wesentlichen ein Generator für Wörter mit dem Präfix
ṇ₁ʰ⟨∋a₀⟩
, der geändert wurde, um das Präfix zu entfernen.Ein ganz anderes Prädikat mit der gleichen Byteanzahl:
Brachylog , 15 Bytes
Probieren Sie es online!
Gleiche I / O.
quelle
Rot , 62 Bytes
Probieren Sie es online!
quelle
Pyth ,
2120181716 BytesProbieren Sie es online!
-1 durch Verwendung von
V
stattFN
weilV
implizit setztN
-2 nach etwas weiterem Lesen über die Optionen zum Aufteilen von Strings
-1 mit
x
, um das Vorhandensein der Teilzeichenfolge am Index 0 zu überprüfen-1 mit "" ersetzen, um das Ende der Zeichenkette zu erhalten
Ich bin mir sicher, dass dies ernsthaftes Golfen gebrauchen könnte, aber als Pyth-Anfänger war es ein Bonus, es einfach zum Laufen zu bringen.
Wie funktioniert es?
quelle
Excel VBA, 86 Bytes
Übernimmt Eingaben als Präfix
[A1]
und Werte als Ein-[B1]
und Ausgaben an die Konsole.quelle