Wie kann ich dieses Zellularautomatenprojekt effizienter codieren?
Ich bin ein Neuling in der Programmierung und interessiere mich für zellulare Automaten, also beschloss ich, eins mit JavaScript zu schreiben, sowohl für die Codierpraxis als auch für die Erstellung eines personalisierten. Das von mir erstellte zellulare Automatenprojekt bezieht sich auf eine einfache binäre (schwarz-weiße) 2D-Tabellenzertifizierungsstelle, die die Farben der nächsten 8 Nachbarn einer Zelle und die Farbe der Zelle selbst betrachtet und ihre Farbe in Abhängigkeit von den in der Regel angegebenen Regeln aktualisiert 'Regelsatz' Tabelle unterhalb der CA-Tabelle. Das einzige Problem ist, dass der von mir geschriebene Code für die Verarbeitung jeder Iteration ewig benötigt wird, eindeutig aufgrund der großen Schleifen, die er benötigt. Während ich dies schreibe, stelle ich fest, dass ich die benötigte Verarbeitungsleistung reduzieren kann, indem ich die Vergleichsuche zwischen der aktuellen Nachbarfarbenkonfiguration und der Menge aller möglichen Konfigurationen stoppe, wenn die if-Anweisung die richtige Konfiguration findet. Dies wird jedoch wahrscheinlich nicht reduziert Die Rechenleistung ist um den Betrag erforderlich, den ich bevorzugen würde, und ich bin sicher, dass es mehr Möglichkeiten gibt, um es schneller zu machen. Wenn mir jemand einen Rat geben könnte, wie ich die Rechenleistung noch weiter reduzieren kann, würde ich das sehr begrüßen. Bitte erläutern Sie auch Ihre Antworten in Begriffen. Vielen Dank! Hier ist der Code: Wenn mir jemand einen Rat geben könnte, wie ich die Rechenleistung noch weiter reduzieren kann, würde ich das sehr begrüßen. Bitte erläutern Sie auch Ihre Antworten in Begriffen. Vielen Dank! Hier ist der Code: Wenn mir jemand einen Rat geben könnte, wie ich die Rechenleistung noch weiter reduzieren kann, würde ich das sehr begrüßen. Bitte erläutern Sie auch Ihre Antworten in Begriffen. Vielen Dank! Hier ist der Code:
<!DOCTYPE html> <html> <head> <title></title> <style> table table, td, th td </style> </head> <body> <button onclick="Toggle()">Toggle</button> <!-- Toggle runs the Iterate function with a setInterval --> <button onclick="Iterate()">Iterate</button> <br> <script> document.write("<table>") for (row=0; row<100; row++) { document.write("<tr>") for (col=0; col<100; col++) document.write("</tr>")} document.write("</table>") // This is the cellular automata table document.write("<br>") document.write("<table>") for (row=0; row<16; row++) { document.write("<tr>") for (col=0; col<32; col++) document.write("</tr>")} document.write("</table>") // This is the 'ruleset' table let determiner = 0 function MouseDown(cell) else } window.addEventListener('mouseup', function(event)) function MouseUp(cell) else }} // This section provides the click & drag cell colour changing functions for (i=0; i<512; i++) { if (i % 512 < 256) else if (i % 256 < 128) else if (i % 128 < 64) else if (i % 64 < 32) else if (i % 32 < 16) else if (i % 16 < 8) else if (i % 8 < 4) else if (i % 4 < 2) else if (i % 2 < 1) else this["compare"+i] = } // This creates an object for each possible block of 9 cells to compare with the actual blocks of cells around each cell in the Iterate() function function Iterate() { this["groupvec"] = [] for (i=0; i<100; i++) { for (j=0; j<100; j++) { if (i !== 0 && i !== 99) else if (i == 0) else if (i == 99) if (j !== 0 && j !== 99) else if (j == 0) else if (j == 99) this["group"+"R"+i+"C"+j] = {} for (r in rownum) { for (c in colnum) { this["group"+"R"+i+"C"+j]['unit'+r.toString()+c.toString()] = document.getElementById("R" + rownum[r] + "C" + colnum[c]).style.backgroundColor }} this["groupvec"].push( JSON.stringify(this["group"+"R"+i+"C"+j]) ) }} for (i=0; i<100; i++) { for (j=0; j<100; j++) { for (k=0; k<512; k++) { if (groupvec[j+(100*i)] == JSON.stringify(window["compare"+k.toString()])) { document.getElementById("R"+i+"C"+j).style.backgroundColor = document.getElementById("id"+k).style.backgroundColor }}}}} // This function finds the colours of the cells in a block of 9 cells around each cell, compares them with the 'compare' objects and then changes their colour to the colour of the 'ruleset' table with the same index as the 'compare' object. let toggler = null function Toggle() { if (toggler == null) else } // This provides an automated run function for the CA </script> </body> </html>
0 Antworten auf die Frage
Verwandte Probleme
-
4
Kostenloser HTML Image Map Editor für Windows?
-
3
Komplexe JavaScript-Seite zum Testen der Browser-Leistung?
-
9
Wie versende ich E-Mails in Klartext und nicht in HTML in meinem E-Mail-Client?
-
4
Google ist zu langsam zum Laden
-
6
Was ist ein guter, einfacher und kostenloser HTML-Editor für Windows?
-
6
So finden Sie den Quellcode für HTML-E-Mails
-
1
Gibt es eine Möglichkeit, die Filme in der Videobar von YouTube neu anzuordnen?
-
4
Grafikdesign in Outlook-HTML-E-Mails
-
4
Zeilenumbrüche in Entourage-E-Mails
-
3
Wie kann der Quellcode einer Seite angezeigt werden, wenn ein Popup mit Javascript-Modal zuerst gela...