Su jefe se enteró recientemente de este interesante lenguaje de programación llamado inglés . Él ha tenido esta idea "revolucionaria", ¡quiere codificar con usted para duplicar las tasas de producción! Como él no es un experto en tecnología, ¡quiere que escribas un compilador para que él también pueda codificar!
Ahora, eres un malvado programador perezoso y obviamente no escribirás un programa para compilar este lenguaje ridículamente complejo. En su lugar, se asegurará de que siempre haya un error en el código de su jefe, de modo que nunca llegue a la compilación real y se quede atascado reparando errores gramaticales en lugar de codificación.
El desafío es escribir un programa que pueda ejecutarse desde el terminal y acepte una ruta de archivo como argumento. El programa tiene que:
- modificar la entrada del archivo introduciendo un error tipográfico.
- Pretende fallar la compilación debido al encuentro del error tipográfico que introdujiste.
- Ejecutar el programa en copias del mismo archivo no debería introducir el mismo error tipográfico dos veces seguidas.
Para ilustrar el desafío, ejecute su programa en este archivo:
Take an array as input.
Sort the array.
Output the array.
debería dar salida a lo largo de las líneas de
Error on line 1:
'Take an arqay as input.'
^
arqay is not a valid identifier.
y el archivo que le dijo al programa que compilara ahora debería verse así:
Take an arqay as input.
Sort the array.
Output the array.
Aquí hay algunos detalles más sobre las especificaciones del programa:
Su programa puede suponer que intercambiar cualquier carácter en el programa que ingrese su jefe por un carácter aleatorio diferente causará un error gramatical. Su programa no debe usar caracteres no alfabéticos para crear errores en el código de su jefe. Su jefe nunca usaría un número o símbolo, y descubriría que algo está en marcha. Su programa solo debe introducir errores en las palabras del programa de su jefe. No cambie los espacios en las oraciones, ni la puntuación. Su programa no debe alterar el caso del programa que su jefe intenta compilar, lo que significa que errores como arQay
no son válidos. Esto evita errores como en take
lugar de Take
suceder, o en Array
lugar de array
. Su programa debería generar el error indicando primero en qué línea se encuentra el error:
Error on line <insert line number here>:
Luego debe imprimir la línea con el error dentro de los '
símbolos. En la siguiente línea, debe colocar un ^
símbolo debajo de la palabra con el error, y finalmente debe tener un texto que describa el error (esta parte depende de usted, puede decir lo que quiera allí siempre que describa un error).
Puede suponer que el archivo de entrada existe y que no está vacío. También puede suponer que el archivo de entrada no tiene errores gramaticales antes de agregar uno.
Bonificaciones:
-60 bytes si los errores que introduce su código no son completamente al azar, sino basados en errores tipográficos como en esta pregunta.
-60 bytes para al menos 5 mensajes de error diferentes, alternando al azar.
-60 bytes si su programa tiene una probabilidad de 1 en 100 o menos de enviar algún mensaje desmotivador a su jefe.
EDITAR: El conteo de bytes de los mensajes no cuenta para su puntaje. (Gracias a Martin Büttner por esta buena idea)
Este es el código de golf, gana el conteo de bytes más corto Por favor, no muestre el contenido del mensaje de error, su jefe no estará contento si no puede entender los mensajes de error y le pedirá que los arregle.