Votre tâche consiste à créer le plus grand programme possible qui utilise exactement un GOTO, sans lequel l'ensemble du programme (ou du moins une énorme partie) doit être complètement restructuré. Le score est compté comme le nombre d'instructions dans votre code qui changent de place ou sont nouvellement introduites (la suppression des instructions n'ajoute pas à votre score) lorsque le code est restructuré sans le GOTO (d'autres sont autorisés à contester votre restructuration en présentant un plus élégant). Comme il s'agit de bowling de code, le meilleur score l'emporte.
Remarque: je ne revendique aucune responsabilité pour les attaques de vélociraptors en tentant ce défi.
code-bowling
Joe Z.
la source
la source
goto
parswitch
semble possible pour les deux.Réponses:
C fizzbuzz
Cette solution tourne autour de l'idée des interruptions et des variables d'étiquette (gcc uniquement, désolé). Le programme met en place une minuterie qui appelle périodiquement main, où nous sommes arrivés à l'endroit où la dernière exécution de notre gestionnaire d'interruption (main) nous a dit que nous devrions.
Je n'ai jamais utilisé de minuteries ou de variables d'étiquette auparavant, donc je pense qu'il y a beaucoup à jouer ici.
la source
run
doit être déclarévolatile
, sinonwhile(run)
peut être "optimisé" pourwhile(1)
. Ou à la place, allez à un endroit qui appelleexit
.volatile int num
dehors de main devrait le faire. Avecstatic
, gcc pense qu'il sait qui peut jouer avec.Perl
Je ne suis pas très bon au bowling, mais je pense que cela peut intéresser l'OP. Il s'agit d'un tamis d'Eratosthène utilisant une variable goto. Si cela devait être «refactorisé», je doute que tout soit réutilisable, à part peut-être les premières lignes. Lorsque le tamis se termine, tous les
1
s restants du@primes
tableau correspondent à des valeurs premières.Pour plus de plaisir, aucun ands, ors, ternaires, conditionnels ou opérateurs de comparaison de toute nature sont utilisés.
la source
C
Mon utilisation des macros n'en fait peut-être pas "un GOTO".
Et c'est assez court, donc "complètement restructuré" n'est pas grand-chose.
Mais voici ma tentative de toute façon.
Lit un nombre à partir de l'entrée standard, l'imprime modulu 3.
la source
printf
etscanf
. Le score de votre solution serait probablement d'environ 2 ou 3.n%3
de cette façon, cependant. Il doit s'agir d'un programme qui devient compliqué lorsque le GOTO est supprimé , et non lorsqu'il est introduit .goto
, le programme ne fonctionnera pas. Mais à quoi vous attendiez-vous - que le programme devienne compliqué par la seule suppression?