Domanda:
In che modo un atomo decide a cosa legarsi?
bwarner
2011-11-29 18:53:53 UTC
view on stackexchange narkive permalink

Dato, ad esempio, un atomo di idrogeno (che può avere solo 1 legame max), che si trova su un bonder accanto ad altri due atomi che sono anche su leganti e hanno slot di legame disponibili, come viene determinato quale atomo l'idrogeno finisce per legarsi a? Ho provato a sperimentare con l'ordine di priorità delle indicazioni stradali, ma non sembra essere corretto.

Sei risposte:
#1
+22
MichaelHouse
2011-12-22 22:44:10 UTC
view on stackexchange narkive permalink

Temo che non ci sia una vera scienza dietro questo. Ogni bonder ha un numero di priorità probabilmente basato sulla struttura dei dati interni (array, elenco collegato, qualunque cosa). Il gioco elabora questo elenco dal primo all'ultimo ordine. Quindi l'ordine dei legami nel gioco è proprio il modo in cui i legami sono organizzati. Sarei carino se fossero etichettati, ma per quanto ne so non c'è modo di ottenere la loro priorità nel gioco. Quindi, con due bonder collegati, scorre l'elenco in sequenza. Ad esempio, con 4 bonder l'elenco dei collegamenti selezionati sarebbe simile a questo:

  1. (1, 2)
  2. (1, 3)
  3. (1, 4)
  4. (2, 3)
  5. (2, 4)
  6. (3, 4)

Che è semplicemente un elenco ordinato delle coppie di numeri prioritari. Con questa conoscenza, devi solo sapere quale bonder ha quale priorità. Nonostante la sperimentazione ho scoperto che:

Per 4 bonders in un nuovo livello i numeri di priorità bonder sono:

  1 - 2 | . | 4 - 3  

Per un nuovo livello con 8 bonders, i numeri di priorità del bonder sono:

  1 - 2 | . | 4-3 | . | 5-6 | . | 8 - 7  
Non è necessaria una vera scienza, ma questa sembra promettente come risposta definitiva. Lo proverò stasera per verificare che corrisponda alla mia esperienza.
In un gioco in cui non è necessario preoccuparsi della stereochimica, degli effetti di induzione, della cinetica o della termodinamica, la scienza non gioca un ruolo molto importante.
Ottima risposta, dovrebbe esserci davvero un modo nel gioco per determinarlo oltre a ricordare la configurazione originale.
E se gli otto bonders fossero inizialmente in un layout orizzontale?
@ZeroOne Scusa, non ho visto quella configurazione, non ho mai finito il gioco: / Facci sapere cosa hai scoperto.
È stata aggiunta un'opzione al menu delle opzioni che ti consente di "Mostra priorità vincolante" che aggiunge numeri ai vincitori e rende molto più facile tenerne traccia ora.
#2
+6
aepurniet
2012-09-12 10:04:25 UTC
view on stackexchange narkive permalink

Non credo che esista un rigoroso ordine di preferenza dei bonder; si basa su qualcos'altro.

Ho fatto il seguente esperimento: tre leganti in fila orizzontale, con una H non legata a ciascuno. Ho registrato i risultati delle sei combinazioni di bonders.

  # order result sidea 1 2 3 HH H Lb 3 2 1 HH H Lc 2 3 1 H HH Rd 1 3 2 HH H Le 3 1 2 H HH Rf 2 1 3 H HH R  

L'ho ripetuto molte volte e c'era sempre una divisione del 50% con un gruppo che preferiva il legame a 'L', un gruppo che preferiva 'R 'legame, e un gruppo viene diviso. (Ogni gruppo è identificato dal bonder nel mezzo.)

Quindi c'è evidentemente una struttura per la valutazione, ma ognuno di questi sei casi è contraddetto da un altro (se assumiamo che i bonders valutino in ordine ); cioè, se (a) è l'ordine corretto, allora perché in (b) il legante preferisce (2,3) rispetto a (1,2)? Questo è vero per ogni caso.

Il trucco della rotellina del mouse sembra fare qualcosa (ha fatto un clic e presumo abbia elaborato un'azione), ma non ho potuto cambiare l'output di (a).

Se i tuoi legami 1, 2 e 3 hanno priorità 1, 3 e 2, rispettivamente, la risposta di Timbo lo spiegherebbe.
#3
+6
Timbo
2014-06-19 19:44:30 UTC
view on stackexchange narkive permalink

Ho utilizzato alcune ore di test. Il risultato è che c'è una priorità nascosta, ma il bonder controlla solo il bonder a destra e sotto di essa. Ciò significa che se ci sono 4 bonder si accumulano nel modo seguente:

  2 3 14  

Il primo bonder 1 controllerà sotto ea destra di esso e può " t trovare qualcosa da legare. Il secondo passo è che il bonder 2 si legherà con il bonder 3 e 4, dopodiché bonder 3 legami con 1 e l'ultimo bonder 4 non trova nulla da legare.

Se un bonder ha due possibili connessioni (a destra e sotto di essa), quindi si legherà prima con il bonder con la priorità più alta (numero inferiore). Ciò significa che il secondo step bonder 2 si legherà prima con 3 e poi con 4.

#4
+5
D0SBoots
2016-12-21 14:03:05 UTC
view on stackexchange narkive permalink

Alcune delle altre risposte sono sbagliate e mi infastidisce il fatto che il resto sia suddiviso in più post, quindi sulla base di una ricerca approfondita ecco il mio elenco definitive di come funziona il legame:

  1. Ogni vincente ha un numero di priorità invisibile, 1-8. Questo numero è determinato dalla sua posizione iniziale nel reattore.
  2. Il legame procede con un anello esterno attraverso tutti i legami e un anello interno attraverso tutti i legami. Quindi, se ci sono 4 bonders, l'ordine che controlla è (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. Tuttavia, il legame si verifica solo se il secondo adesivo si trova direttamente sotto oa destra del primo adesivo. (Ringraziamo Timbo per averlo capito.) Questo è il motivo per cui l'elenco sopra non porta al doppio legame: se il layout è 2-1, la voce (1,2) nell'elenco sopra non si attiva, poiché 2 (il secondo legante) è a destra del primo legante.
  4. L'ordine dei legami è not influenzato dal passaggio del mouse sui bonders, almeno non nell'ultima versione. Sì, fa un clic, ma non sono riuscito a far cambiare l'ordine di legame sulla mia molecola di prova di BO2, indipendentemente da come ho ruotato il mouse. Ciò è supportato dal fatto che i clic della rotellina del mouse non vengono salvati nella cronologia degli annullamenti come qualsiasi altra cosa.
  5. L'ordine del bonder è diverso per i diversi tipi di reattore:

Standard / Sensore

  1 3
2 4
 

Assemblaggio / Fusione / Nucleare / Ricerca (4)

  1 2
3 4
 

Ricerca (2) (Presumibilmente, impossibile verificare)

  1 2
 

Ricerca (8)

  1 2
3 4
5 6
7 8
 

Super-Bonder / Sandbox

  5 1 3 7
6 2 4 8
 

Sì, ci sono due diversi layout per il quadrato 2x2 "standard" e sì, il Super-Bonder è davvero così strano.


Infine, ecco alcuni suggerimenti pratici su come eseguire il debug di un design bizzarro:

Supponiamo che tu stia cercando di creare la molecola HP≡CO, in una configurazione piegata.Crei un quadrato 2x2 di bonders e il tuo input assomiglia a questo:

  P = C

H O
 

Ma quando lo leghi, esce così:

  P≡C
  |
H-O
 

Dato come funziona il bonding, possiamo dedurre che il bonder in basso a sinistra viene eseguito prima del bonder in alto a sinistra, quindi scambiarli lo risolverà.La priorità relativa degli altri due legami non ha importanza.

Tuttavia, se l'output in errore è stato ruotato in questo modo:

  H P
|⦀
O-C
 

In questo caso, l'angolo inferiore sinistro è prima dell'angolo superiore destro e devi scambiare diagonalmente.La priorità dei due bonders sulla diagonale opposta non ha importanza.La differenza nei due esempi deriva dalla regola che lega solo la forma al basso e alla destra.

Grazie per questa risposta tardiva ma più esauriente, dovrebbe essere quella accettata.Solo un commento: i tuoi passaggi (2) e (3) possono essere riformulati in quanto vi è un unico loop su tutti i bonder in ordine di priorità.Per ogni bonder, cerca di legarsi con il quadrato a destra e il quadrato sotto.Se c'è un bonder in entrambe le caselle, la priorità rompe il pareggio.
Grazie!Sì, sono d'accordo che quello che hai detto è equivalente, ed è decisamente più breve dirlo in questo modo.Ho strutturato l'algoritmo nel modo in cui l'ho fatto perché è il modo più preciso e più sensato per me;in particolare, sospetto che sia così che è effettivamente codificato nel gioco.
In realtà, mentre sono d'accordo che il tuo modo è più chiaro da capire, vorrei * sperare * che il modo in cui è effettivamente codificato nel gioco sia quello che ho detto.Un doppio loop su tutte le coppie di reattori sarebbe inefficiente, un algoritmo O (n ^ 2), mentre il mio è O (n).Un programmatore esperto dovrebbe sapere di non fare un doppio loop quando un singolo loop funzionerebbe.
Questo sta entrando nelle erbacce, ma ... È possibile che non ci sia una mappa conveniente dalla posizione all'oggetto bonder.Dipende davvero da come funzionano gli interni del gioco, su cui ovviamente possiamo solo speculare.Quello che so è che un algoritmo O (N ^ 2) non è un grosso problema quando N ha un valore massimo di 8.
In gran parte d'accordo, ma 64 vs 8 è sicuramente un grosso problema poiché si trova nella sezione critica del codice.Potrebbe essere che quel livello di ottimizzazione fosse necessario per ottenere la massima velocità impostata per andare incredibilmente veloce come fa.Comunque usciamo dalle erbacce;)
#5
+3
Cory J
2011-11-30 03:03:00 UTC
view on stackexchange narkive permalink

I bonders hanno ciascuno una "priorità nascosta", in cui proveranno gli altri bonders in un certo ordine. Se non sta facendo quello che vuoi, puoi scambiare la posizione del bonder.

Spiacenti, non riesco a trovare una buona fonte da citare per questo.

Sembra esserci una sorta di ordine nascosto, ma è STRANO. Ho disposto C, H, C su 3 bond in orizzontale e ho provato ad incollarli. Per le 6 combinazioni di questi 3 leganti, metà C-H C e metà C H-C legati, ma qualsiasi modello non è affatto chiaro.
@lilserf Per quanto ne so, la logica è qualcosa del tipo "Determina cosa sta cercando di fare l'utente, quindi trova un modo per fare qualcos'altro". : p
#6
  0
sam
2012-09-01 11:35:38 UTC
view on stackexchange narkive permalink

A quanto pare, se passi il mouse sopra il bonder e fai scorrere la rotellina del mouse su / giù, l'ordine dei bond dei bonders cambia. Ha funzionato per me.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...