Поиск дубликатов чисел в массиве
Решил побаловаться с утра мозги размять и написать скрипт для генерации чисел в лото "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, время: 00:17. |