El padre fundador del rock and roll, Chuck Berry, falleció hoy tristemente.
Considere el coro de su famosa canción " Johnny B. Goode ":
Go, go
Go Johnny go, go
Go Johnny go, go
Go Johnny go, go
Go Johnny go, go
Johnny B. Goode
(Hay otras formas en que se ha puntuado, pero lo anterior servirá para los propósitos del desafío).
Desafío
Dada una cadena de letras z minúscula no vacía, genera el coro de "Johnny B. Goode" con todas las instancias Go
o go
reemplazadas por la cadena de entrada, en mayúscula de la misma manera.
Una nueva línea final puede seguir opcionalmente. Nada más en el coro debería cambiar.
Por ejemplo , si la entrada es
code
la salida debe ser exactamenteCode, code Code Johnny code, code Code Johnny code, code Code Johnny code, code Code Johnny code, code Johnny B. Codeode
opcionalmente seguido por una nueva línea.
Tenga en cuenta que la mayúscula de todas las palabras coincide con el coro original, y (a pesar de la falta de ritmo) se reemplaza el Go
in Goode
, así como las palabras individuales Go
y go
.
El código más corto en bytes gana.
Casos de prueba
"input"
output
"go"
Go, go
Go Johnny go, go
Go Johnny go, go
Go Johnny go, go
Go Johnny go, go
Johnny B. Goode
"code"
Code, code
Code Johnny code, code
Code Johnny code, code
Code Johnny code, code
Code Johnny code, code
Johnny B. Codeode
"a"
A, a
A Johnny a, a
A Johnny a, a
A Johnny a, a
A Johnny a, a
Johnny B. Aode
"johnny"
Johnny, johnny
Johnny Johnny johnny, johnny
Johnny Johnny johnny, johnny
Johnny Johnny johnny, johnny
Johnny Johnny johnny, johnny
Johnny B. Johnnyode
"fantastic"
Fantastic, fantastic
Fantastic Johnny fantastic, fantastic
Fantastic Johnny fantastic, fantastic
Fantastic Johnny fantastic, fantastic
Fantastic Johnny fantastic, fantastic
Johnny B. Fantasticode
an
,c
,cath
Respuestas:
Go, 123 bytes
¡Ve, Johnny, ve !
Pruébalo en línea!
fuente
90
bytes.VIM,
5449 pulsaciones de teclas (guardado 1 pulsación de tecla de Kritixi Lithos )Comience con la palabra en una línea en un archivo con el cursor en el primer carácter, luego esto lo reemplazará todo con el texto Explicación
Pruébalo en línea! (¡Gracias DJMcMayhem !)
fuente
Y
lugar deyy
y tal vez incluso enG
lugar de2j
<CR>
lugar de<esc>o
hD
funciona en lugar dediw
Pure Bash,
6976 bytesPruébalo en línea!
fuente
code
minúsculas, no obtiene la capitalización requerida.05AB1E , 37 bytes
Pruébalo en línea!
Explicación
fuente
Lote, 207 bytes
fuente
JavaScript, 98
Abusa de la serialización de matriz a cadena para crear comas. Construye una matriz de la forma:
Y lo concatena a la cadena del formulario
", go\nJohnny B. Goode"
:fuente
JavaScript (ES6),
10410199 bytesVersión previa:
Cómo funciona:
Es una función anónima que toma la entrada como parámetro
i
Define una variable
u
como entradai
con la primera letra en mayúscula (tenga en cuenta que esto supone que la entrada no está vacía, lo cual está bien)Simplemente construya directamente la cadena que se devolverá a partir de esas dos variables.
Repetir la cadena
"go, \nGo Johnny go"
cuatro veces en lugar de repetir"Go Johnny go, go"
ahorra un byte.Edición 1: Olvidé jugar al punto y coma, jaja !! También contó mal los bytes, originalmente era 102, no 104. Gracias a los apsillers .
Edición 2: en lugar de
.repeat(4)
poner esa cadena en una variablex
y hacer,x+x+x+x
permite guardar dos bytes.Fragmento de prueba
Mostrar fragmento de código
fuente
V ,
41, 38 bytesPruébalo en línea!
¡El desafío perfecto para V!
Explicación:
fuente
Pyth - 52 bytes
Test Suite .
fuente
C,
156151 bytesfuente
main()
que realmente llama a la función funciona ...Python 3, 88 bytes
Una cadena de formato simple, con argumentos posicionales.
fuente
len("\n".__repr__()[1:-2])
es 2. Olvidé el__repr__()
al medir la duración del programa."""
marcas en lugar de"
marcas.Retina , 65 bytes
El recuento de bytes asume la codificación ISO 8859-1.
Pruébalo en línea!
fuente
Jalea , 41 bytes
Pruébalo en línea!
fuente
Python, 94 bytes
fuente
C #,
219211212146122 BytesSe implementaron múltiples sugerencias de comentarios con optimización adicional. Este es el resultado final:
Pruébalo en línea!
Explantación
Salida para casos de prueba:
Editar: Gracias a Weston por sugerir el uso de una función.
fuente
^32
. Eso es más corto que el&~32
que estaba usando. Además, el puerto de mi respuesta Java 7 parece ser más corto:string x(string a){string x=(char)(a[0]^32)+a.Remove(0,1),n=a+"\n",c=", ",r=n+x+" Johnny "+a+c;return x+c+r+r+r+r+n+"Johnny B. "+x+"ode";}}
( 139 bytes ) Pruébelo aquí.string x(string a)
->(a)=>
, -13 bytes), solo 1 byte detrás de mí;)Func<string, string>
, simplementea=>
no necesita la()
.MATLAB / Octave ,
133111 bytesEs un comienzo. Con suerte se puede reducir aún más.
Básicamente es una función anónima que toma una entrada de cadena y luego usa expresiones regulares para crear la salida requerida.
Un ejemplo:
Puede especie de Pruébelo en línea! . El código no funciona con Octave ya que todas las letras mayúsculas se vuelven${upper($0)}
, mientras que en MATLAB se convierte en la letra mayúscula real.Dado que la entrada solo se garantiza
a-z
(alfabeto en minúsculas), puedo ahorrar 22 bytes usando una simple resta de 32 para convertir la primera letra de la cadena en mayúscula, en lugar de usar expresiones regulares conupper()
función.Como resultado, el código ahora también funciona con Octave, por lo que ahora puede probarlo en línea.
fuente
Ruby,
89888679 bytesMi primera presentación de golf:
Muchas gracias a @manatwork por su increíble comentario: ¡7 bytes menos!
fuente
?
notación; los paréntesis alrededor de los últimos.gsub
parámetros no son necesarios. pastebin.com/6C6np5DfEstrella nueva , 105 bytes
Porque Nova ( http://nova-lang.org ) es extremadamente beta (y con errores), existen algunas desventajas obvias que impiden que use aún menos bytes.
Por ejemplo, podría haber guardado la llamada a la función en mayúscula (que se llama 3 veces) en una variable local como esta:
que habría tomado el byte cuenta atrás para bytes 89 bytes . La razón por la que esto no funciona ahora puede atribuirse al orden de evaluación de argumentos en el lenguaje C, porque Nova se compila en C. (El orden de evaluación de argumentos se solucionará en una actualización futura)
Aún más, podría haber introducido una propiedad "title" en la clase String (y lo haré después de hacer esto lol) para reducir el recuento de la llamada a la función de capitalización:
y eso liberaría 7 bytes a un nuevo total de 82 bytes .
Además (y más allá), una vez que se agrega la inferencia de tipo variable lambda, esto sería válido:
El recuento podría reducirse a 72 bytes .
Por cierto, este es mi primer código de golf, por lo que probablemente me haya perdido aún más optimizaciones que podrían haberse hecho. Y siendo este un campo no centrado en el golf , de uso general del lenguaje, creo que es bastante impresionante.
El primer código de 105 bytes funciona en la versión actual de Nova Beta v0.3.8 disponible en http://nova-lang.org
salidas:
Gracias por escuchar mi anuncio descarado para el lenguaje de propósito general Nova (que se encuentra en http://nova-lang.org ... ¡¡ consíguelo ahora !!)
fuente
Brainfuck, 352 bytes
Pruébalo en línea!
Siempre me gustan los desafíos en Brainfuck, así que fue divertido. Probablemente se pueda jugar más al golf, pero el golf Brainfuck es bastante largo.
fuente
PHP, 86 bytes
fuente
Java 8,
151147146130 bytesExplicación:
Pruébalo aquí.
fuente
Apilado , 64 bytes
Pruébalo en línea!
fuente
C # ,
159130128 bytesGolfed
Sin golf
Legible sin golf
Código completo
Lanzamientos
- 2 bytes
- Intercambiado(i)=>
pori=>
, gracias al comentario de TheLetalCoder .-29 bytes
- Gracias a la última actualización de Sir Bitesalot , quien me recordó que podía editar la cadena antes del formato.159 bytes
- Solución inicial.Notas
El título tiene un enlace a una página con el código y los casos de prueba. Simplemente presione Ir y el resultado se imprimirá debajo del código.
fuente
()
argumentar en torno alFunc
just doi=>
. Probablemente también pueda usar cadenas interpoladas de C # 6 y perder el,string.Format
aunque no he mirado demasiado el código para ver cómo (debería ser trivial).()
, pero dudo que pueda hacer uso de cadenas interpoladas sin aumentar el tamaño del código, debido al reemplazo que colapsa la repetición.Javascript -
72106 bytesEditar: ¡Uy! ¡No presté atención a las reglas de capitalización! Será más largo después de un tiempoEdición 2: ¡Debería seguir las reglas ahora!
Probablemente podría jugar más golf
Usado como:
fuente
Excel VBA,
137121112898784 bytesFunción de ventana inmediata anónima de VBE que toma la entrada de tipo
Variant/String
de la celda[A1]
y las salidas imprimiendo la ventana inmediata de VBE-16 bytes para convertir a la función de ventana Inmediato
-9 bytes para usar
[PROPER(A1)]
-23 bytes para abandonar el
For ...
ciclo y abusar de la?
declaración-2 Bytes para reemplazar
" Johnny "&[A1]&", "&[A1]
con[" Johnny "&A1&", "&A1]
-3 bytes para usar
+
más&
para la concatenación de cadenas y dejar la cadena de terminal sin cerrarCaso de ejemplo
fuente
Debug.?s
efectivamenteDebug.Print
? ¿Cómo funciona??
,i=1To
y&c
se digieren en términos más detallados pero legibles comoPrint
,i = 1 To
y& c
. La comunidad ha decidido que la versión comprimida del código en idiomas es aceptable para las respuestas (ver codegolf.meta.stackexchange.com/questions/10258/… )?
, creo que es un remanente de la versión anterior de Excel (4.0 y posterior) donde se usaron Macro Sheets en el lugar VBA a través del VBE donde se usó como una palabra clave para imprimir una cadena provista después de ella archivo de texto indicado. La?
palabra clave en sí misma sigue siendo muy útil para el golf de código, ya quePrint
se usa para escribir cadenas en un archivo de texto en las versiones actuales de VBA. Tenga en cuenta que me estoy quedando sin memoria con uno, así que tómalo con un grano de sal.CJam , 50 bytes
Pruébalo en línea!
Explicación:
fuente
Pyke , 43 bytes
Pruébalo en línea!
Construye e imprime la primera línea, luego la inserta
Johnny go
antes de la coma y la duplica 4 veces. Finalmente construye la última parte.fuente
johnny
. tio.run/nexus/…Python, 258 bytes
fuente
t
porque solo se llama una vez.Java 6,
258242 bytesLa parte más larga es el formato para printf. Hay problemas con la entrada diferente de string de
a
az
(sí, sé que no necesito admitir nada más).Ungolfed con comentarios:
EDITAR: Golfed 16 bytes gracias a Weston
fuente
"Johnny"
siempre es seguido por un espacio.b[0]^=32;
también será mayúscula sin necesidad de(char)
yeso.Mathematica, 83 bytes
Función anónima. Toma una cadena como entrada y devuelve una cadena como salida. Probablemente podría jugar más golf.
fuente