Nota: o título foi escrito incorretamente intencionalmente.
Dada uma sequência s, troque as primeiras execuções de vogal a cada 2 palavras. Para esse desafio, y é considerado uma vogal.
Por exemplo, dada uma entrada de "ótimo dia senhor":
1. Input: "great day sir"
2. Identify pairs of words: "[great day] [sir]" (No word for sir to pair with)
3. Identify the first vowel runs in each word: "[gr[ea]t d[ay]] [s[i]r]"
4. Swap the vowel runs in each pair: "[gr[ay]t d[ea]] [s[i]r]"
5. Return/print: "grayt dea sir"
Quando há trechos de vogal de diferentes comprimentos, você ainda troca os trechos inteiros. Quando uma palavra tem mais de uma vogal sendo executada, você ainda troca a primeira. Quando a primeira ou a segunda palavra de um par de palavras não possui uma vogal, você não troca as vogais por essas palavras.
Você pode assumir que a entrada consiste apenas em um caso de letras alfabéticas e no espaço literal ou outro delimitador constante.
Métodos padrão de E / S, brechas padrão se aplicam. Seja qual for o líder / seguidor, tudo bem.
Casos de teste:
Input -> Output
"great day sir" -> "grayt dea sir"
"ppcg is the best" -> "ppcg is the best" (When there is no vowel to swap, don't swap vowels."
"this is a test case" -> "this is e tast case"
"loooooooooooooong word" -> "long woooooooooooooord"
"great night" -> "grit neaght"
"anything goes" -> "oenything gas"
"qwrtpsdfghjklzxcvbnm aaaaaaaa hi there" -> "qwrtpsdfghjklzxcvbnm aaaaaaaa he thire"
"this is a long test case in case you could not tell" -> "this is o lang tast cese an cise ou cyould net toll"
ppcg is awesome
se tornarppcg is awesome
ouppcg as iwesome
?this is a long test case in case you could not tell
deveria serthis is o lang tast cese an cise ou cyould net toll
, já que a vogal é executadayou
eou
seria trocada.Respostas:
V ,
42, 41 bytesExperimente online!
Hexdump:
Explicação:
Isso colocará todos os grupos de duas palavras em sua própria linha, por exemplo:
Agora, executamos algumas regex-magic extravagantes:
fonte
Japt ,
3937 bytesEles disseram que seria feio, mas eu não ouvi ... e foi:
Teste online!
Explicação
fonte
JavaScript (ES6),
6210698101 bytesMostrar snippet de código
fonte
Retina , 65 bytes
Experimente online! Inclui casos de teste. Eu queria usar uma referência de grupo condicional, mas não consegui fazê-la funcionar em 66 bytes, muito menos em 65 ou menos.
fonte
Retina , 50 bytes
Experimente online!
-2 bytes graças a Martin.
¶
é nova linha). Isso nos permite usar.*
dentro de um par de palavras.fonte
[aeiouy]+
mas não consegui algo econômico.[aeiouy]
duplicação, mas não consigo reduzi-la. Eu acho que poderia funcionar muito bem com a sua sugestão: tio.run/...Python 2 , 148 bytes
Experimente online!
Código Golfing está ficando viciante!
fonte
Haskell ,
177173171169 bytesExperimente online!
Isso é um encurtamento direto da seguinte solução ingênua, portanto deve haver algo muito melhor por aqui:
fonte
Java (OpenJDK 8) ,
363304 + 25 bytes-34 bytes graças a @KevinCruijssen
Golfe:
Experimente online!
Ungolfed:
fonte
(l)->
paral->
). Você pode adicionarimport java.util.regex.*;
à contagem de bytes e remover todos os outrosjava.util.regex.
. Você pode remover o parêntese no regex ("([aeiouy]+)"
->"[aeiouy]+"
). E você pode mudarString[]s=l.split(" ");
paraString s[]=l.split(" "),a,b;
, e remover oString
interior do loop for; E você pode mudarString.join(" ",s);
paral.join(" ",s);
. Aqui está tudo combinado. [ 329 bytes ]Perl, 58 bytes
Código de 57 bytes + 1 para
-p
.-2 bytes graças a @Dada !
Experimente online!
fonte
?
e armazenando([aeiouy]+)
em uma variável: Experimente online!Ruby, 87 + 1 = 88 bytes
Usa a
-p
bandeira.Experimente online!
fonte
Python 3 ,
198196192 bytesif(m and n)
se m e n & removeu r indesejado da string regex, indexe i a partir de 1 em vez de 0Experimente online!
fonte
i+1<len(a)
parai<=len(a)
e o terceiro alterandoif(m and n)
paraif m and n
.i+1<len(a)
não pode ser alterado para,i<=len(a)
ou tentará avaliar,a[j]
ie,a[i+1]
pori=len(a)
e causarindex out of range
erro:i<len(a)+1
, ups!