30 lines
1.4 KiB
JavaScript
30 lines
1.4 KiB
JavaScript
'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);
|