Todos conocemos el clásico chiste de papá que dice algo así:
- Alguien dice una oración para describirse a sí mismo (p . Ej. - I'm tiredO- I'm confused).
- Aparece un entusiasta de bromas de papá y responde - Hi <adjective>, I'm Dad!, porque las presentaciones siguen el mismo formato (- I'm Petersigue el mismo formato que- I'm hungry).
Su trabajo es tomar una entrada en forma de autodescriptor y generar el formulario de broma de papá apropiado, pero en lugar de usar la palabra "papá", usará el nombre del lenguaje de programación que está programando en.
Casos de prueba (suponga que Python los está analizando):
I'm amazing                  Hi amazing, I'm Python!
I'm tired                    Hi tired, I'm Python!
I'm hungry                   Hi hungry, I'm Python!
I'm fat                      Hi fat, I'm Python!
Ahora suponga que Golfscript analiza estos casos de prueba:
I'm a programmer             Hi a programmer, I'm Golfscript!
I'm a question-writer        Hi a question-writer, I'm Golfscript!
I'm a Stack-Overflow-er      Hi a Stack-Overflow-er, I'm Golfscript!
El desafío exacto:
- Tome una cadena en el formato de autodescripción ( - I'm <adjective>o- I'm a(n) <noun>) usando la entrada estándar o mediante una función.- Suponga que no hay puntuación final. 
- Suponga que la palabra - I'mse usa y no- I am.
 
- Conviértalo a un formato de broma de papá: vea los ejemplos anteriores para saber exactamente cómo debería verse. 
Otras cosas:
- Este es el código de golf , por lo que gana el conteo de bytes más corto. 
- Siga las reglas estándar de lagunas legales, ninguna de ellas, por favor. 
- ¡Que te diviertas! 
Tabla de clasificación
Puede ver la tabla de clasificación para esta publicación expandiendo el widget / fragmento a continuación. Para que su publicación se incluya en las clasificaciones, necesita un encabezado ( # header text) con la siguiente información:
- El nombre del idioma (finalícelo con una coma - ,o guión- -), seguido de ...
- El recuento de bytes, como el último número que aparece en su encabezado. 
Por ejemplo, JavaScript (ES6), 72 byteses válido, pero Fortran, 143 bytes (8-bit)no es válido porque el recuento de bytes no es el último número en el encabezado (su respuesta se reconocerá como 8 bytes; no aproveche esto).
<iframe src="https://ozewski.github.io/ppcg-leaderboard/?id=185872" width="100%" height="100%" style="border: none;">Oops, your browser is too old to view this content! Please upgrade to a newer version of your browser that supports HTML5.</iframe><style>html,body{margin:0;padding:0;height:100%;overflow:hidden}</style>fuente

Respuestas:
V , 13 bytes
Pruébalo en línea!
Inspirado por la respuesta de tsh
Esto aprovecha el hecho de que
I'mse arranca desde el inicio de la cadena al eliminar el texto desde el principio y se pega al final con el<C-r>"modo de inserción.fuente
I'ma<C-O>py luego nota que su respuesta ...escapetiene 5 caracteres?0x1B, pero es más fácil y más obvio lo que significa si lo escribes como<esc>. Lo mismo para<C-r>, que es realmente0x12C (gcc) ,
594233 bytes-17 bytes gracias a @Conor O'Brien al notar que la importación no era necesaria
-9 bytes gracias a @tsh que señala una forma UB más corta de escribir la función
Pruébalo en línea!
Corta los primeros 3 caracteres de la entrada (los elimina
I'm) y los rodea con el texto deseado.fuente
inttambién es opcional.char*, tal vez ...; así quea(x){printf("Hi%s, I'm C!",x+3);}debería funcionarintpuede contener unchar*sin truncarlo), a pesar del comportamiento indefinido. En x86-64 gcc en Linux, siempre fallará en un ejecutable PIE (normalmente no hay punteros en los 32 bits bajos del espacio de direcciones virtuales, y gcc no copiará los 32 bits altos mientras se calcula ax+3partir de la función arg en El registro RDI). Pero en un ejecutable que no es PIE, las direcciones estáticas están en los 31 bits bajos del espacio de direcciones virtuales, por lo que si la persona que llama pasó un literal de cadena o un búfer estático, funcionaría.V , 13 bytes
Pruébalo en línea!
Nuevo a
V. Lo supe hace unos 30 minutos. De todos modos, este idioma se elige solo porque su nombre solo cuesta 1 byte. No estoy seguro de cómo enviar la<End>clave en V. La mayoría de los entornos vim aceptarían<End>como reemplazo<Esc>Aen este ejemplo. Pero, ya sabes, V es 2 caracteres más corto que vim. :)Gracias a @Candy Gumdrop , ahorra 1 byte.
fuente
c3lacE.Eantes.cW(que parece diferente, pero en realidad es idéntico acE) o3s. ¡Buen trabajo! Estaba a punto de publicar casi esta respuesta exacta cuando vi que ya había respuestas de 2 V, lo que fue una agradable sorpresa. He intentado varios enfoques diferentes, pero no estoy seguro de si será posible obtener <13 bytes.Stax , 13 bytes
Ejecutar y depurarlo
Desempaquetado, sin golf y comentado, se ve así.
Moví el comentario final una línea hacia arriba ya que nada puede seguir un literal de cadena sin terminar.
Ejecute este
fuente
brainfuck, 164
Pruébalo en línea!
El "brainfuck!" parte de la cadena se genera con esta herramienta, probablemente puede jugarse más a mano.
fuente
Excel,
3633 bytes-3 bytes gracias a Johan du Toit.
La entrada entra en A1.
Primer intento:
fuente
="Hi "&MID(B13,4,99)&", I'm Excel"34 bytesA1en lugar deB13hacerlo en realidad 33 bytes.Python 3 ,
3534 bytesPruébalo en línea!
-1 byte gracias a Encarnación de la ignorancia
También 34 bytes, utilizando las nuevas cadenas formateadas, gracias a Gábor Fekete:
Pruébalo en línea!
fuente
lambda s:y reemplazar%s[3:]con%input()[3:]? (-4 bytes)print()7 bytes más, por lo que las respuestas de Python generalmente usan lambdas.lambda s, he definido una función (anónima). Si observa el encabezado y el pie de página en el enlace TIO, nombro esa funciónfy luego la llamo conf("I'm whatever"). Entonces la función devuelve la salida esperada. Con su fragmento, no imprime ni regresa de una función; solo tiene un código que evalúa el resultado correcto, pero no hace nada con él. Puede ejecutar programas varias veces, puede llamar a funciones varias veces, pero un fragmento es solo un fragmento.R
454439 bytes@Giuseppe Editar
@AaronHayman Editar
Pruébalo en línea!
fuente
"(I'm )con"(.* )I'm a programmer(muchos espacios) debido a la codiciasuba"I'm(.*)" and "Hi\\1, I'm R"y 3 bytes de entrada mediante la adopción de la entrada estándar usandoscan: Pruébelo en líneaPHP ,
3432 bytesPruébalo en línea!
Entrada vía
STDIN, llamada con -F.fuente
x86 ,
3736 bytesDesmontado:
Un programa DOS ejecutable independiente. Entrada desde la línea de comando, salida a la pantalla.
Descargue y pruebe DAD.COM .
* El nombre exacto del "idioma" aquí es un poco ambiguo ya que el código de máquina de la CPU no es realmente un idioma en un sentido formal. Ir con "x86" como un nombre generalmente entendido y aceptado para la plataforma de destino.
fuente
Java, 36 bytes
Pruébalo en línea.
fuente
Espacio en blanco , 267 bytes
Se agregaron letras
S(espacio),T(tabulación) yN(nueva línea) solo como resaltado.[..._some_action]agregado solo como explicación.Dado que el espacio en blanco ingresa un carácter a la vez, la entrada debe contener una nueva línea final para que sepa cuándo detener la lectura de caracteres y se realiza la entrada.
Pruébelo en línea (solo con espacios en bruto, pestañas y nuevas líneas).
Explicación en pseudocódigo:
Los caracteres de
", I'm Whitespace!"se empujan en orden inverso y luego se imprimen en un bucle. Todos los valores de estos caracteres también se reducen en 102, que se agregan en el bucle antes de imprimir para guardar bytes. Esta constante 102 para bajar cada carácter se genera con este programa Java . Además, en lugar de presionar el valor-70para ambos espacios dos veces, el segundo espacio"!ecapsetihW m'I ,"se copia del primero con la copia incorporada para guardar algunos bytes.fuente
Lenguaje de fórmulas IBM / Lotus Notes,
6162 bytes+1 porque no me había dado cuenta
!al final de la salida.Fórmula de campo calculada que toma su entrada de un campo editable
i. Fracasaría para "I'm an I'm", pero dado que eso no tendría ningún sentido, supongo que no sucederá.¡Lástima que con 32 bytes, el nombre del idioma es más de la mitad de la longitud total de la fórmula!
Captura de pantalla a continuación que muestra un ejemplo de entrada y salida:
fuente
FormulaPerlcomo sustitución dePerl 5oPerl 5 -p.sed (
-r),312825 bytes-3 bytes gracias a Shaggy -3 bytes porque
-rno es necesario en la salidaTIO
fuente
-rpero valdría la pena que Meta lo considerara.Japt , 18 bytes
Cuando la biblioteca de compresión de cadenas de Japt alcanza una tasa de compresión del 0% ...
Intentalo
Otra alternativa de 18 bytes:
fuente
Octava , 35 bytes
Pruébalo en línea!
42 bytes:
Intenté recuperar "Octave" de alguna manera, sin escribirlo, ya que 6 caracteres es bastante en comparación con algunos de los otros nombres de idiomas aquí. Desafortunadamente, solo pude encontrar
ver, que genera una estructura con campos separados por comas. Toma más de 6 bytes. :(Pruébalo en línea!
fuente
Ruby
-p,322726 bytes-5 bytes aprovechando la respuesta Jelly de Nick Kennedy .
-1 byte de división en un punto diferente en la cadena. También me di cuenta de que mi antiguo bytecount estaba equivocado.
Explicación
Pruébalo en línea!
fuente
Óxido , 41 bytes
Pruébalo en línea!
fuente
Lote, 22 + 3 = 25 bytes
+3 bytes para nombrar este archivo
I'm(con la.batextensión requerida para archivos Batch). Invocar comoI'm hungry, cuando hará ecoHi hungry, I'm Batch!.fuente
I'mpero aquí está el nombre del guión, no sé si es válido, o a menos que sea el intérprete con el guión en la ruta actualCMD, entonces ¿eso realmente me ahorraría 2 bytes?Perl 6 ,
30 2827 bytesPruébalo en línea!
fuente
Perl 5
-p,3124 bytesReducción basada en aclaraciones de OP y una sugerencia de @NahuelFouilleul.
Pruébalo en línea!
fuente
$^X $]podrían usarse variables especiales, sin embargo 5 es más corto que$]5como parte del nombre del idioma? es decir, ¿podría argumentar que Perl 5 "se considera" como "Perl"? Ese fue el caso antes de que existiera Perl 6, y las respuestas de codegolf solo necesitan trabajar en al menos una implementación del lenguaje, ¿entonces elegir una antigua?Perles suficiente. Y que el uso de la-popción no tiene que considerarse parte del nombre del idioma.Jalea ,
1615 bytesUn programa completo que acepta un argumento de cadena (con formato Python) que imprime el resultado.
Pruébalo en línea!
¿Cómo?
Nota:
Ḋ⁾Hio...también funciona.fuente
Jalea ,
2017 bytesPruébalo en línea!
Un enlace monádico que toma la entrada como argumento y devuelve una cadena Jelly.
Explicación
fuente
VBA (Excel), 27
28bytesLa entrada va en la celda A1 de la hoja activa en Excel, ejecute el código en la ventana Inmediato
Se aprovecha del hecho de que
"SomeString"SomeValueeSomeValue"SomeString"implícitamente concatenar, y que omitiendo el tercer argumento de laMIDfunción se llevará a todos los caracteres desde el final de la entrada - convirtiéndolo en un "vertedero caracteres iniciales" función(-1 byte gracias a Shaggy, pero +1 cuando OP confirmó que todas las respuestas deberían terminar con un signo de exclamación)
(-1 byte gracias a Taylor Scott recordándome que la cita doble final era opcional)
fuente
Hiy reemplazarlo5con4?"de esta solución, y a medida que usa la notación de evaluación (los corchetes) debe marcar esta solución como Excel VBA, ya que esa notación solo está disponible en ExcelJ , 22 bytes
Pruébalo en línea!
fuente
05AB1E ,
2321 bytesGuardado 2 bytes gracias a Kevin Cruijssen
Pruébalo en línea!
Explicación
fuente
•äƵí•hRes 1 byte más corto que"05AB1E". :)•äƵí•hRtambién, pero como dices, desafortunadamente no guarda ninguno aquí.QuadR , 22 bytes
Pruébalo en línea!
Esto reemplaza:
^...tres caracteres inicialesy
$el final de líneacon
Hiy
,I'm QuadRrespectivamente
fuente
⎕Roperador APL .Retina ,
2221 bytesPruébalo en línea! El enlace incluye casos de prueba. No funciona en Retina 0.8.2, así que adapta la respuesta QuadR de @ Adám en su lugar. Explicación: El patrón está vacío, por lo que coincide en cada posición en la cadena de entrada. Sin embargo, solo necesitamos el tercer partido (o el cuarto funcionaría). La sustitución se aplica a ese partido. Dentro de esa sustitución, se
$'refiere al resto de la cadena y$`al principio de la cadena.fuente
Retina 0.8.2 ,
262523 bytes-1 byte gracias a @attinat .
-2 bytes portando la respuesta QuadR de @ Adám , ¡así que asegúrate de votarlo!
PD: @Neil publicó una respuesta Retina más corta en la nueva versión , así que he cambiado esta respuesta a Retina 0.8.2 explícitamente.
Pruébalo en línea.
Explicación:
Reemplace los primeros tres caracteres con "Hola":
Y luego agregue un final "¡Soy Retina!" (reemplazando el final de la cadena):
fuente
bash, 24 bytes
TIO
fuente
bashcon$0para guardar un par de bytes$0imprimiría el nombre del script o se ejecutaría,bash -c 'echo Hi ${@:2}, $1 $0!' bash $@pero debería contar en tamaño