'use strict'; // формирование комбинаций const generate = function() { let text = ""; for (let row = 0; row < 15; row++) { let line = ""; for (let col = 0; col < 4; col++) { let combo = ""; for (let len = 0; len < 20; len = combo.length) { const co = random("!".charCodeAt(0), "~".charCodeAt(0)); const ch = String.fromCharCode(co); if (len == 0 && (ch >= "A" && ch <= "Z" || ch >= "a" && ch <= "z") || len > 0 && combo.indexOf(ch) < 0) combo += ch; } line += escapeHTML(combo) + " "; } text += line + (row < 14 ? "\n" : ""); } return text; } // получение случайного числа в заданном диапазоне const random = (min, max) => Math.round(min + (max-min) * Math.random()); // экранирование спецсимволов HTML для корректного отображения в браузере const escapeHTML = (str) => str.replace("&", "&").replace(">", ">").replace("<", "<"); // кнопка обновить на странице — обновляем комбинации const refresh = () => document.getElementById("combinations").innerHTML = generate(); // после загрузки всех частей страницы — обновляем комбинации document.addEventListener("DOMContentLoaded", refresh);