Il est maintenant temps de montrer vos capacités à écrire du mauvais code. J'essaie un nouveau type de puzzle de programmation, le plus similaire, je pense, au concours C sournois. La principale différence est que ce n'est pas aussi néfaste: c'est juste un bon amusement propre. Le but du puzzle est de regrouper autant de bugs que possible dans un programme. Le gagnant de ce concours est celui qui écrit le programme avec le plus de bugs par personnage.
Pour éviter un énorme fil de commentaires demandant des éclaircissements, je devrais définir dès maintenant ce que je considère comme des bogues éligibles.
Tout d'abord, un bug n'est pas une erreur . S'il s'agit d'un problème qui peut être détecté par l'interpréteur comme une erreur (par exemple, délimiteurs incompatibles, syntaxe mal formée, accès à une propriété d'un objet nul, etc.) ou s'il empêche le programme de s'exécuter ou de continuer, il n'est pas un bug. Sinon, vous pourriez taper quatre caractères et l'interpréteur pourrait répertorier huit erreurs de syntaxe et vous pourriez réclamer un rapport de caractères de bogue de 2.
Deuxièmement, le bogue ne doit pas être manifestement faux et un bogue n'est pas un œuf de Pâques . C'est certainement un critère subjectif, mais je pense indispensable à ce genre de concours. Cela signifie que vous ne pouvez pas avoir de code conditionnel qui modifie spécifiquement le code de manière évidente. (Lisez: utilisez un langage de fosse turing, car personne ne saura la différence).
Troisièmement, le bug doit être plausible . C'est subjectif, comme celui ci-dessus, mais le bogue doit avoir l'air d'avoir pu être écrit par une personne peu méticuleuse ou peut-être ignorante, ou quelqu'un qui vient de faire une erreur. Cela inclut, par exemple, des erreurs ou une syntaxe décalées qui sont valides et qui semblent correctes mais qui provoquent un comportement indésirable (par exemple, en utilisant des crochets au lieu de parenthèses).
Le bogue peut provoquer tout type de comportement indésirable du programme, y compris, mais sans s'y limiter, la sortie indésirable dans certains cas exceptionnels, avoir un comportement différent basé sur quelque chose qui ne semble pas lié (par exemple, la sortie s'affiche différemment selon que l'heure actuelle se termine ou non) avec un nombre pair ou impair de secondes), des fuites de mémoire, une perte de données, etc.
Exemple de problème:
Créez un programme qui affiche tous les caractères ASCII dans l'ordre croissant de leur valeur numérique.
Exemple de réponse:
Brainf ***, 5 caractères, 1 bug, rapport 0,2 bug-char
+[+.]
Bug: n'affiche pas le caractère ASCII pour 1. Pourrait être corrigé en changeant pour .+[.+]
.
Ok, je pense que vous auriez surtout dû l'obtenir maintenant, voici votre puzzle:
Décoder un chiffre César et trier les mots par ordre alphabétique
Un chiffre César est créé en prenant une série de lettres et en les déplaçant de n lettres dans l'alphabet. S'il va jusqu'au début ou à la fin de l'alphabet, A vient après Z et Z vient avant A. Par exemple:
Mannequin
Nboofrvjo //Shifted over 1 or -25
Wkxxoaesx //Shifted over 10 -16
Ftggxjnbg //Shifted over -7 or 19
Vous recevrez deux entrées (vous pouvez en obtenir, mais cela vous convient le mieux, dans des limites raisonnables). La première entrée correspond aux mots et la deuxième entrée correspond à la valeur sur laquelle elle est décalée. Votre tâche consiste à sortir les mots décodés, puis à sortir les mots décodés après leur tri alphabétique.
Exemple (n'offense pas les mauvais garçons, c'est juste un exemple):
Première entrée: gtdx wjbfwiji. ljy Gfi hfssty
Deuxième entrée: 5
Première sortie: les garçons récompensés. devenir mauvais ne peut pas
Deuxième sortie: les mauvais garçons ne peuvent pas être récompensés.
Bonne chance!