Escriba un programa en cualquier idioma que lea la entrada de stdin y envíe una salida ligeramente modificada a stdout. El programa debe tomar prestados algunos caracteres de la entrada y salida del prefijo más grande posible, *language-name* is awesome!
seguido de una nueva línea y luego lo que queda de la entrada.
- La entrada no contiene caracteres en mayúscula.
- Si el primer carácter del nombre del idioma no está presente en la cadena, solo se debe tomar prestado el carácter de nueva línea.
- Si no hay un carácter de nueva línea en la entrada, envíe la entrada sin modificar.
- No importa cuál de los personajes disponibles pidas prestado.
Estoy usando \n
el carácter de nueva línea ( 0x0a
) para ahorrar espacio al escribir. El programa real solo debería preocuparse por el carácter real de nueva línea, no por la \n
cadena.
Ejemplo: python.
Entrada: abcdefghijklmnopqrstuvwxyz\n0123456789
Salida: python\nabcdefgijklmqrsuvwxz0123456789
Desde la entrada no tiene ningún espacio, no podemos continuar a pesar de que tenemos suficientes caracteres para la palabra siguiente: is
.
Ejemplo: C.
input: i don't see anything!
output: i don't see anything!
C no se encontró en la cadena, por lo que no fue posible realizar ninguna modificación. Además, no hay un personaje de nueva línea presente.
Ejemplo: C ++.
input: i don't\nsee anything!
output: \ni don'tsee anything!
C no se encontró en la cadena, por lo que no fue posible realizar ninguna modificación.
Ejemplo: Obj-C.
input: objectively, clojure is amazing.\nq.e.d.
output: obj\nectively, clojure is amazing.q.e.d.
la entrada contiene suficientes caracteres para escribir obj
pero -
falta la.
El recuento de bytes de su código fuente menos el recuento de bytes del nombre de sus idiomas, codificado utf-8 (si es posible), es su puntaje; victorias más bajas!
i don't\nsee anything!
como un caso de prueba?Respuestas:
Pyth, 37 bytes
El código fuente tiene 41 bytes de longitud. Pruébalo en línea.
Cómo funciona
fuente
Python, 186-6 = 180
Pruébalo en línea
fuente
Python, 146 bytes
fuente
Ceilán, 235-6 = 229
void a(){variable value i="";variable value r="\nceylon is awesome!";while(exists l=process.readLine()){i=i+"\n"+l;}i=i.rest;for(j->c in r.indexed){if(c in i){i=i.replaceLast(c.string,"");}else{r=r[0:j];break;}}print(r.rest+r[0:1]+i);}
Aquí hay una versión formateada y comentada:
Se usa en
replaceLast
lugar dereplaceFirst
porque es más corto.Algunos ejemplos de entradas y salidas en el mismo formato que en la pregunta:
abcdefghijklmnopqrstuvwxyz\n0123456789
→ceylon\nabdfghijkmpqrstuvwxz0123456789
i don't see anything!
→i don't see anything!
i don't\nsee anything!
→\ni don't see anything!
objectively, closure is amazing.\nq.e.d.
→ceylon is a\nobjectivel, sureiamzng.\q..d.
fuente
JavaScript (ES6) 90 (100-10)
Como una función que devuelve la salida solicitada. Es difícil de implementar con E / S, ya que el sustituto habitual de STDIN es
prompt()
que no acepta una nueva línea dentro de la cadena de entrada.Como una función con salida real (usando
alert
) el conteo de bytes es 107Pruebe a ejecutar el fragmento a continuación en un navegador compatible con EcmaScript 6 (implementando el operador de propagación y la función de flecha: uso FireFox)
fuente
Perl, 72-4 = 68 bytes
Incluye 2 interruptores.
Explicación : Para cada carácter de la cadena
"\nperl is awesome"
, elimine el carácter correspondiente de la cadena de entrada ($_
) hasta que encuentre un carácter que no esté presente$_
. Los caracteres coincidentes se almacenan en$p
el prefijo$_
que luego se imprime.El
-0
interruptor lee en la entrada completa en lugar de línea por línea y el-p
interruptor hace que la entrada de lectura e impresión de la salida sea implícita.fuente
JavaScript (ES7),
101107-10 = 97Era más corto antes, e incluso funcionó en los cuatro casos de prueba, pero aparentemente omití una regla, así que ...
Funciona correctamente en Firefox 42. Esto originalmente comenzó en 119 bytes, pero un truco de la respuesta de @ edc65 ayudó a acortarlo mucho. Creo que todavía hay margen de mejora. Como siempre, las sugerencias son bienvenidas!
fuente
obj
->job
, no debe modificarse (regla 3)is awesome
y aún funcionaría correctamente en los cuatro. Arreglaré esto lo antes posible.