jobs920.com

  

Beste Artikel:

  
Main / Was bedeutet Rara Avis in Tetris?

Was bedeutet Rara Avis in Tetris?

Bitte erstellen Sie ein Konto, um am Slashdot-Moderationssystem teilzunehmen. Nur dass das nicht "eine Zeile" ist. Es sind sechs Zeilen. Jedes Programm kann ein "Einzeiler" sein, wenn die Zeilenlänge nicht begrenzt ist.

Nun, es sei denn, Sie schreiben es in Python. Nur wenn die gesamte Blockfolge im Voraus bekannt ist, wird sie NP-hart. Aber das passiert im eigentlichen Spiel nicht. Die Zeilenlängenbeschränkung beträgt natürlich 256 Bytes. Und diese Hacks sind das Grundäquivalent des C-Verschleierungswettbewerbs. Wie die Autoren sagen: Der Code spricht für sich selbst; auch wenn das, was es zu sagen hat, nicht sehr schön ist. Und hier kommen wir zum Kern des Problems. Der Moderator gibt Informationen in einem falschen Licht weiter, sodass nur das Publikum, das sie akzeptieren möchte, seine späteren Aussagen weiterhin akzeptiert.

Eine dieser Aussagen ist, dass die Codeabdeckung Ihnen sagt, was Sie testen sollen. Das tut es nicht. Hier erfahren Sie, was Sie nicht getestet haben. Was Sie testen müssen, hängt von den User Stories, Kundenanforderungen und anderen Teilen der Entwicklungsdokumentation ab. Tester schreiben Tests für Permutationen unwichtiger Funktionen. Die Tatsache, dass es sich um eine Wahrscheinlichkeit handelt, bedeutet natürlich nicht, dass es keine optimale Strategie gibt, bei der das Optimum als "höchste erwartete Punktzahl" definiert ist.

Eine optimale Strategie zu finden ist also ein schwieriges Problem - wie schwer ist es? Macht es eine andere Wahrscheinlichkeit einfacher oder schwieriger? Härter, wenn überhaupt. Dies ist beweisbar, da die Wahrscheinlichkeitsversion gelöst werden kann, indem jede der potenziellen Reihen so gelöst wird, als ob jede bekannt wäre. Was ist schwieriger als NP-hart? Es kann durchaus noch NP-schwer sein. Es kann keine lösbarere Komplexitätsklasse sein. Ich bin nicht einverstanden. Für einen stochastischen Prozess funktioniert Ihr gieriger Algorithmus "Nehmen Sie die Option mit der besten Chance" möglicherweise, er kann jedoch vollständig fehlschlagen, nur abhängig von den Zufallszahlen.

Wenn Sie einen stochastischen Polynomalgorithmus haben, haben Sie die Möglichkeit, den gleichen oder einen besseren Erwartungswert zu erhalten als Ihren Algorithmus "Global optimieren, dann gierig wählen". Beide Ansätze können gewinnen oder scheitern, aber im deterministischen Spiel gewinnt immer die np-vollständige Version, während die "Shortcut" -Version nicht konkurrieren kann.

In der stochastischen Version ist die Verknüpfung möglicherweise so gut wie die optimale Lösung, da Sie das globale Optimum ohnehin nicht erhalten können. Daher ist die Auswahl einer lokalen Lösung möglicherweise eine gute Wahl. Wie ich bereits erwähnt habe, ist der Fitnesstest der erwartete Wert - die durchschnittliche Punktzahl von 100.000.000.000 Spielen, die mit dieser Starstrategie gespielt wurden, nicht das Ergebnis eines bestimmten, zufällig ausgewählten Spiels.

In Hold'em kann sich das Folding von Preflop mit Pocket-Assen gelegentlich als das Beste herausstellen, aber es ist immer noch eine schlechte Politik, weil es mehr verliert als gewinnt. Die beste Strategie ist die, die langfristig gut abschneidet. Jetzt ist der Erwartungswert von beiden im stochastischen Fall Null.

In der deterministischen Eins ist es unendlich viel Gewinn für die np-vollständige Eins und Null für die probalistische Eins. Dies ist also ein Beispiel, bei dem ein perfekter Algorithmus für deterministische Daten genauso gut ist wie ein anderer für stochastische Daten. Das heißt nicht, dass Sie können. Der beste beste Algorithmus für die stochastische Sequenz kann unterschiedlich sein.

Daher ist der beste Algorithmus für die stochastische Sequenz möglicherweise einfacher als NP-hart. Das scheint sinnvoll zu sein. Bis Sie erkennen, dass die deterministische Sequenz ein Fall der Stochastik ist - wobei die Wahrscheinlichkeit einer bestimmten Sequenz zufällig 1 ist. Wenn Sie einen Polynomalgorithmus für die Wahrscheinlichkeit X hätten, könnten Sie. Wenn Sie ein gutes Polynom mit einem durchschnittlichen Ergebnis erhalten haben, ist es möglicherweise für viele Sequenzen besser. Mit anderen Worten, Sie weisen darauf hin, dass Sie es einfach nicht lösen und nicht jedes Mal die optimale Bewegung basierend auf dem erwarteten Wert finden können.

Stattdessen könnten Sie sich mit einem "gut genug" Zug zufrieden geben und manchmal würden Sie Glück haben. Das ist wahr. Sie haben den ersten Algorithmus als "am besten" bezeichnet und dabei anerkannt, dass der beste beste langfristige Durchschnitt NP-hart ist.

Der andere kann per Definition nicht besser sein als der beste, also das Problem. Eine stochastische Strategie C kann eine gute durchschnittliche Qualität haben. A hat jetzt eine unbekannte Qualität für eine zufällige Sequenz. C hat immer noch die gleiche durchschnittliche Qualität. Es besteht also jetzt die Möglichkeit, dass C A in vielen Spielen im Durchschnitt schlägt. Deshalb ist der Code e. Programme für den nicht erweiterten 1K ZX81 verwendeten häufig diese Art der Speicherersparnis.

Alle Zahlen wurden als Gleitkomma gespeichert und nahmen 5 Bytes Speicher ein und sagten e. Wer musste es lesen, aktualisieren oder debuggen? Jeder, der das verdammte Spiel spielen musste, es ist voller bahnbrechender Fehler - http: Wenn jemand solchen Code für mich geschrieben hätte, würde er dazu gebracht, auf dem ungezogenen Schritt zu sitzen und sehr, sehr gründlich darüber nachzudenken, was er getan hatte .

Dann würden Sie diesem Programmierer eine Beförderung geben. Aber im Moment sind sie noch nicht alle ganz da. Eigentlich ist es aus Gründen der Ressourceneffizienz geschrieben ... Das Ziel war es, ein einzeiliges Programm zu schreiben, und in BBC Basic bedeutete dies, dass sie auf 256 Zeichen begrenzt waren.

Ja, vielleicht hätten sie Dinge mit ausführlicheren Namen schreiben und auf die gleiche Größe kompilieren lassen können, aber das besondere Ziel dort war es, etwas Großes mit wenig Code zu schreiben. BBC Basic wurde interpretiert und nicht kompiliert, obwohl seitdem möglicherweise Compiler dafür geschrieben wurden. Es war mein ursprünglicher Instinkt, dasselbe zu sagen, da es fast alle Basissprachen sind, aber ich habe es vor dem Posten auf Wikipedia nachgeschlagen und festgestellt, dass es tatsächlich einen Compiler dafür gibt:

Als Beweis für seine Vollständigkeit konnte es die Inline-Assembler-Syntax unterstützen. Der Compiler, der in den frühen Entwicklungsphasen unter dem Interpreter ausgeführt wurde, konnte sich selbst kompilieren, und die verteilten Versionen waren selbst kompilierter Objektcode. Es gibt nicht viele Informationen darüber auf Wikipedia und es sagt nicht einmal, wann es geschrieben wurde und es gibt keine Zitate, also habe ich keine Ahnung, ob es etwas Neues oder sehr Altes war.

Ich würde die Person im Handumdrehen einstellen. Diese Art von Disziplin fehlt heutzutage bei jüngeren Programmierern schmerzlich.

Es mag so aussehen, als könnten Sie alles in Tetris testen, indem Sie es ein paar Minuten lang spielen, aber das ist sehr unwahrscheinlich! Wie ich in diesem Artikel erläutere, ist das Spiel mit Sonderfällen gefüllt, die im normalen Spiel selten auftreten und die nur mit Hilfe eines Coverage-Tools leicht gefunden werden können. Das Code-Coverage-Tool ist eine Krücke für schwache kapitalistische Ingenieure. Tetris ist sowjetische Technologie, die vom Willen der Menschen geschmiedet wurde. Tetris benötigt kein Coverage-Tool, um Sie zu testen.

Alles über dich. Vielleicht nicht, aber sobald Sie sich sagen: "Ich muss diesen Code nicht testen, ein normaler Benutzer wird ihn nie erreichen." Sie können sicher sein, dass ein Benutzer, nachdem er dies gesagt hat, einen Weg findet, es zu brechen. Die Götter der Ewigkeit werden dich auslachen. Einsender hier. Es ist "Marketing-Spam" in dem Sinne, dass es auf etwas basiert, das ich bei der Arbeit gemacht habe. Ich verstehe nicht, warum das ein Problem ist. Viele Artikel, die auf dieser Website verlinkt sind, enthalten etwas, das jemand bei der Arbeit getan hat.

Ich fand es interessant, dass man, obwohl dies ein wirklich einfaches Spiel ist, es nicht effektiv testen kann, indem man es einfach spielt. Sie müssen bewusst alle Sonderfälle aufsuchen. Das ist eine Tatsache über praktisch alle Software, aber es ist keine intuitive, und darum geht es in dem Artikel.

Und Basic wird mit einer Menge Bibliotheksfunktionen geliefert, die die Arbeit erleichtern. Keine Notwendigkeit, Speicher, Dispaly, Grafik- oder Tastatur-Interrupts usw. zu initialisieren. Ich habe C64 Basic gesehen. Eine Codezeile kann aus zwei Zeilen auf dem Bildschirm bestehen. Vielleicht mehr als zwei Zeilen, wenn Sie feststellen, dass Sie Namen wie POKE in das aus zwei Zeichen bestehende Akronym komprimieren können, das verschoben wird, und wenn Sie es in einer Liste verwenden, wird es gerne zu etwas dekomprimiert, das nicht innerhalb der Grenze von 2 Bildschirmzeilen eingegeben werden kann.

Das Atari User Magazin hatte eine Funktion namens "Five Liner" für sehr kurze Programme. IIRC Die meisten davon würden bei der Verarbeitung erweitert und oft über das Limit hinausgehen. Nun - es ist ein ziemlich raffinierter Trick, eine Unterroutine zu implementieren, da Sie nur eine Zeilennummer GOSUB können und es nur eine Zeilennummer gibt. Tatsächlich gibt es viele sehr komplizierte einzeilige Javascript-Bibliotheken, die nur eine davon herunterladen. Der verknüpfte Code ist daher nach einer sinnvollen Definition des Begriffs kein Einzeiler.

Man könnte alle Zeilenvorschübe in der Linux-Kernelquelle durch Semikolons und andere geeignete Terminatoren ersetzen. Das würde den Kernel nicht zu einem Einzeiler machen. Eine Codezeile ist nicht dasselbe wie eine Zeile auf einem Bildschirm.

(с) 2019 jobs920.com