Frage:
Wie entscheidet ein Atom, an was es sich bindet?
bwarner
2011-11-29 18:53:53 UTC
view on stackexchange narkive permalink

Wenn beispielsweise ein Wasserstoffatom (das nur maximal 1 Bindung haben kann) auf einem Bonder neben zwei anderen Atomen sitzt, die sich ebenfalls auf Bonder befinden und über verfügbare Bindungsschlitze verfügen, wie wird bestimmt, welches Atom der Wasserstoff ist? endet Bindung an? Ich habe versucht, damit zu experimentieren, dass es sich um eine Prioritätsreihenfolge von Anweisungen handelt, aber das scheint nicht korrekt zu sein.

Sechs antworten:
MichaelHouse
2011-12-22 22:44:10 UTC
view on stackexchange narkive permalink

Ich fürchte, dahinter steckt keine wirkliche Wissenschaft. Jeder Bonder hat eine Prioritätsnummer, die wahrscheinlich auf der internen Datenstruktur basiert (Array, verknüpfte Liste, was auch immer). Das Spiel verarbeitet diese Liste nur in der ersten bis letzten Reihenfolge. Die Bindungsreihenfolge im Spiel ist also genau so, wie die Bonder angeordnet sind. Ich wäre nett, wenn sie beschriftet wären, aber soweit ich weiß, gibt es keine Möglichkeit, ihre Priorität im Spiel zu bekommen. Wenn also zwei Bonder verknüpft sind, wird die Liste nur nacheinander durchlaufen. Bei 4 Bonders würde die Liste der aktivierten Links beispielsweise ungefähr so ​​aussehen:

  1. (1, 2)
  2. (1, 3)
  3. (1, 4)
  4. (2, 3)
  5. (2, 4)
  6. (3, 4)
  7. Dies ist einfach eine geordnete Liste der Paare von Prioritätsnummern. Mit diesem Wissen müssen Sie nur wissen, welcher Bonder welche Priorität hat. Beim Experimentieren habe ich Folgendes festgestellt:

    Für 4 Bonder in einem neuen Level lauten die Bonderprioritätsnummern:

      1 - 2 | . | 4 - 3  

    Für ein neues Level mit 8 Bonders lauten die Bonder-Prioritätsnummern:

      1 - 2 | . | 4 - 3 | . | 5 - 6 | . | 8 - 7  
Keine wirkliche Wissenschaft erforderlich, aber dies sieht als endgültige Antwort vielversprechend aus. Ich werde es heute Abend ausprobieren, um zu überprüfen, ob es meiner Erfahrung entspricht.
In einem Spiel, in dem man sich nicht mit Stereochemie, Induktionseffekten, Kinetik oder Thermodynamik befassen muss, spielt die Wissenschaft keine große Rolle.
Tolle Antwort, es sollte wirklich eine Möglichkeit im Spiel geben, dies zu bestimmen, abgesehen davon, dass man sich an die ursprüngliche Konfiguration erinnert.
Was ist, wenn sich die acht Bonder anfänglich in einem horizontalen Layout befinden?
@ZeroOne Entschuldigung, ich habe diese Konfiguration nicht gesehen, ich habe das Spiel nie beendet: / Lass uns wissen, was du herausfindest.
Dem Optionsmenü wurde eine Option hinzugefügt, mit der Sie "Bonder-Priorität anzeigen" können, um den Bonders Zahlen hinzuzufügen und dies jetzt viel einfacher zu verfolgen.
aepurniet
2012-09-12 10:04:25 UTC
view on stackexchange narkive permalink

Ich glaube nicht, dass es eine strikte Reihenfolge der Bonderpräferenzen gibt. es basiert auf etwas anderem.

Ich habe das folgende Experiment durchgeführt: drei Bonder in einer horizontalen Reihe mit jeweils einem ungebundenen H. Ich habe die Ergebnisse der sechs Kombinationen von Bundern aufgezeichnet.

  # order result sidea 1 2 H HH Rf 2 1 3 H HH R  

Ich habe dies viele Male wiederholt, und es gab immer eine 50% ige Aufteilung, wobei eine Gruppe die L-Bindung bevorzugte, eine Gruppe R bevorzugte 'Bindung, und eine Gruppe wird geteilt. (Jede Gruppe wird durch den Bonder in der Mitte identifiziert.)

Die Bewertung hat also offensichtlich eine gewisse Struktur, aber jeder dieser sechs Fälle wird von einem anderen widerlegt (wenn wir davon ausgehen, dass die Bonder in der richtigen Reihenfolge bewertet werden ); d.h. wenn (a) die richtige Reihenfolge ist, warum bevorzugt der Bonder dann in (b) (2,3) gegenüber (1,2)? Dies gilt für jeden Fall.

Der Trick mit dem Mausrad scheint etwas zu bewirken (er hat einen Klick ausgelöst und ich gehe davon aus, dass eine Aktion verarbeitet wurde), aber ich konnte die Ausgabe von (a) nicht ändern.

Wenn Ihre Bonder 1, 2 und 3 die Prioritäten 1, 3 und 2 haben, würde Timbos Antwort dies erklären.
Timbo
2014-06-19 19:44:30 UTC
view on stackexchange narkive permalink

Ich habe ein paar Stunden getestet. Das Ergebnis ist, dass es eine versteckte Priorität gibt, aber der Bonder überprüft nur den Bonder rechts und darunter. Das heißt, wenn 4 Bonder vorhanden sind, bauen Sie diese auf folgende Weise auf:

  2 3 14  

Der erste Bonder 1 prüft unten und rechts davon und kann ' Der zweite Schritt besteht darin, dass Bonder 2 mit Bonder 3 und 4 verbunden wird. Danach verbindet Bonder 3 mit 1 und der letzte Bonder 4 findet nichts zum Binden.

Wenn ein Bonder hat zwei mögliche Verbindungen (rechts und darunter), dann wird es zuerst mit dem Bonder mit der höheren Priorität (niedrigere Zahl) verbunden. Dies bedeutet, dass der zweite Schritt Bonder 2 zuerst mit 3 und dann mit 4 verbindet.

D0SBoots
2016-12-21 14:03:05 UTC
view on stackexchange narkive permalink

Einige der anderen Antworten sind falsch, und es stört mich, dass der Rest auf mehrere Posts verteilt ist. Aufgrund gründlicher Recherchen ist hier meine definitive-Liste, wie das Binden funktioniert:

  1. Jeder Bonder hat eine unsichtbare Prioritätsnummer von 1-8. Diese Zahl wird durch die Ausgangsposition im Reaktor bestimmt
  2. Die Bindung erfolgt mit einer äußeren Schleife über alle Bonder und einer inneren Schleife über alle Bonder. Wenn es also 4 Bonder gibt, lautet die überprüfte Reihenfolge (1,1), (1,2), (1,3), (1,4), (2,1), (2,2), (2) , 3), (2,4), (3,1), (3,2), (3,3), (3,4), (4,1), (4,2), (4,3) ), (4,4).
  3. Eine Bindung tritt jedoch nur auf, wenn sich der zweite Bonder direkt unter oder rechts vom ersten Bonder befindet. (Dank an Timbo, der dies herausgefunden hat.) Aus diesem Grund führt die obige Liste nicht zu Doppelbindungen: Wenn das Layout 2-1 ist, wird der Eintrag (1,2) in der obigen Liste nicht ausgelöst. da 2 (der zweite Bonder) rechts vom ersten Bonder ist.
  4. Die Bonder-Reihenfolge ist not, die durch Mausbewegungen auf den Bonders beeinflusst wird, zumindest nicht in der neuesten Version. Ja, es macht ein Klickgeräusch, aber ich konnte die Bindungsreihenfolge auf meinem Testmolekül von BO2 nicht ändern, egal wie ich mit dem Mausrad gefahren bin. Dies wird durch die Tatsache unterstützt, dass Mausradklicks nicht wie alles andere im Rückgängig-Verlauf gespeichert werden.
  5. Die Bonderreihenfolge ist für verschiedene Reaktortypen unterschiedlich:
  6. ol>

    Standard / Sensor

      1 3
    2 4
     

    Versammlung / Fusion / Nuklear / Forschung (4)

      1 2
    3 4
     

    Forschung (2) (Kann vermutlich nicht verifizieren)

      1 2
     

    Forschung (8)

      1 2
    3 4
    5 6
    7 8
     

    Super-Bonder / Sandbox

      5 1 3 7
    6 2 4 8
     

    Ja, es gibt zwei verschiedene Layouts für das "Standard" 2x2-Quadrat, und ja, der Super-Bonder ist wirklich so seltsam.


    Zum Schluss noch einige praktische Tipps zum Debuggen eines Balky-Designs:

    Angenommen, Sie versuchen, das Molekül HP≡CO in einer gebogenen Konfiguration herzustellen.Sie erstellen ein 2x2-Quadrat aus Bonders und Ihre Eingabe sieht folgendermaßen aus:

      P = C.
    
    H O.
     

    Aber wenn Sie es verbinden, sieht es so aus:

      P≡C
      |
    H-O
     

    In Anbetracht der Funktionsweise der Bindung können wir schließen, dass der untere linke Bonder vor dem oberen linken Bonder ausgeführt wird. Wenn Sie ihn also austauschen, wird dies behoben.Die relative Priorität der beiden anderen Bonder spielt keine Rolle.

    Wenn Ihre fehlerhafte Ausgabe jedoch stattdessen wie folgt gedreht wurde:

      H P.
    |⦀
    O-C
     

    In diesem Fall steht links unten vor rechts oben und Sie müssen diagonal tauschen.Die Priorität der beiden Bonder auf der gegenüberliegenden Diagonale spielt keine Rolle.Der Unterschied zwischen den beiden Beispielen ergibt sich aus der Regel, dass sich Bindungen nur nach unten und rechts bilden.

Vielen Dank für diese späte, aber umfassendere Antwort, es sollte die akzeptierte sein.Nur ein Kommentar - Ihre Schritte (2) und (3) können angepasst werden, da es eine einzige Schleife über alle Bonder in Prioritätsreihenfolge gibt.Für jeden Bonder wird versucht, sich mit dem Quadrat rechts und dem Quadrat darunter zu verbinden.Wenn sich auf beiden Feldern ein Bonder befindet, wird das Unentschieden durch die Priorität unterbrochen.
Vielen Dank!Ja, ich stimme zu, dass das, was Sie gesagt haben, gleichwertig ist, und es ist definitiv kürzer, es so zu sagen.Ich habe den Algorithmus so angelegt, wie ich es getan habe, weil dies der genaueste und für mich sinnvollste Weg ist.Insbesondere vermute ich, dass es im Spiel tatsächlich so codiert ist.
Obwohl ich damit einverstanden bin, dass Ihr Weg klarer zu verstehen ist, würde ich * hoffen *, dass die Art und Weise, wie er tatsächlich im Spiel codiert ist, das ist, was ich gesagt habe.Eine Doppelschleife über alle Reaktorpaare wäre ineffizient, ein O (n ^ 2) -Algorithmus, während meiner O (n) ist.Ein ausgebildeter Programmierer sollte wissen, dass er keine Doppelschleife ausführen soll, wenn eine Einzelschleife funktionieren würde.
Dies kommt ins Unkraut, aber ... Es ist möglich, dass es keine bequeme Karte von der Position zum Bonder-Objekt gibt.Es kommt wirklich darauf an, wie die Interna des Spiels funktionieren, worüber wir natürlich nur spekulieren können.Was ich weiß ist, dass ein O (N ^ 2) -Algorithmus keine große Sache ist, wenn N einen Maximalwert von 8 hat.
Ich stimme weitgehend zu, aber 64 gegen 8 ist definitiv eine große Sache, da dies im kritischen Abschnitt des Codes steht.Könnte sein, dass diese Optimierungsstufe notwendig war, um die höchste Geschwindigkeitseinstellung so unglaublich schnell wie möglich zu machen.Wie auch immer, lasst uns das Unkraut verlassen;)
Cory J
2011-11-30 03:03:00 UTC
view on stackexchange narkive permalink

Die Bonder haben jeweils eine "versteckte Priorität", bei der sie die anderen Bonder in einer bestimmten Reihenfolge ausprobieren. Wenn es nicht das tut, was Sie wollen, können Sie die Position des Bonders vertauschen.

Entschuldigung, ich kann keine gute Quelle dafür finden.

Es scheint eine Art versteckte Ordnung zu geben, aber es ist seltsam. Ich legte C, H, C horizontal auf 3 Bonder und versuchte, sie zu verkleben. Für die 6 Kombinationen dieser 3 Bonder, halbgebundenes C-H C und halbgebundenes C H-C, aber jedes Muster ist überhaupt nicht klar.
@lilserf Soweit ich das beurteilen kann, lautet die Logik etwa "Bestimmen Sie, was der Benutzer versucht, und finden Sie dann eine Möglichkeit, etwas anderes zu tun". : p
sam
2012-09-01 11:35:38 UTC
view on stackexchange narkive permalink

Wenn Sie mit der Maus über den Bonder fahren und das Mausrad nach oben / unten rollen, ändert sich anscheinend die Bindungsreihenfolge der Bonder. Es hat bei mir funktioniert.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...