Есть такой код:
function generate() {
document.getElementById("myTable").innerHTML = "";
const numbers = (new Array(25)).fill(1).map((a, i) => a + i);
let resultSet = new Map();
while (resultSet.size < 1000) {
let nums = shuffle(numbers).slice(0, 5);
let key = (nums.sort() + '');
resultSet.set(key, nums);
}
resultSet.forEach(val => {
const main = createTableWithContent(val.join('-'), "one");
const additional = createTableWithContent(randInt(), "two");
main.append(additional);
document.getElementById("myTable").append(main);
})
}
function shuffle(arr) {
return arr.map(el => {
return {
item: el,
sort: Math.random()
}
}).sort((a, b) => a.sort - b.sort).map(el => el.item);
}
function randInt(min = 1, max = 4) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function createTableWithContent(content, className) {
const tableEl = document.createElement("TABLE");
tableEl.className = className || "";
tableEl.append(content);
return tableEl;
}
<input class="annoying-btn" type="button" value="Получить комбинацию" onclick="generate()" />
<div id="myTable"></div>
Как переделать код так, чтобы вместо чисел составлялись комбинации из unicode символов из этого раздела:
https://unicode-table.com/ru/blocks/playing-cards/
Не понимаю, как сделать массив генерированных Unicode символов.
Существует N = С(52, 8) = 752538150
комбинаций карт.
Можно сгенерировать 1000 неповторяющихся случайных чисел в этом диапазоне и сопоставить каждому числу комбинацию.
В данном случае количество комбинаций очень мало по сравнению с диапазоном, поэтому можно не заморачиваться с хитрыми подходами, а просто проверять, есть ли уже такое число в наборе (map) сгенерированных.
Пусть комбинация представлена 64-битным числом. Тогда один набор можно сгенерировать, проверяя, что очередной генерируемый случайный бит не совпадает с уже имеющимся, пока не наберётся 8 установленных битов (выбрано 8 карт).
А комбинация записывается в мап с проверкой, не было ли ещё такой, пока не наберётся 1000 комбинаций
пример на Python с уменьшенными числами (в комментах - что должно быть):
import random
combs = {}
while len(combs) < 10: #1000
cardset = 0
cnt = 0
while cnt < 4: #8
r = 1 << random.randrange(8) # 52
if (cardset & r) == 0:
cardset = cardset | r
cnt += 1
if not(cardset in combs):
combs[cardset] = 0
for x in combs:
print(bin(x))
0b1101100
0b11101
0b1001101
0b1011010
0b110011
0b10111
0b110101
0b10001101
0b10001011
0b10101001
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Помогите пожалуйста, как на JavaScript проверить отрицательное числоПри введение отрицательного число проверить в условии при строгом равенстве
Начал программировать на js, но опыта малоХотелось бы как на php иметь аналогию с классами
Есть приложение FlaskВ части Python происходит обработка файла
Подскажите как добавить в код id, я так понимаю дело в нём, потому что редактирование происходит только после перезагрузки страницыСпасибо)