Поиск дубликатов чисел в массиве
Решил побаловаться с утра мозги размять и написать скрипт для генерации чисел в лото "6 из 40" :)
Задачка по идее тривиальная, но видать дома мозги не работают. Что хотелось: есть 12 полей по 40 цифр, естественно нужно зачеркнуть только 6 в каждом, следовательно генерим 72 числа, МОЁ условие ради чего и затеял "числа не должны повторяться больше двух раз" (вот тут и споткнулся:( ). Подтолкните пожалуйста мыслю, чтото я в тупике, уже все утро просидел на одном месте:write: Аккуратнее с этой версией, браузер может зависнуть)))
<html>
<input type="button" onClick="Schet()" value="Считаем">
<div id="tableloto"></div>
<script>
function Schet()
{var headTable = '<table>';
var str='<table><tr>', j, m=0;
var k=new Array(), dub=new Array();
var tr='<tr>';
var tr2='</tr>';
for (var i=0;i<72;i++)
{
j=Random(1,40);
k[i]=j;
m=0;
for(var n=0; n<k.length; n++)//вот тут заковыка
{
if (j==k[n])
{m=m+1;
if (m==2){i--;
}
}
}
if (i==6||i==12||i==18||i==24||i==30||i==36||i==42||i==48||i==54||i==60||i==66||i==72)
{str+='</tr><tr>'}
str+='<td> '+k[i]+' </td>';
}
document.getElementById('tableloto').innerHTML+=str+'</table>';
}
function Random(min, max)
{
return Math.floor(Math.random() * (max - min + 1)) + min;
}
</script>
</html>
|
Как обычно спросишь и сразу находишь ответ:lol:
function Schet()
{var headTable = '<table>';
var str='<table><tr>', j, m=0, n=0;
var k=new Array(), dub=new Array();
var tr='<tr>';
var tr2='</tr>';
for (var i=0;i<72;i++)
{
j=Random(1,40);
k[i]=j;
m=0;
for(n; n<k.length; n++)
{
if (j==k[n])
{m=m+1;
if (m==3){i--;j='';
}
}
}
if (i==6||i==12||i==18||i==24||i==30||i==36||i==42||i==48||i==54||i==60||i==66||i==72)
{ if(m!=3){if (i==72){str+='</tr>';}
str+='</tr><tr>';
}
}
(j=='')?j='':str+='<td> '+j+' </td>';
}
document.getElementById('tableloto').innerHTML+=str+'</table>';
}
Но теперь такой вопрос: нужно обеспечить уникальность в строках по 6, а иначе бред получается и опять я в тупике:) |
Вот отличная библиотека для работы с массивами и объектами
http://documentcloud.github.com/underscore/#uniq |
ваш код говнокод.
для начала научитесь нормально форматировать код, чтобы его можно было читать без чувства от вращение. прогоните код, через какой-нибудь js beautifier, и посмотрите как можно красиво оформлять код. во-вторых, изучите базовые операторы JS например % - оператор остатка от деления |
Цитата:
Цитата:
if( !(i%6) ) |
Цитата:
<script type="text/javascript">
var m = [],arr = [],a;
function s(c, d) {return c - d};
function random(c, d, f) {
var g = [],
e = 0;
if (m.length < f) for (var b = 0; b <= d - c; b++) m[b] = b + c;
for (b = 0; b < f; b++) e = Math.floor(Math.random() * m.length), g[b] = m[e], m.splice(e, 1);
return g
};
for (var i = 0; i < 12; i++) a = random(1, 40, 6),
document.write(a.sort(s) + "<br />"),
arr = arr.concat(a); // для проверки
document.write(arr.sort(s) + "<br />");
</script>
|
Цитата:
Цитата:
Про % я знаю, во вторник соревновались с коллегой, кто быстрее найдет все простые числа в любом заданном интервале:haha: Здесь добавил такой ужас просто потому, что вопрос уже задал, а форматирование согласно задаче не сделал, пришлось на лету добавлять и редактировать, самый простой вариант и сделал. Цитата:
|
| Часовой пояс GMT +3, время: 08:04. |