Używam tutaj „sufiksu” w znaczeniu luźnym, aby oznaczać „dowolny ciąg podrzędny następujący po przedrostku”.
„Prefiks” oznacza tutaj START słowa, przy czym początek słowa jest zdefiniowany albo po spacji, albo od pierwszego znaku tekstu wejściowego (dla pierwszego słowa). „Przedrostek” w środku słowa jest ignorowany.
Np. Jeśli twój przedrostek wejściowy to „uzbrojenie”, a tekst wejściowy to „Armia Dumbledore'a była w pełni uzbrojona na nadchodzące zbrojnie”, wówczas lista wyjściowa zawiera (y, ed, ageddon).
Przypadki testowe
Załóżmy, że rozróżniana jest wielkość liter, łańcuchy kończą się spacjami. Wprowadzanie nie rozpocznie się od spacji.
Usuwanie duplikatów jest opcjonalne.
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")
Zwycięzca
To jest golf golfowy , więc wygrywa najmniej bajtów. :)
Może akceptować dane wejściowe w dowolny sposób, pod warunkiem, że Twój kod może rozwiązać dowolne problemy, takie jak przypadki testowe.
źródło
https://www.astrotheme.com/astrology/
być prefiksem, gdy jest poprzedzonyhref="
?Odpowiedzi:
R , 63 bajty
Wypróbuj online!
Implementacja wyglądająca pozytywnie jest niestety o 5 bajtów dłuższa z powodu ogromnej
regmatches/gregexpr
kombinacji:źródło
Galaretka , 12 bajtów
Wypróbuj online!
źródło
Japt , 9 bajtów
8 bajtów, jeśli możemy przyjąć dane wejściowe jako tablicę słów.
Wypróbuj online!
źródło
url('')
), żadne z nich nie jest na początku.Python 2 ,
5756 bajtówWypróbuj online!
-1 dzięki dzięki @mypetlion
źródło
lambda i,j:[w[len(i):]for w in j.split()if w.find(i)==0]
dla -1 bajtówC (gcc) ,
113109106105 bajtów-4 bajty dzięki @LambdaBeta!
-3 bajty dzięki @WindmillCookies!
Wypróbuj online!
źródło
^0
. Właśnie;*t;
i&&*t;
Japt ,
1612 bajtówOdpowiedź portu Arnauld
-4 bajty od @Shaggy
Wypróbuj online!
źródło
05AB1E , 11 bajtów
Wypróbuj online! ( tutaj jest demo dla ciągów wielowierszowych)
Jak to działa?
źródło
Stax , 8 bajtów
Uruchom i debuguj
Wyjaśnienie:
Mógłbym również użyć
x%t
(długość X, przycięcie od lewej), która jest równie długa, ale pakuje do 9 bajtów .źródło
Retina , 31 bajtów
Wypróbuj online! Pierwszy wiersz powinien być pożądanym prefiksem, reszta to tekst wejściowy. Nie usuwa duplikatów. Będzie to 25 bajtów, jeśli dowolna biała spacja była prawidłowym separatorem. Objaśnienie: Chcemy wymienić sufiksy prawidłowych prefiksów.
[^ ¶]+
Mecze samego sufiksu. Prefiks wyrażenia regularnego jest wyglądem, który zapewnia, że prefiks sufiksu jest prefiksem wejściowym. Podczas oceniania wyglądu od prawej do lewej, zaczyna się od dopasowania przedrostka (używając tego samego wzorca, ale w()
celu przechwycenia go w środku s), a następnie dowolnych znaków, a następnie dopasowania przedrostka w jego własnej linii na początku danych wejściowych.źródło
¶
jest postacią nowej linii, ale nie mogę zrozumieć, dlaczego tak wielu jest tutaj potrzebnych.¶
zapewnia, że cała pierwsza linia jest dopasowana do przedrostka. Drugi¶
jest potrzebny, ponieważ nie wiadomo, ile jest linii pośrednich. Dwa ostatnie¶
działają w ten sam sposób - negowane klasy znaków zwykle zawierają znaki nowej linii, ale nie chcemy tego tutaj.¶
, a może nawet więcej.Brachylog ,
2421 bajtówWypróbuj online!
Mogłoby być kilka bajtów krótszych, gdyby istniało współdzielenie zmiennych z predykatami wbudowanymi.
Dane wejściowe to tablica z prefiksem jako pierwszym elementem i tekstem jako drugim elementem.
źródło
Formuła IBM / Lotus Notes, 54 bajty
Pobiera dane wejściowe z dwóch pól o nazwach
a
ib
. Działa, ponieważ Formula rekurencyjnie zastosuje funkcję do listy bez potrzeby@For
pętli.Brak dostępnego TIO, oto zrzut ekranu:
źródło
APL (Dyalog Unicode) , 23 bajty SBCS
Pełny program Monity o tekst i prefiks ze standardowego wejścia. Drukuje listę na standardowe wyjście.
Wypróbuj online!
⎕
monit (o tekst)⊢
dochód, (wydzielane'\1'
z⎕
)(
…)⎕S'\1'
PCRE Wyszukaj i zwróć listę grupy przechwytywania 1 z następującego wyrażenia regularnego:⎕
monit (dla prefiksu)'(\w+)\b',
poprzedzić ten ciąg (grupa znaków słownych, po których następuje granica słowa)5⌽
obróć pierwsze 5 znaków do końca;'\bPREFIX(\w+)'
źródło
C (brzęk) , 107 bajtów
Wypróbuj online!
Opis:
To musi być klang, ponieważ gcc segfaults bez
#include <string.h>
problemów z powodu strtok.źródło
MATL, 17 bajtów
Wypróbuj na MATL Online
W jaki sposób?
Yb
- Podziel dane wejściowe na spacje, umieść wyniki w tablicy komórkowej94
- Kod ASCII dla^
znakuih
- Pobierz dane wejściowe (powiedz „frac”), połącz „^” i dane wejściowe'(.*)'h
- Wciśnij ciąg'(.*)'
do stosu, połącz „^ frac” i „(. *)”. Mamy teraz'^frac(.*)
wyrażenie regularne, które pasuje do „frac” na początku łańcucha i przechwytuje to, co nastąpi później.6&XX
- Uruchom dopasowanie wyrażenia regularnego,6&
określając tryb „Tokeny”, tzn. Dopasowane grupy przechwytywania są zwracane zamiast całego dopasowania.Wyjmij wyniki niejawnie.
źródło
'Tokens'
działa; dobrze wiedzieć!Bash + grep, 20 bajtów
Prefiks jest podawany jako parametr wiersza polecenia, a tekst wejściowy jest przesyłany potokowo przez stdin.
Wypróbuj online!
źródło
PowerShell 3.0,
606259 bajtówUtracono niektóre bajty tłumiące dane wyjściowe cmatch. Miał zabawne rozwiązanie, które zyskało, celowo powodując duplikaty. Ale rzuciło również czerwone linie, jeśli nie pasowało do pierwszego, ale teraz nie jest dobrze, kiedy o tym myślę. +2 bajty, aby to naprawić.
źródło
king, tals, ted, tional, tional, tionally, tioned, tioned, tious, tostratic, tures,tures,tures, tures, as
i pokazuje naHe1in
przykład błąd indeksu . PowerShell 5.1, 6.0.2. Rozwiązanie z 62 bajtami jest OK.JavaScript (ES6), 57 bajtów
Pobiera dane wejściowe w składni curry
(text)(prefix)
. Nie usuwa duplikatów.Wypróbuj online!
źródło
JavaScript (Node.js) ,
6459 bajtów-5 bajtów z @Shaggy
Wypróbuj online!
źródło
Haskell , 51 bajtów
Wypróbuj online!
źródło
Łuska , 11 bajtów
Prawie tylko część odpowiedzi Haskella :
Wypróbuj online!
Wyjaśnienie
źródło
Galaretka ,
119 bajtówDyadyczny link akceptujący tekst (listę znaków) po lewej stronie i prefiks (lista znaków) po prawej stronie, który daje listę list znaków (wynikowe sufiksy).
Wypróbuj online!(stopka łączy się ze spacjami, aby uniknąć niejawnego rozbicia całego programu)
Uwaga: Dodałem trzy przypadki krawędzi do łańcucha w OP - niezakodowane i nofracfracheremate na początku, które nie powinny wypisywać i fracfracit na końcu, który powinien wypisywać fracit.
W jaki sposób?
poprzednie 11 bajtów:
Również link diadadowy jak wyżej.
Wypróbuj online!
źródło
Perl 5 z -asE,
232221 bajtów (?)Wypróbuj online!
Może być prowadzony jako poleceń jedną wkładką jako
perl -asE 'say/^$b(.*)/ for@F' -- -b=frac -
, albo z pliku w miejscu ostatniego-
.Lub powiedzmy z pliku skryptu
perl -as -M5.010 script.pl -b=frac -
(dzięki @Brad Gilbert b2gills za link TIO demonstrujący to).Sam kod ma 18 bajtów, dodałem 3 bajty dla
-b=
opcji, która przypisuje swoją wartość (wejście prefiksu) do zmiennej wymienionej$b
w kodzie. To wydawało się wyjątkiem od zwykłego konsensusu „flagi nie są liczone”.-a
dzieli każdą linię wejściową na spacje i umieszcza wynik w tablicy@F
.-s
to skrótowy sposób przypisywania argumentu wiersza poleceń jako zmiennej, poprzez podanie nazwy w wierszu polecenia. Oto argument-b=frac
, który umieszcza przedrostek „frac” w zmiennej$b
./^$b(.*)/
- Odpowiada wartości$b
na początku łańcucha..*
jest tym, co nastąpi potem, aż do końca słowa, a otaczające go nawiasy ujmują tę wartość. Przechwycone wartości są automatycznie zwracane do wydrukowaniasay
. Iteracja słów oddzielonych spacjamifor @F
oznacza, że nie musimy sprawdzać początkowych ani końcowych spacji.źródło
Perl 6 , 30 bajtów
Sprawdź to
Rozszerzony:
źródło
p
i<(
jest konieczny, ponieważ w przeciwnym razie może być postrzegany jako$v<…>
skrót$v{qw '…'}
.Java 10, 94 bajty
Wypróbuj online tutaj .
Nie golfowany:
źródło
Mały podstawowy , 242 bajty
Skrypt, który nie pobiera danych wejściowych i wyjściowych do
TextWindow
obiektuWypróbuj na SmallBasic.com! Wymaga IE / Silverlight
źródło
Python 2 , 53 bajty
Wypróbuj online!
źródło
Brachylog , 12 bajtów
Wypróbuj online!
Pobiera dane wejściowe jak
[text, prefix]
przez zmienną wejściową i generuje każde słowo przez zmienną wyjściową. To była pierwotnie odpowiedź Sundara, którą zacząłem grać w golfa po przeczytaniu, że „mogłaby być kilka bajtów krótsza, gdyby istniało dzielenie zmiennych z predykatami wbudowanymi”, co jest teraz możliwe. Okazuje się, że moc generatora pozwala zaoszczędzić jeszcze więcej bajtów.Dwie pierwsze próby gry w golfa przy użyciu całkiem nowych funkcji języka:
Z oczekiwanymi zmiennymi globalnymi:
hA⁰&tṇ₁{∧A⁰;.c?∧}ˢ
(18 bajtów)Z metapredykatem „aplikuj na głowę”:
ṇ₁ᵗz{tR&h;.cR∧}ˢ
(16 bajtów)I moje oryginalne rozwiązanie:
Brachylog , 15 bajtów
Wypróbuj online!
Ten sam I / O. Jest to zasadniczo generator słów z prefiksem
ṇ₁ʰ⟨∋a₀⟩
, zmodyfikowany w celu usunięcia prefiksu.Zupełnie inny predykat z tą samą liczbą bajtów:
Brachylog , 15 bajtów
Wypróbuj online!
Ten sam I / O.
źródło
Czerwony , 62 bajty
Wypróbuj online!
źródło
Pyth ,
2120181716 bajtówWypróbuj online!
-1 przy użyciu
V
zamiast,FN
ponieważV
domyślnie ustawiaN
-2 po dalszym czytaniu na temat opcji krojenia ciągów
-1 za pomocą
x
do sprawdzenia obecności podłańcucha o indeksie 0-1 za pomocą zamiany na „” w celu uzyskania końca łańcucha
Jestem pewien, że przydałoby się trochę poważnego golfa, ale jako początkujący Pyth, dostanie go do pracy było bonusem.
Jak to działa?
źródło
Excel VBA, 86 bajtów
Pobiera dane wejściowe jako prefiks do
[A1]
oraz wartości[B1]
i dane wyjściowe do konsoli.źródło