Ahora es el momento de mostrar sus habilidades para escribir códigos incorrectos. Estoy probando un nuevo tipo de rompecabezas de programación, el más similar, creo, al concurso de C. La principal diferencia es que esto no es tan nefasto: es solo una buena diversión limpia. El objetivo del rompecabezas es incluir tantos errores como sea posible en un programa. El ganador de este concurso es el que escribe el programa con más errores por personaje.
Para evitar una gran cantidad de comentarios pidiendo aclaraciones, debo definir ahora lo que considero que son errores que califican.
Primero, un error no es un error . Si el intérprete puede detectar un problema como un error (por ejemplo, delimitadores no coincidentes, sintaxis mal formada, acceder a una propiedad de un objeto nulo, etc.) o si impide que el programa se ejecute o continúe, no lo es un insecto. De lo contrario, podría escribir cuatro caracteres y el intérprete podría enumerar ocho errores de sintaxis y podría reclamar una relación de caracteres de error de 2.
Segundo, el error no debe estar obviamente equivocado y un error no es un huevo de pascua . Este es ciertamente un criterio subjetivo, pero creo que es esencial para este tipo de concurso. Esto significa que no puede tener un código condicional que altere específicamente el código de manera obvia. (Lea: use un lenguaje de turing, porque nadie sabrá la diferencia).
Tercero, el error debe ser plausible . Esto es subjetivo, como el anterior, pero el error debe parecer que podría haber sido escrito por una persona menos que meticulosa o quizás ignorante, o alguien que acaba de cometer un error. Esto incluye, por ejemplo, errores o sintaxis off-by-one que son válidos y parecen correctos pero causan un comportamiento no deseado (por ejemplo, usar corchetes en lugar de paréntesis).
El error puede causar cualquier tipo de comportamiento no deseado al programa, incluyendo, entre otros, resultados no deseados para algunos casos excepcionales, tener un comportamiento diferente basado en algo que aparentemente no está relacionado (por ejemplo, la salida se muestra de manera diferente dependiendo de si el tiempo actual termina con un número impar o par de segundos), pérdidas de memoria, pérdida de datos, etc.
Problema de ejemplo:
Haga un programa que muestre todos los caracteres ASCII en orden ascendente de su valor numérico.
Ejemplo de respuesta:
Brainf ***, 5 caracteres, 1 error, relación de 0.2 errores-char
+[+.]
Error: no muestra el carácter ASCII para 1. Podría solucionarse cambiando a .+[.+]
.
Ok, creo que ya deberías haberlo conseguido, aquí está tu rompecabezas:
Decodifica un cifrado César y ordena las palabras alfabéticamente
Un cifrado César se crea tomando una serie de letras y desplazándolas n letras en el alfabeto. Si va hasta el principio o al final del alfabeto, A va después de Z y Z va antes de A. Por ejemplo:
Mannequin
Nboofrvjo //Shifted over 1 or -25
Wkxxoaesx //Shifted over 10 -16
Ftggxjnbg //Shifted over -7 or 19
Se le darán dos entradas (puede obtener entradas, sin embargo, es más conveniente para usted, dentro de lo razonable). La primera entrada son las palabras, y la segunda entrada es el valor sobre el que se desplaza. Su tarea es generar las palabras decodificadas y luego generar las palabras decodificadas después de que se hayan ordenado alfabéticamente.
Ejemplo (sin ofender a los chicos malos, es solo un ejemplo):
Primera entrada: gtdx wjbfwiji. ljy Gfi hfssty
Segunda entrada: 5
Primera salida: niños recompensados. ponerse mal no puede
Segunda salida: los chicos malos no pueden ser recompensados.
¡Buena suerte!