¿Alguien recuerda a Boaty ?
Podrías hacer cualquier vieja palabra, ¿verdad?
- Escribe una función para convertir una cadena en Somethingy McSomethingface.
- Debe aceptar una cadena como entrada. Ignora el caso de la entrada.
- Si la palabra termina en 'y', su función no debería agregar una 'y' adicional a la primera instancia, sino que debería eliminarla en la segunda instancia.
- Si la palabra termina en 'ey', no debería tener una 'y' adicional agregada en la primera instancia, pero debería eliminar ambas en la segunda instancia.
- La salida solo debe tener letras mayúsculas en el primer carácter, la 'M' de 'Mc' y el primer carácter después de 'Mc'.
- solo necesita trabajar con cadenas de 3 o más caracteres.
Ejemplos:
boat => Boaty McBoatface
Face => Facey McFaceface
DOG => Dogy McDogface
Family => Family McFamilface
Lady => Lady McLadface
Donkey => Donkey McDonkface
Player => Playery McPlayerface
yyy => Yyy McYyface
DJ Grand Master Flash => Dj grand master flashy McDj grand master flashface
' y'
y' '
Respuestas:
Stax , 26 bytes
Ejecutar y depurarlo
Ejecute este
fuente
V , 27
2830bytesPruébalo en línea!
<Esc>
representa0x1b
Golfé dos bytes después de saber que no necesitábamos admitir entradas con menos de 3 caracteres.
1 byte guardado gracias a @DJMcMayhem al trabajar en la segunda línea antes de la primera, eliminando así el
G
La entrada está en el búfer. El programa comienza convirtiendo todo a minúsculas
V
selecciona la línea y lau
pone en minúscula~
alterna el caso del primer caracter (convirtiéndolo a mayúsculas)y
Ù
duplica esta línea arriba, dejando el cursor en la línea inferioró
y reemplazae¿y$
, forma comprimida dee\?y$
(opcionale
yy
a al final de la línea), con nada (sucede en la segunda línea)H
va a la primera líneaó
reemplazay$
(y
al final de la línea) con nada en la primera líneaÁ
agregay
a al final de la primera líneaJ
y une la última línea con la primera con un espacio en el medio, y el cursor se mueve a este espacioa
agregaMc
(<Esc>
vuelve al modo normal)A
finalmente, se agregaface
al final de la líneafuente
Python, 144 bytes
Pruébalo en línea aquí
fuente
f("Face")
no cumple con los casos de prueba actuales ( TIO ).Excel,
204144137165 bytesDesde adentro hacia afuera:
Respuesta anterior, creando todos los bits por separado y luego concatenando (176 bytes). No maneja casos delimitados por espacios correctamente.
fuente
PROPER(A1)
no es válido (vea elDJ Grand Master Flash
caso de entrada), el mejor reemplazo que pude encontrar mientras trabajaba en mi solución VBA fueLEFT(UPPER(A1))&MID(LOWER(A1),2,LEN(A1))
: avíseme si termina jugando golf.Perl 6 ,
423735 bytesPruébalo en línea!
fuente
C # (.NET Core) ,
122108139175180179154 bytesMuchas gracias Lee!
Pruébalo en línea!
C # (.NET Core, con LINQ), 152 bytes
Pruébalo en línea!
fuente
SOGL V0.12 , 38 bytes
Pruébalo aquí!
fuente
Ruby ,
6149 bytesPruébalo en línea!
Guardado 12 bytes dulces gracias a @MartinEnder:
fuente
=~
y construir toda la cadena en lugar de usarsub
. La interpolación de cadenas se puede usar sin corchetes si la variable es una variable global, de instancia o de clase.-p
bandera y usandosub
: tio.run/…Python 3 , 80 bytes
Ávido lector desde hace mucho tiempo, ¡mi primera presentación por fin!
Pruébalo en línea
fuente
Retina , 29 bytes
Pruébalo en línea!
fuente
Python 2 ,
8892 bytesPruébalo en línea!
fuente
Java 8,
121112107106 bytes-1 byte gracias a @ OliverGrégoire .
Explicación:
Pruébalo en línea.
fuente
~32
->95
por 1 byte guardadoJavaScript,
1039694 bytesPrimer paso bastante ingenuo en esto.
Pruébalo en línea
fuente
${s=s[0].toUpperCase()+s.slice(1).toLowerCase().replace(/y$/,``)}y Mc${s.replace(/e?y$/,``)}face
${s=s[0].toUpperCase()+s.slice(1).toLowerCase().replace(/y$/,'')}y Mc${s.replace(/e$/,``)}face
Donkey
y el segundoFace
.vim,
3534 bytes<ESC>
es0x1b
Sin golf
Pruébalo en línea!
Guardado 1 byte gracias a DJMcMayhem
fuente
Y
lugar deyy
Perl 5
-p
,4739 bytesGuarde 6 bytes con las sugerencias de @ OlegV.Volkov, 1 con @ mwellnhof y 1 por mi cuenta
Pruébalo en línea!
fuente
ucfirst
:$_=lc^$";
$_=s/y$//r."y Mc".s/e?y$//r.face
es un byte más corto./y$|$/
->/y?$/
C ++ 14 (g ++),
181171148147134 bytesTenga en cuenta que clang no compilará esto.
El crédito es para Kevin Cruijssen y Olivier Grégoire por el
&95
truco.Gracias a Chris por jugar al golf 11 bytes.
Pruébelo en línea aquí .
Versión sin golf:
fuente
s[0]=s[0]&~32;
as[0]&=~32;
;s[i++]=s[i]|32;
as[i++]|=32
; yint i=1,n=s.length()-1,b;
lo que sólo necesita 1int
.#include<string>
n
y simplemente usando el valori
después del ciclo while. Pruébalo en línea!V ,
383632 bytes-5 bytes gracias a @Cows quack
<esc>
es un carácter de escape literal y[^
está codificado como\x84
Pruébalo en línea!
fuente
gu$
puede convertirseVu
[^
es un acceso directo regex (ver aquí ), puede usar 0x84 en lugar de[^
guardar un byte. Del mismo modo,\?
se puede simplificar<M-?>
para guardar otro byte. Y$a
=>A
05AB1E , 30 bytes
Pruébalo en línea! o como un conjunto de pruebas
fuente
Python 3 ,
117114bytes-3 bytes gracias a Dead Possum
Pruébalo en línea!
fuente
[s,s[:-1],'',s[:-2]
se puede cambiar a0
para guardar 1 byte.'y'*1
*1
no es necesario. 2 bytes másreturn
conprint
es 1 byte más corto.JavaScript (Node.js) , 87 bytes
Pruébalo en línea!
fuente
Buffer
, tendré que tratar de recordarlo para futuros desafíos. Lo bajé a 87 bytes para ti.K4 ,
746968 bytesSolución:
Ejemplos:
Explicación:
Averigua si los últimos caracteres son iguales
"ey"
, convierte el resultado a base-2 para que podamos ignorar las palabras que terminan"e?"
. Indice en una lista de números de caracteres para recortar.Logré eliminar 5 bytes de mi código para determinar si los dos últimos caracteres,
"ey"
pero luchan por mejorarlo ...Prima:
Puerto de 67 bytes en K (oK) :
Pruébalo en línea!
fuente
Ruby , 69 bytes
Explicación:
Pruébalo en línea!
fuente
s.capitalize
reemplaza el anteriors
? Si no es así, hace/e?y$/
manejar un caso de prueba que termina enY
,EY
oEy
correctamente?s.capitalize
vss.capitalize!
(diferentes funciones).s.capitalize!
clobbers la versión anterior.s.capitalize!
. Nunca programado en Ruby, pero agregar una marca de explicación para reemplazar el valor anterior es bastante bueno. +1 de mi parteJstx , 27 bytes
Explicación
Pruébalo en línea!
fuente
Rojo ,
143142 bytesPruébalo en línea!
Sin golf:
fuente
PHP: 132
Explicación:
fuente
Gelatina ,
77757473 bytesPruébalo en línea!
¡Cualquier sugerencia de golf es bienvenida (y deseada)!
fuente
Pyth
3634 bytesPruébalo en línea!
Explicación:
fuente
rz3
arz4
para que esto funcione correctamente para el último caso de prueba.Elixir ,
112110107106 bytesahora tan corto como java
Pruébalo en línea!
Explicación:
Obtiene
x
con el primer carácter en mayúscula y todos los demás en minúscula.Evalúe el código e insértelo en la cadena.
Concatena x con
y
si no termina cony
(es decir, no coincide con la expresión regulary$
).Elimina el arrastre
ey
y el arrastrey
.fuente
PHP , 45
46bytesPruébalo en línea!
fuente
boAty
. (Tapas incorrectas, 'y' no eliminado).Pyth,
6059 bytes SBCSBanco de pruebas
Ellos no se muestran aquí, pero tres bytes,
Traducción de Python 3:\x9c
,\x82
, y\x8c
están en la cadena de empaquetado entres
y÷
. Tenga la seguridad, el enlace los incluye.fuente