Eu uso "sufixo" vagamente aqui para significar "qualquer sub-string que segue o prefixo".
"Prefixo" aqui significa o INÍCIO de uma palavra, onde o início de uma palavra é definido como após um espaço ou a partir do primeiro caractere do texto de entrada (para a primeira palavra). Um "prefixo" no meio de uma palavra é ignorado.
Por exemplo, se o seu prefixo de entrada é "arm" e o texto de entrada é "O exército de Dumbledore estava totalmente armado para o iminente armageddon", a lista de saída contém (y, ed, ageddon).
Casos de teste
Suponha que maiúsculas e minúsculas diferenciam maiúsculas de minúsculas. A entrada não começará com um espaço.
A remoção de duplicatas é opcional.
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")
O vencedor
Isso é código-golfe , então o menor número de bytes vence. :)
Pode aceitar as entradas de qualquer maneira que funcione, desde que o seu código possa resolver problemas arbitrários, como os casos de teste.
fonte
https://www.astrotheme.com/astrology/
ser um prefixo quando precedido porhref="
?Respostas:
R , 63 bytes
Experimente online!
Infelizmente, a implementação positiva é de 5 bytes devido à enorme
regmatches/gregexpr
combinação:fonte
Gelatina , 12 bytes
Experimente online!
fonte
Japonês , 9 bytes
8 bytes se pudermos receber a entrada como uma matriz de palavras.
Experimente online!
fonte
url('')
), nenhuma delas está no começo.Python 2 ,
5756 bytesExperimente online!
-1 com agradecimentos a @mypetlion
fonte
lambda i,j:[w[len(i):]for w in j.split()if w.find(i)==0]
para -1 byteC (GCC) ,
113109106105 bytes-4 bytes graças a @LambdaBeta!
-3 bytes graças a @WindmillCookies!
Experimente online!
fonte
^0
. Apenas;*t;
e&&*t;
Japt ,
1612 bytesPorto de Arnauld Resposta
-4 bytes de @Shaggy
Experimente online!
fonte
05AB1E , 11 bytes
Experimente online!( aqui está uma demonstração para seqüências de linhas múltiplas)
Como funciona?
fonte
Stax , 8 bytes
Execute e depure
Explicação:
Eu também poderia usar
x%t
(comprimento de X, aparar da esquerda), que é igualmente longo, mas comporta 9 bytes .fonte
Retina , 31 bytes
Experimente online! A primeira linha deve ser o prefixo desejado, o restante é o texto de entrada. Não remove duplicatas. Seriam 25 bytes se algum espaço em branco fosse um separador válido. Explicação: Queremos listar os sufixos de prefixos válidos. O
[^ ¶]+
corresponde ao próprio sufixo. O prefixo do regexp é um lookbehind que garante que o prefixo do sufixo seja o prefixo de entrada. Como um lookbehind é avaliado da direita para a esquerda, isso começa combinando o prefixo (usando o mesmo padrão, mas dentro de()
s para capturá-lo) e, em seguida, qualquer caractere, antes de finalmente corresponder o prefixo em sua própria linha no início da entrada.fonte
¶
é um caractere de nova linha, mas não consigo descobrir por que tantos são necessários aqui.¶
garante que toda a primeira linha seja correspondida ao prefixo. O segundo¶
é necessário porque não se sabe quantas linhas intermediárias existem. Os dois últimos¶
s funcionam da mesma maneira - as classes de caracteres negados normalmente incluem novas linhas, mas não queremos isso aqui.¶
, possivelmente mais.Braquilog ,
2421 bytesExperimente online!
Poderia ter sido alguns bytes mais curto se houvesse compartilhamento de variáveis com predicados em linha.
Entrada é uma matriz com o prefixo como o primeiro elemento e o texto como o segundo elemento.
fonte
Fórmula IBM / Lotus Notes, 54 bytes
Obtém a entrada de dois campos nomeados
a
eb
. Funciona porque Formula aplicará recursivamente uma função a uma lista sem a necessidade de um@For
loop.Nenhum TIO disponível, então aqui está uma captura de tela:
fonte
APL (Dyalog Unicode) , 23 bytes SBCS
Programa completo. Solicita texto e prefixo de stdin. Imprime a lista em stdout.
Experimente online!
⎕
prompt (para texto)⊢
rendimento que (separa'\1'
de⎕
)(
…)⎕S'\1'
PCRE Pesquise e retorne a lista do grupo de captura 1 a partir do seguinte regex:⎕
prompt (para prefixo)'(\w+)\b',
preceda esta sequência (grupo de caracteres de palavra seguido por um limite de palavra)5⌽
gire os 5 primeiros caracteres até o fim;'\bPREFIX(\w+)'
fonte
C (clang) , 107 bytes
Experimente online!
Descrição:
Tem que ser clangido porque o gcc segfaults sem
#include <string.h>
devido a problemas strtok.fonte
MATL, 17 bytes
Experimente no MATL Online
Quão?
Yb
- Divida a entrada em espaços, coloque os resultados em uma matriz de células94
- código ASCII para^
caractereih
- Obtenha a entrada (diga "frac"), concatene '^' e a entrada'(.*)'h
- Empurre a corda'(.*)'
para a pilha, concatene '^ frac' e '(. *)'. Portanto, agora temos'^frac(.*)
um regex que corresponde a "frac" no início da string e captura o que vem depois.6&XX
- Execute a correspondência regexp,6&
especificando o modo 'Tokens', ou seja, os grupos de captura correspondentes são retornados em vez da correspondência inteira.Implica implicitamente os resultados.
fonte
'Tokens'
faz; bom saber!Bash + grep, 20 bytes
O prefixo é fornecido como um parâmetro da linha de comando e o texto de entrada é inserido via stdin.
Experimente online!
fonte
PowerShell 3.0,
606259 bytesPerdeu alguns bytes suprimindo a saída cmatch. Teve uma solução irregular que ganhou alguns por causar propositalmente duplicatas. Mas também lançou linhas vermelhas se não corresponder ao primeiro, mas isso não está bom agora que penso nisso. +2 bytes para corrigi-lo.
fonte
king, tals, ted, tional, tional, tionally, tioned, tioned, tious, tostratic, tures,tures,tures, tures, as
e mostra erro de índice noHe1in
exemplo. PowerShell 5.1, 6.0.2. Solução com 62 bytes está OK.JavaScript (ES6), 57 bytes
Recebe entrada na sintaxe de currying
(text)(prefix)
. Não remove duplicatas.Experimente online!
fonte
JavaScript (Node.js) ,
6459 bytes-5 bytes de @Shaggy
Experimente online!
fonte
Haskell , 51 bytes
Experimente online!
fonte
Casca , 11 bytes
Praticamente apenas uma porta da resposta Haskell :
Experimente online!
Explicação
fonte
Geléia ,
119 bytesUm link diádico que aceita o texto (uma lista de caracteres) à esquerda e o prefixo (uma lista de caracteres) à direita, que produz uma lista de listas de caracteres (os sufixos resultantes).
Experimente online!(o rodapé se une aos espaços para evitar o esmagamento implícito do programa completo)
Nota: Adicionei três casos de borda à string no OP - sem quebra de linha e nofracfracheremate no início, que não deve ser exibido e fracfracado até o final, que deve ser emitido fracitamente.
Quão?
11 byter anterior:
Também um link diádico como acima.
Experimente online!
fonte
Perl 5 com -asE,
232221 bytes (?)Experimente online!
Pode ser executado como um comando de uma linha como
perl -asE 'say/^$b(.*)/ for@F' -- -b=frac -
, ou com um nome de arquivo no lugar do passado-
.Ou a partir de um arquivo de script, digamos
perl -as -M5.010 script.pl -b=frac -
(obrigado a Brad Gilbert b2gills pelo link do TIO que demonstra isso).O código em si é de 18 bytes, adicionei 3 bytes para a
-b=
opção que atribui seu valor (a entrada do prefixo) a uma variável nomeada$b
no código. Isso parecia uma exceção ao consenso usual de "bandeiras não são contadas".-a
divide cada linha de entrada em espaços e coloca o resultado na matriz@F
.-s
é uma maneira de atalho para atribuir um argumento da linha de comando como uma variável, fornecendo um nome na linha de comando. Aqui está o argumento-b=frac
, que coloca o prefixo "frac" em uma variável$b
./^$b(.*)/
- Corresponde ao valor de$b
no início da string..*
é o que vier depois disso, até o final da palavra, e os parênteses circundantes capturam esse valor. Os valores capturados são retornados automaticamente, para serem impressos porsay
. Iterando através de palavras separadas por espaço,for @F
significa que não precisamos verificar espaços iniciais ou finais.fonte
Perl 6 , 30 bytes
Teste-o
Expandido:
fonte
p
e<(
é necessário, caso contrário, pode ser visto como o$v<…>
que é curto$v{qw '…'}
.Java 10, 94 bytes
Experimente online aqui .
Ungolfed:
fonte
Small Basic , 242 bytes
Um script que não leva entrada e saída para o
TextWindow
objetoExperimente no SmallBasic.com! Requer IE / Silverlight
fonte
Python 2 , 53 bytes
Experimente online!
fonte
Braquilog , 12 bytes
Experimente online!
Toma entrada como
[text, prefix]
através da variável de entrada e gera cada palavra através da variável de saída. Essa foi originalmente a resposta da sundar, que comecei a tentar jogar golfe depois de ler que "poderia ter sido alguns bytes mais curto se houvesse compartilhamento de variáveis com predicados em linha", o que é possível agora. Acontece que a saída do gerador economiza ainda mais bytes.Minhas duas primeiras tentativas de jogar golfe, usando recursos bastante novos do idioma:
Com as variáveis globais que se esperavam:
hA⁰&tṇ₁{∧A⁰;.c?∧}ˢ
(18 bytes)Com o metapredicado de aplicar à cabeça:
ṇ₁ᵗz{tR&h;.cR∧}ˢ
(16 bytes)E minha solução original:
Braquilog , 15 bytes
Experimente online!
Mesma E / S. Este é essencialmente um gerador de palavras com o prefixo,,
ṇ₁ʰ⟨∋a₀⟩
modificado para remover o prefixo.Um predicado muito diferente com a mesma contagem de bytes:
Braquilog , 15 bytes
Experimente online!
Mesma E / S.
fonte
Vermelho , 62 bytes
Experimente online!
fonte
Pitão ,
2120181716 bytesExperimente online!
-1 usando em
V
vez deFN
porqueV
define implicitamenteN
-2 após algumas leituras adicionais sobre as opções de corte de cadeia
-1 usando
x
para verificar a presença da substring no índice 0-1 usando replace com "" para obter o final da string
Tenho certeza de que isso poderia ser um jogo sério, mas como iniciante no Pyth, apenas fazê-lo funcionar era um bônus.
Como funciona?
fonte
Excel VBA, 86 bytes
Recebe entrada como prefixo
[A1]
e valores[B1]
e saídas para o console.fonte