¿Alguna vez te ha gustado crear hashtags geniales de Twitter como #brexit o #brangelina ? Este golf es para ti.
Escriba un programa que acepte dos cadenas A y B como entrada y las combine de acuerdo con el siguiente algoritmo:
- Sea
n
el número de grupos de vocales en A (por ejemplo,britain
tiene 2 grupos de vocales:i
en la posición 3 yai
en la posición 5).- si n = 1: truncar A comenzando en su primera posición de grupo vocal (ejemplo:
bill
=>b
) - si n> 1: truncar A comenzando en su
n-1
posición del grupo de vocales th (ejemplo:programming
=>progr
,britain
=>br
)
- si n = 1: truncar A comenzando en su primera posición de grupo vocal (ejemplo:
- eliminar todas las consonantes al comienzo de B (
jennifer
=>ennifer
) - concatenar el A y B modificado
Las vocales son aeiou
; consonantes son bcdfghjklmnpqrstvwxyz
.
Entrada
Puede suponer que las cadenas de entrada son minúsculas y contienen al menos una vocal y una consonante.
Ejemplos
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
Respuestas:
Ruby,
444340 + 1 = 41 bytes+1 byte para
-p
bandera. Toma entradas separadas por espacios en STDIN.-1 byte gracias a Martin Ender
-2 bytes gracias a histocrat
Pruébalo en línea!
GNU sed,
3937 + 1 = 38 bytes+1 byte para
-E
bandera. Toma entradas separadas por espacios en STDIN.-1 byte gracias a Martin Ender
Pruébalo en línea!
No publicar esto como una respuesta separada porque es literalmente la misma solución.
fuente
[^aeiou]
como una subexpresión:/([aeiou]+([^aeiou]*)){,2} \g<2>/
ruby -e "..."
. Para esto esruby -pe "..."
así, solo agrega un byte.MATL,
3130 bytesPruébalo en línea
Explicación
fuente
JavaScript (ES6),
817372 bytesGuardado 8 bytes gracias a @Jordan, 1 gracias a @DavidConrad
Aunque
.match
devuelve una matriz,array+array
devuelve una cadena con el contenido de las matrices concatenadas (es decir,[0]+[1]
devuelve"01"
).Fragmento de prueba
Mostrar fragmento de código
La excelente solución Ruby de Jordan sería de 53 bytes en JS:
fuente
(a,b)=>
para guardara=>b=>
1 byte.Jalea ,
2322 bytesTryItOnline
¿Cómo?
fuente
PowerShell v2 +, 76 bytes
Aparentemente esta es una expresión regular popular ... ;-)
Utiliza el
-replace
operador para extraer las piezas apropiadas, luego concatena los resultados juntos. Agrega una$
a la primera para asegurarnos de que tiramos del extremo de la cuerda, y agrega una^
a la segunda para asegurar que tiramos del frente de la cuerda.fuente
Retina , 35 bytes
Pruébalo en línea! (La primera línea habilita un conjunto de pruebas separado por salto de línea).
Simplemente elimina todas las coincidencias de la expresión regular en la primera línea.
fuente
/^((\(\g<1>\))*)$/
en Ruby.Chicle de canela, 23 bytes
Pruébalo en línea.
Explicación
Esto descomprime a
d([aeiou]+[^aeiou]*)([aeiou]+[^aeiou]*)? [^aeiou]*
, qued
elige cualquier cosa que coincida con esa expresión regular. (Tenga en cuenta que el golfista de Jordand([aeiou]+[^aeiou]*){,2} [^aeiou]*
comprime a 24 bytes debido a la falta de elementos repetidos para comprimir).fuente
d[aeiou]+[^aeiou]*[aeiou]*[^aeiou]* [^aeiou]*
Sería más corto?PHP, 95 bytes
con preg_match en lugar de preg_filter 110 Bytes
fuente
+
lugar de{1,2}
.$v=aeiou;
para guardar 3 más.Lua, 66 bytes
fuente
Perl 5, 39 bytes
38, más 1 para en
-pe
lugar de-e
Punta de sombrero.
fuente
Python 2, 139 bytes
Este fue duro.
Compruébalo en repl.it
fuente
Lithp , 65 bytes
Esto es básicamente un puerto de la respuesta de JavaScript anterior, en mi lenguaje de programación funcional Lisp-ish.
Ejemplo de uso:
No hay intérprete en línea todavía. Proporcionaré uno pronto. No será difícil, mi idioma está escrito en JavaScript.
En cambio, esta solución de rompecabezas se implementa como un ejemplo de trabajo para mi idioma. Se puede ejecutar con el siguiente comando:
fuente
Haskell,
111108bytesEsta solución no regex resultó más larga de lo esperado. Ideone de todos modos.
fuente
Jq 1.5 , 45 bytes
Nada especial, solo un puerto de la solución perl de msh210 para PCRE de jq.
Pruébalo en línea!
fuente
Japt , 18 bytes
Pruébalo en línea!
Puerto directo de la solución JS corta, que a su vez es el puerto de la solución Ruby de Jordan .
Cómo funciona
fuente