Já imaginou criar hashtags legais para o twitter, como #brexit ou #brangelina ? este golfe é para você.
Escreva um programa que aceite duas seqüências de caracteres A e B como entrada e as mescla de acordo com o seguinte algoritmo:
- deixar que
n
seja o número de grupos de vogais em A (por exemplo,britain
tem 2 vogais grupos:i
na posição 3 eai
na posição 5).- se n = 1: truncar A começando na sua primeira posição de grupo de vogais (exemplo:
bill
=>b
) - se n> 1: truncar A começando na sua
n-1
posição do grupo de vogais (exemplo:programming
=>progr
,britain
=>br
)
- se n = 1: truncar A começando na sua primeira posição de grupo de vogais (exemplo:
- remova todas as consoantes no início de B (
jennifer
=>ennifer
) - concatenar o A & B modificado
As vogais são aeiou
; consoantes são bcdfghjklmnpqrstvwxyz
.
Entrada
Você pode assumir que as seqüências de entrada são minúsculas e contêm pelo menos uma vogal e uma consoante.
Exemplos
brad + angelina => brangelina
britain + exit => brexit
ben + jennifer => bennifer
brangelina + exit => brangelexit
bill + hillary => billary
angelina + brad => angelad
programming + puzzle => progruzzle
code + golf => colf
out + go => o
donald trump
.Django + Angular = Djular
Respostas:
Ruby,
444340 + 1 = 41 bytes+1 byte para
-p
sinalizador. Pega entrada separada por espaço no STDIN.-1 byte graças a Martin Ender
-2 bytes graças a histocrat
Experimente online!
GNU sed,
3937 + 1 = 38 bytes+1 byte para
-E
sinalizador. Pega entrada separada por espaço no STDIN.-1 byte graças a Martin Ender
Experimente online!
Não postar isso como uma resposta separada, porque é literalmente a mesma solução.
fonte
[^aeiou]
como uma sub-expressão:/([aeiou]+([^aeiou]*)){,2} \g<2>/
ruby -e "..."
. Por isso éruby -pe "..."
, portanto, apenas adiciona um byte.MATL,
3130 bytesExperimente Online
Explicação
fonte
JavaScript (ES6),
817372 bytesGuardado 8 bytes graças a @Jordan, 1 graças a @DavidConrad
Mesmo
.match
retornando uma matriz,array+array
retorna uma string com o conteúdo das matrizes concatenadas (ou seja,[0]+[1]
retorna"01"
).Snippet de teste
Mostrar snippet de código
A excelente solução Ruby da Jordan teria 53 bytes em JS:
fonte
(a,b)=>
paraa=>b=>
economizar 1 byte.Geléia ,
2322 bytesTryItOnline
Quão?
fonte
PowerShell v2 +, 76 bytes
Aparentemente, este é um regex popular ... ;-)
Usa o
-replace
operador para retirar as peças apropriadas e concatena os resultados juntos. Adiciona um$
ao primeiro para garantir que puxamos o final da corda e adiciona um^
ao segundo para garantir que puxamos a frente da corda.fonte
Retina , 35 bytes
Experimente online! (A primeira linha ativa um conjunto de testes separado por avanço de linha.)
Simplesmente remove todas as correspondências do regex na primeira linha.
fonte
/^((\(\g<1>\))*)$/
em Ruby.Goma de canela, 23 bytes
Experimente online.
Explicação
Isso descompacta para
d([aeiou]+[^aeiou]*)([aeiou]+[^aeiou]*)? [^aeiou]*
, o qued
exclui qualquer coisa que corresponda a esse regex. (Observe que o golfista da Jordâniad([aeiou]+[^aeiou]*){,2} [^aeiou]*
compacta até 24 bytes devido à falta de elementos repetidos para compactar.)fonte
d[aeiou]+[^aeiou]*[aeiou]*[^aeiou]* [^aeiou]*
mais curto?PHP, 95 bytes
com preg_match em vez de preg_filter 110 bytes
fonte
+
vez de{1,2}
.$v=aeiou;
para economizar mais 3.Lua, 66 bytes
fonte
Perl 5, 39 bytes
38, mais 1 para em
-pe
vez de-e
Ponta do chapéu.
fonte
Python 2, 139 bytes
Este foi difícil.
Confira em repl.it
fonte
Lit , 65 bytes
Esta é basicamente uma porta da resposta JavaScript acima, na minha linguagem de programação funcional Lisp-ish.
Exemplo de uso:
Ainda não há intérprete online. Eu vou fornecer um em breve. Não será difícil, minha linguagem está escrita em JavaScript.
Em vez disso, essa solução de quebra-cabeça é implementada como um exemplo de trabalho para o meu idioma. Pode ser executado com o seguinte comando:
fonte
Haskell,
111108 bytesEssa solução não-regex ficou mais tempo do que o esperado. Idone de qualquer maneira.
fonte
Jq 1.5 , 45 bytes
Nada de especial, apenas uma porta da solução perl do msh210 para o PCRE da jq.
Experimente online!
fonte
Japonês , 18 bytes
Experimente online!
Porta direta da solução JS curta, que por sua vez é a porta da solução Ruby da Jordânia .
Como funciona
fonte