Agora é a hora de mostrar suas habilidades para escrever códigos ruins. Estou experimentando um novo tipo de quebra-cabeça de programação, mais parecido, eu acho, ao concurso C dissimulado. A principal diferença é que isso não é tão nefasto: é apenas uma boa diversão limpa. O objetivo do quebra-cabeça é empacotar o máximo de erros possível em um programa. O vencedor deste concurso é quem escreve o programa com mais erros por personagem.
Para evitar uma enorme discussão de comentários pedindo esclarecimentos, devo definir agora o que considero bugs qualificados.
Primeiro, um bug não é um erro . Se for um problema que possa ser detectado pelo intérprete como um erro (por exemplo, delímetros incompatíveis, sintaxe mal formada, acesso a uma propriedade de um objeto nulo etc.) ou se impedir que o programa seja executado ou continuado, não é um inseto. Caso contrário, você poderá digitar quatro caracteres e o intérprete poderá listar oito erros de sintaxe e reivindicar uma taxa de caracteres de erro de 2.
Segundo, o bug não deve estar obviamente errado e um bug não é um ovo de páscoa . Este é certamente um critério subjetivo, mas acho essencial para esse tipo de competição. Isso significa que você não pode ter um código condicional que manipula o código especificamente de maneiras óbvias. (Leia: use uma linguagem de turing pit, porque ninguém saberá a diferença).
Terceiro, o bug deve ser plausível . Isso é subjetivo, como o descrito acima, mas o bug deve parecer que poderia ter sido escrito por uma pessoa menos que meticulosa ou talvez ignorante, ou alguém que acabou de cometer um erro. Isso inclui, por exemplo, erros ou sintaxe específicos válidos e com aparência correta, mas causa comportamento indesejado (por exemplo, usando colchetes em vez de parênteses).
O bug pode causar qualquer tipo de comportamento indesejável ao programa, incluindo, mas certamente não limitado a, saída indesejada para alguns casos excepcionais, ter comportamento diferente com base em algo aparentemente não relacionado (por exemplo, a saída é exibida de maneira diferente dependendo do término do horário atual) com um número ímpar ou par de segundos), vazamentos de memória, perda de dados e assim por diante.
Problema de exemplo:
Faça um programa que exiba todos os caracteres ASCII em ordem crescente de seu valor numérico.
Resposta de exemplo:
Brainf ***, 5 caracteres, 1 bug, proporção de 0,2 bug-char
+[+.]
Bug: não exibe o caractere ASCII para 1. Pode ser corrigido alterando para .+[.+]
.
Ok, acho que você já deveria ter entendido agora, aqui está o seu quebra-cabeça:
Decodifique uma cifra de César e classifique as palavras em ordem alfabética
Uma cifra de césar é criada pegando uma série de letras e deslocando-as n letras para cima no alfabeto. Se for até o começo ou o fim do alfabeto, A vem depois de Z e Z antes de A. Por exemplo:
Mannequin
Nboofrvjo //Shifted over 1 or -25
Wkxxoaesx //Shifted over 10 -16
Ftggxjnbg //Shifted over -7 or 19
Você receberá duas entradas (você pode obter entradas, no entanto, é mais conveniente para você, dentro do motivo). A primeira entrada são as palavras e a segunda entrada é o valor pelo qual ela é deslocada. Sua tarefa é produzir as palavras decodificadas e depois as palavras decodificadas depois que elas foram classificadas em ordem alfabética.
Exemplo (sem ofensa a meninos maus, é apenas um exemplo):
Primeira entrada: gtdx wjbfwiji. ljy Gfi hfssty
Segunda entrada: 5
Primeira saída: meninos recompensados. ficar ruim não pode
Segunda saída: meninos maus não podem ser recompensados.
Boa sorte!