Preludio:
Este desafío es diferente de "otro programa de gatos".
Hay literalmente toneladas de giros diferentes, ¿por qué no puedo tener el mío, gente?
Cosas únicas:
- No está leyendo entrada directa a salida.
- Está manipulando la cuerda de una manera que seguramente no es un gato directo.
Desafío:
Dadas 3 entradas (o una entrada, separadas como quieras) obtienes tres objetos (palabras) que vamos a sustituir por bolígrafos, piñas y manzanas en la letra y la salida.
Formato de salida ( según la letra que se encuentra en AZLyrics ):
Suponiendo (reemplace los valores con corchetes por estos):
- A, B, C con palabras de entrada (ej.
apple
) - UA, UB, UC con palabras de entrada con primeras letras en mayúscula (si no es mayúscula ya) (ej.
Apple
) - FUA, FUB, FUC con las primeras letras mayúsculas, respectivamente: (ej.
A
) - a / an con artículo correspondiente a la primera letra vocal / consonante (ej.
an
)
[FUA] - [FUB] - [FUC] - [FUA] Tengo [a / an] [A], tengo [a / an] [C]. Uh! [UC] - [UA]! Tengo [a / an] [A], tengo [a / an] [B]. Uh! [UB] - [UA]! [UC] - [UA], [UB] - [UA]. Uh! [UA] - [UB] - [UC] - [UA]. [UA] - [UB] - [UC] - [UA]
Caso de prueba:
Pruebe con pen
, pineapple
y apple
:
P-P-A-P
I have a pen, I have an apple.
Uh! Apple-Pen!
I have a pen, I have a pineapple.
Uh! Pineapple-Pen!
Apple-Pen, Pineapple-Pen.
Uh! Pen-Pineapple-Apple-Pen.
Pen-Pineapple-Apple-Pen!
Reglas:
- Si la entrada no comienza con una letra, suponga consonante (
a
) y primero en mayúscula el primer carácter (ej.123 -> 1
). - code-golf , ¡gana la menor cantidad de personajes!
Respuestas:
JavaScript (ES6),
217...187183 bytesToma la entrada como una matriz de 3 cadenas, como
['pen', 'pineapple', 'apple']
.Ejemplos
Mostrar fragmento de código
fuente
'golf', 'puzzle', 'code'
En mi humilde opiniónPerl 6 , 165 bytes
Utiliza el mismo enfoque que la respuesta JS de Arnauld .
fuente
Lote,
494490 bytesExplicación: La
:h
subrutina maneja la líneaI have a %, I have a %.
Los%
s son sustituidos a partir de los argumentos de línea de comandos apropiadas, y luego las cuerdasa a
,a e
,a i
,a o
ya u
son reemplazar con el equivalentean
de versión. La:u
subrutina maneja las otras líneas; toma las palabras de parámetro y mayúsculas todas las primeras letras. (Un espacio adicional tiene el prefijo para permitir que la primera palabra esté en mayúscula, pero se elimina en la salida.) Para manejar palabras después de-
s, se pasan espacios adicionales, pero también se eliminan en la salida. La:u
subrutina también se usa para la primera línea, aunque extraer las iniciales es incómodo.fuente
Python 3.6 -
351287286 bytesNo hay nada lujoso aquí excepto hacer uso de la nueva característica de formato literal de cadena.
Nota : la versión es
3.6
donde se introdujo el formato literal de cadena . Por lo tanto, esto no funcionará en versiones anteriores.fuente
"
solo ahorrará 2 bytes, pero\n
agregará 12 bytes.Lua,
615607 bytesGuardado 8 bytes gracias a [un usuario anónimo]
Uf, larga. Pruébalo aquí.
Estoy 100% seguro de que esto se puede acortar. Solo soy vago ...
Básicamente usa mucha manipulación de cadenas. Hay 3 funciones principales y una variable:
d(string)
: devuelve un if si la cadena es vocal (AEIOUaeiou
), de lo contrario devuelve unz(string)
: devuelve la primera letra en mayúsculaz(s) .. s:sub(2)
: devuelve la palabra completa, pero la primera letra mayúsculaf
: la palabra final (en una variable, para guardar algunos bytes). En su caso de prueba, lo seríaPen-Pineapple-Apple-Pen
.Entrada:
pen
,pineapple
,apple
Salida:
fuente
Python 2 , 283 bytes
Pruébalo en línea!
fuente