Nota: el título fue mal escrito intencionalmente.
Dada una cadena s, intercambie la primera vocal de cada 2 palabras. Para este desafío, y se considera una vocal.
Por ejemplo, dada una entrada de "gran día señor":
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"
Cuando hay corridas de vocales de diferentes longitudes, todavía intercambias las corridas completas. Cuando una palabra tiene más de una vocal, solo intercambia la primera. Cuando la primera o segunda palabra de un par de palabras no tiene vocal, entonces no intercambia las vocales por esas palabras.
Puede suponer que la entrada solo consiste en un caso de letras alfabéticas y el espacio literal u otro delimitador constante.
Métodos estándar de E / S, se aplican las lagunas estándar. Lo que sea líder / final está bien.
Casos de prueba:
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
convertirse enppcg is awesome
oppcg as iwesome
?this is a long test case in case you could not tell
debería serthis is o lang tast cese an cise ou cyould net toll
, ya que la vocal se ejecutayou
you
se intercambiaría.Respuestas:
V ,
42, 41 bytesPruébalo en línea!
Hexdump:
Explicación:
Esto pondrá todos los grupos de dos palabras en su propia línea, por ejemplo:
Ahora ejecutamos algunos sofisticados regex-magic:
fuente
Japt ,
3937 bytesDijeron que sería feo, pero no escuché ... y fue:
¡Pruébalo en línea!
Explicación
fuente
JavaScript (ES6),
6210698101 bytesMostrar fragmento de código
fuente
Retina , 65 bytes
Pruébalo en línea! Incluye casos de prueba. Quería usar una referencia de grupo condicional, pero no pude hacerlo funcionar en 66 bytes, y mucho menos en 65 o menos.
fuente
Retina , 50 bytes
Pruébalo en línea!
−2 bytes gracias a Martin.
¶
es nueva línea). Esto nos permite usar.*
dentro de un par de palabras.fuente
[aeiouy]+
pero no pude obtener algo económico.[aeiouy]
duplicación, pero no puedo jugar golf. Creo que podría funcionar bien con su sugerencia: tio.run/…Python 2 , 148 bytes
Pruébalo en línea!
¡Code Golfing se está volviendo adictivo!
fuente
Haskell ,
177173171169 bytesPruébalo en línea!
Esta es una reducción directa de la siguiente solución ingenua, por lo que debería haber algo mucho mejor por aquí:
fuente
Java (OpenJDK 8) ,
363304 + 25 bytes-34 bytes gracias a @KevinCruijssen
Golfizado:
Pruébalo en línea!
Sin golf:
fuente
(l)->
al->
). Puede agregarimport java.util.regex.*;
al conteo de bytes y eliminar todos los demásjava.util.regex.
. Puede eliminar el paréntesis en la expresión regular ("([aeiouy]+)"
->"[aeiouy]+"
). Y puede cambiarString[]s=l.split(" ");
aString s[]=l.split(" "),a,b;
, luego puede eliminar elString
interior del ciclo for; Y puedes cambiarString.join(" ",s);
al.join(" ",s);
. Aquí está todo combinado. [ 329 bytes ]Perl, 58 bytes
Código de 57 bytes + 1 para
-p
.-2 bytes gracias a @Dada !
Pruébalo en línea!
fuente
?
y almacenando([aeiouy]+)
en una variable: ¡ Pruébelo en línea!Rubí, 87 + 1 = 88 bytes
Usa la
-p
bandera.Pruébalo en línea!
fuente
Python 3 ,
198196192 bytesif(m and n)
a si myn eliminó r no deseada para la cadena de expresiones regulares, indexe i comenzando desde 1 en lugar de 0Pruébalo en línea!
fuente
i+1<len(a)
ai<=len(a)
y el tercero cambiandoif(m and n)
aif m and n
.i+1<len(a)
no se puede cambiar ai<=len(a)
o de lo contrario se tratará de evaluara[j]
es decir,a[i+1]
parai=len(a)
y la causaindex out of range
de error:i<len(a)+1
, ¡whoops!