Ihre Aufgabe ist es, das größte Programm zu erstellen, das Sie können und das genau ein GOTO verwendet, ohne das das gesamte Programm (oder zumindest ein großer Teil davon) vollständig umstrukturiert werden muss. Die Punktzahl wird als die Anzahl der Anweisungen in Ihrem Code gezählt, die die Position ändern oder neu eingeführt werden (das Entfernen von Anweisungen trägt nicht zu Ihrer Punktzahl bei), wenn der Code ohne das GOTO umstrukturiert wird (andere dürfen Ihre Umstrukturierung anfechten, indem sie eine weitere Anweisung vorlegen elegantes). Da dies Code-Bowling ist, gewinnt die höchste Punktzahl.
Hinweis: Ich übernehme keine Haftung für Velociraptor-Angriffe, wenn ich diese Herausforderung versuche.
code-bowling
Joe Z.
quelle
quelle
goto
durchswitch
scheint für beide möglich.Antworten:
C Fizzbuzz
Diese Lösung basiert auf der Idee von Interrupts und Label-Variablen (nur gcc, sorry). Das Programm richtet einen Timer ein, der periodisch main aufruft, wo wir zu dem Punkt gelangen, den uns die letzte Ausführung unseres Interrupt-Handlers (main) befohlen hat.
Ich habe noch nie zuvor Timer oder Label-Variablen verwendet. Ich denke, hier gibt es viel zu tun.
quelle
run
sollte deklariert werdenvolatile
, ansonstenwhile(run)
kann "optimiert" werdenwhile(1)
. Oder gehen Sie einfach zu einem Ort, der Sie anruftexit
.volatile int num
außerhalb von main sollte es tun. Mitstatic
, glaubt gcc, dass es weiß, wer sich damit anlegen kann.Perl
Ich kann nicht sehr gut bowlen, aber ich vermute, das könnte den OP interessieren. Dies ist ein Eratosthenes-Sieb mit einer Variablen goto. Wäre dies "refactored", würde ich bezweifeln, dass etwas davon wiederverwendbar wäre, abgesehen von vielleicht den ersten paar Zeilen. Wenn das Sieb endet, entsprechen alle verbleibenden
1
s im@primes
Array den Primwerten.Für zusätzlichen Spaß werden keine ands, ors, ternaries, conditionals oder Vergleichsoperatoren jeglicher Art verwendet.
quelle
C
Meine Verwendung von Makros macht es vielleicht nicht zu einem "GOTO".
Und es ist ziemlich kurz, so dass "komplett umstrukturiert" nicht viel ist.
Aber hier ist trotzdem mein Versuch.
Liest eine Zahl von der Standardeingabe und druckt sie in Modul 3.
quelle
printf
und verwendenscanf
. Die Punktzahl Ihrer Lösung würde höchstwahrscheinlich bei 2 oder 3 liegen.n%3
wird. Es sollte ein Programm sein, das sich beim Entfernen des GOTO verwickelt und nicht beim Einführen .goto
, funktioniert das Programm nicht. Aber was haben Sie erwartet - dass das Programm allein durch das Entfernen verwickelt wird?