Schreiben Sie ein Programm, das einen Zahlenvektor (oder einen beliebigen Elementtyp) sortiert, der wie ein oder mehrere Bugs aussieht, aber eigentlich in Ordnung ist.
- Der Code muss klar sein. Jemand, der sich den Code ansieht, muss leicht erkennen, dass es sich um einen Sortieralgorithmus handelt, und muss leicht ein korrektes Stück Code mit einem Fehler verwechseln.
- Der (scheinbare) Fehler kann durch alles, was den Code syntaktisch oder semantisch falsch formuliert (z. B. das Programm nicht kompilieren / ausführen lassen, UB anzeigen, wenn es ausgeführt wird), dazu führen, dass das Programm falsche Ergebnisse erzeugt, nicht beendet oder nicht deterministisch ist.
- Der Code muss tatsächlich wohlgeformt sein und das Programm muss deterministisch die korrekte Ausgabe in einer endlichen Zeit erzeugen.
- Die Eingabe kann im Programm fest codiert oder gelesen werden (vom Benutzer, aus der Datei usw.).
- Die Eingabe wird als gültig betrachtet und das Programm wird nicht benötigt, um die Richtigkeit der Eingabe zu überprüfen.
- Jeder Sortieralgorithmus wird akzeptiert. Die Datenstruktur zum Halten der Zahlen muss kein tatsächlicher Vektor sein. Das Programm kann so gestaltet werden, dass eine variable Anzahl von Zahlen oder eine feste Anzahl von Zahlen sortiert wird (z. B. ist ein Programm zum Sortieren von 3 Zahlen in Ordnung ). Die Sortierung kann stabil sein oder nicht (Anmerkung: Ein Programm, das für die Ausführung einer stabilen Sortierung entwickelt wurde, hat einen offensichtlichen Fehler, der die Sortierung instabil erscheinen lässt, aber in Wirklichkeit ist es kein Fehler: Das Programm führt tatsächlich eine stabile Sortierung durch - ist eine gültige Antwort ).
- (einschließlich Sortierfunktionen) außer 3rd - Party - Tools können Sie alle Funktionen aufrufen (es sei denn , sie weiter verbreitete zB sind
boos
fürC++
,JQuery
fürJavascript
- das sind ok zu verwenden) - geben Sie die Sprache an
- Kommentieren Sie in Code den Teil, der wie ein Fehler aussieht.
- Erklären Sie, wie der Fehler aussieht, wenn Sie etwas falsch machen.
- erkläre (in einer Spoilerbox), warum es eigentlich kein Bug ist.
Dies ist ein Beliebtheitswettbewerb. Die Antwort mit den meisten Stimmen gewinnt.
Diese Herausforderung ist nun vorbei. Der Gewinner ist @Clueless /codegolf//a/30190/11400 mit 8 Stimmen. Vielen Dank an alle Einsender!
Wenn Sie nach der Vergabe des Gewinners teilnehmen möchten, können Sie gerne eine neue Antwort hinzufügen. Sie sind aus dem Rennen, aber wir sind alle daran interessiert, interessante Antworten zu sehen.
Antworten:
C ++
Inspiriert von Apple
goto fail
; Fehler .quelle
goto
, daher gibt es keinen Fehler. (Bezogen auf all die Leute, die sagten, dass der Fehler niemals passiert wäre, wenn Apple ihn nicht verwendet hättegoto
)Python2.x
Testlauf
quelle
C
Falsche Sortierung - auf einem 64-Bit-System sind
int
es 4 Byte undchar *
8 Byte, sollte also nicht funktionieren.Code:
Bauen:
Lauf:
Ja, irgendwie okay!
quelle
Kobra
Oh je, ich habe anscheinend falsch zugeordnet
n
... und wie sind all diese Kommas dahin gekommen?quelle
Java
quelle
Perl
Auftragnehmer in diesen Tagen! Wissen sie das nicht?
<=>
Operator (auch "Raumschiff" genannt) nur für die numerische Sortierung verwendet wird?Und warum vergleichen sie Betreiber?
Wie hat dieser Code unsere strengen Tests überhaupt bestanden ?? !! Es nutzt sogar
strict
undwarnings
!Warum kompiliert Perl?
Warum es funktioniert
quelle