fundo
Esta é a primeira parte de um campo de golfe de 3 buracos no processamento de texto. A idéia geral é que, se você pegar um texto de entrada e direcioná-lo através das soluções para os três desafios (com uma pequena quantidade de código de cola), ele cuspirá um parágrafo lindamente formatado. Neste primeiro desafio, sua tarefa é hifenizar um pedaço de texto usando determinados padrões de hifenização.
Entrada
Seu programa deve receber duas entradas de sequência: um pedaço de texto e uma lista de padrões de hifenização. A primeira entrada é simplesmente uma sequência não vazia de caracteres e espaços ASCII imprimíveis; não conterá quebras de linha ou tildes ~
. A segunda entrada é uma lista de palavras delimitadas por vírgulas, que consistem em sílabas delimitadas por til de caracteres ASCII em minúsculas. Um exemplo é ex~cel~lent,pro~gram~ming,abil~i~ties
.
Resultado
Seu programa deve modificar a primeira entrada da seguinte maneira. Qualquer palavra (substring máximo de caracteres ASCII alfabéticos) cuja versão em minúscula hifenizada for encontrada na segunda entrada deve ser substituída por essa versão hifenizada, mas seu caso deve ser preservado. Com a lista de exemplos acima, se o texto contiver a palavra Excellent
, ela será substituída por Ex~cel~lent
; no entanto, nãoExcellently
deve ser modificado. Sua saída deve ser essa string modificada.
Regras detalhadas e pontuação
Você pode assumir o seguinte sobre as entradas:
- A primeira entrada não contém espaços, nem espaços iniciais, finais ou repetidos. Não está vazio.
- A segunda entrada contém pelo menos uma palavra e cada palavra contém pelo menos duas sílabas. Cada sílaba não está vazia.
- A segunda entrada não contém uma palavra que ocorra como uma sílaba em outra palavra.
Você pode alterar a ordem das duas entradas, se desejado, e, opcionalmente, adicionar uma nova linha à saída.
Você pode escrever uma função ou um programa completo. A contagem de bytes mais baixa vence e as brechas padrão não são permitidas.
Casos de teste
Eles estão listados no formato 1st input [newline] 2nd input [newline] output
.
Excellent programming abilities, you work excellently!
ex~cel~lent,pro~gram~ming,abil~i~ties
Ex~cel~lent pro~gram~ming abil~i~ties, you work excellently!
Superman (sometimes incorrectly spelled "Super-man") is super #&%@ing strong.
su~per,some~times,in~cor~rectly,spell~ing
Superman (some~times in~cor~rectly spelled "Su~per-man") is su~per #&%@ing strong.
IncONsISTent caPItalizATIon!
in~con~sis~tent,cap~i~tal~iza~tion
In~cON~sIS~Tent caP~I~tal~izA~TIon!
Such short words.
awk~ward
Such short words.
Digits123 are456cool789.
dig~its,dig~i~tal,are~cool
Dig~its123 are456cool789.
magic magic
ma~gic
ma~gic ma~gic
Qualquer possível erro de hifenização neste desafio é devido a essa ferramenta de hifenização .
fonte
#programming!
ainda será afetada por uma segunda entrada depro~gram~ming
)? Os números também não contam (ou seja, são permitidos apenas caracteres alfabéticos)?Respostas:
Pip,
6054 bytesRepositório do GitHub para Pip
Recebe entradas como argumentos da linha de comando (que requer aspas ao redor da entrada 1, supondo que contenha espaços). Nenhuma nova linha final é impressa (adicione um
x
no final do programa para adicionar um).Um pouco não-destruído, com comentários:
Exemplo de execução:
fonte
Retina , 88 bytes
Para fins de contagem, cada linha entra em um arquivo separado,
\n
é substituída por caracteres de nova linha reais e<empty>
é um arquivo vazio. Por conveniência, você pode executar o código acima a partir de um único arquivo (onde<empty>
há uma linha vazia) se você usar o-s
sinalizador de intérprete.fonte
Javascript ES6,
117141 caracteresTeste:
fonte
Javascript (ES6),
173169Pesquisa e Regex Básica
Violino
Edit: Corrigido bug para o caso de teste
magic magic
,ma~gic
fonte
f("magic magic", "ma~gic")
retorna"ma~gic magic"
Perl, 146
Apenas uma primeira tentativa, muitas coisas podem ser encurtadas - continuará amanhã!
fonte