Как я могу более эффективно кодировать этот проект клеточных автоматов?
Я новичок в программировании, и у меня есть интерес к сотовым автоматам, поэтому я решил попробовать написать скрипт с использованием JavaScript как для практики кодирования, так и для того, чтобы я мог сделать персонализированный. Созданный мной проект клеточных автоматов предназначен для простой двоичной (черно-белой) 2D-таблицы CA, которая просматривает цвета 8 ближайших соседей ячейки и цвет самой ячейки и обновляет ее цвет в зависимости от правил, указанных в таблица 'ruleset' под таблицей CA. Единственная проблема заключается в том, что написанный мной код обрабатывает каждую итерацию вечно, очевидно из-за всех больших циклов, в которых он нуждается. На самом деле, когда я пишу это, я понимаю, что могу уменьшить вычислительную мощность, необходимую, прекратив поиск сравнения между текущей конфигурацией цвета соседа и набором всех возможных конфигураций, когда оператор if находит правильную конфигурацию, но это, вероятно, не уменьшит вычислительная мощность нужна на количество, которое я бы предпочел, и я уверен, что есть больше способов сделать это быстрее. Если бы кто-нибудь мог дать мне несколько советов о том, как уменьшить вычислительную мощность еще больше, я был бы очень признателен. Также, пожалуйста, объясните свои ответы в терминах непрофессионалов. Спасибо! Вот код: Если бы кто-нибудь мог дать мне несколько советов о том, как уменьшить вычислительную мощность еще больше, я был бы очень признателен. Также, пожалуйста, объясните свои ответы в терминах непрофессионалов. Спасибо! Вот код: Если бы кто-нибудь мог дать мне несколько советов о том, как уменьшить вычислительную мощность еще больше, я был бы очень признателен. Также, пожалуйста, объясните свои ответы в терминах непрофессионалов. Спасибо! Вот код:
<!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 ответов на вопрос
Похожие вопросы
-
4
Бесплатный HTML-редактор изображений для Windows?
-
3
Сложная страница JavaScript для проверки производительности браузеров?
-
9
Как отправить электронное письмо в виде обычного текста, а не HTML в моем почтовом клиенте?
-
-
4
Google слишком медленно загружается
-
6
Что такое хороший, простой и бесплатный редактор HTML для Windows?
-
6
Как найти источник для электронной почты HTML
-
1
Есть ли способ переупорядочить фильмы в видеобаре YouTube?
-
4
Графический дизайн в Outlook HTML-письма
-
4
Разрывы строк в письмах Entourage
-
3
Как просмотреть исходный код страницы, когда сначала загружается модальное всплывающее окно javascri...