Su tarea es construir el programa más grande posible que use exactamente un GOTO, sin el cual todo el programa (o al menos una gran parte de él) debe ser completamente reestructurado. El puntaje se cuenta como el número de declaraciones en su código que cambian de lugar o se introducen nuevamente (eliminar las declaraciones no se agrega a su puntaje) cuando el código se reestructura sin el GOTO (otros pueden desafiar su reestructuración presentando un elegante). Como se trata de bolos de código, gana la puntuación más alta.
Nota: No reclamo ninguna responsabilidad por los ataques de velociraptor al intentar este desafío.
code-bowling
Joe Z.
fuente
fuente
goto
conswitch
parece posible para ambos.Respuestas:
C fizzbuzz
Esta solución se basa en la idea de interrupciones y variables de etiqueta (solo gcc, lo siento). El programa configura un temporizador que periódicamente llama a main, donde vamos a cualquier lugar donde la última ejecución de nuestro controlador de interrupciones (main) nos indique que deberíamos hacerlo.
Nunca he usado temporizadores o variables de etiqueta antes, así que creo que hay mucho para jugar aquí.
fuente
run
debe declararsevolatile
, de lo contrariowhile(run)
puede ser "optimizado" parawhile(1)
. O en su lugar, simplemente vaya a algún lugar que llameexit
.volatile int num
fuera de main debería hacerlo. Constatic
, gcc piensa que sabe quién puede meterse con eso.Perl
No soy muy bueno en los bolos, pero sospecho que esto puede interesar al OP. Este es un tamiz de Eratóstenes usando un goto variable. Si esto se 'refactorizara', dudo que algo sea reutilizable, aparte de las primeras líneas. Cuando finaliza el tamiz, todos los
1
s restantes en la@primes
matriz corresponden a valores primos.Para mayor diversión, no se usan ands, ors, ternaries, condicionales u operadores de comparación de ningún tipo.
fuente
do
Mi uso de macros quizás no lo convierte en "un GOTO".
Y es bastante corto, por lo que "completamente reestructurado" no es mucho.
Pero aquí está mi intento de todos modos.
Lee un número de la entrada estándar, lo imprime modulu 3.
fuente
printf
yscanf
. El puntaje de su solución probablemente sea de 2 o 3.n%3
de esa manera. Debe ser un programa que se vuelve complicado cuando se elimina el GOTO , no cuando se introduce .goto
, el programa no funcionará. Pero, ¿qué esperabas: que el programa se enredara solo con la eliminación?