Цикл for(i=0;j=0...)
for(i=0,j=0;i<=33,j<=33;j++,i++) { var let = [] alert(let[j]=i) } Видел раньше что люди вставляли в цикл множество переменных, почему данный код не работает? |
Все...надо было ставить "," между i=0,j=0...
======================================== for(i=0;i<=33;i++) { var r = Math.floor(Math.random*10) r+=1 var let = [] let[i] = r alert(let[i]) } Почему не работает данный код? Точнее почему возвращает NaN? |
1) Почему галочку поставить не можете?
2) var r = Math.floor(Math.random()*10) // В смысле не вызываю? Вот же alert(r) |
Все, спасибо. После random скобки не поставил
|
Цитата:
Цитата:
|
На данный момент мне нужно сгенерировать 33 числа случайных числа, которые будут представлять из себя массив, можно просто создать 33 переменных, так было бы легче, но...уж больно быдлокод
|
var arr = [], i = -1; while( ++i < 33 ) { arr.push( Math.random() * 33 | 0 ); } alert( arr.join( '\n' ) ); |
for(i=0;i<=33;i++) { var r = Math.floor(Math.random()*100) r+=getDay() let[i] = r } Это-то я уже давно сделал) Но все равно спасибо. Мне сейчас надо их отсрочивать так, что бы они не повторялись |
nerv_, не 9xakep хотел так:
for(var i = 0, count = 33, arr = []; i < count; i++, arr[i] = Math.random() * count | 0); alert(arr.join( '\n' )); :lol: |
Зачем писать: 33 | 0?
|
Цитата:
var array = [], count = 33, i = -1; while(++i < count) { array.push(Math.random() * count | 0); } array.sort(function(a, b) { return a-b; }); i = array.length; while (i--) { if (array[i] == array[i-1]) array.splice(i, 1); } alert( array.join( '\n' ) ); Цитата:
|
monolithed,
Да хватит писать мне решения :-E Тем более у вас какая то не случайность получается О_о Почти все последовательное...А начало как посл. фибоначи:11235..Но все равно интересный способ :D |
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
9xakep, вся проблема в том, что Вы не можете сформулировать задачу) |
Цитата:
Цитата:
Цитата:
Если не нужна сортровка по возрастанию, то можно так: var array = [1, 3, 1, 10, 1, 3, 4, 7, 30], i = array.length, result = []; while(i--) { if(result.indexOf(array[i]) == -1) result.push(array[i]); } alert(result); PS: только, нужно позаботится о наличии indexOf или не заморачиваться и сделать так: result.join().search(array[i]+'\\b') == -1 |
|
monolithed,
рони, nerv_, Thanks...но у меня свой вариант появляется :) |
Maxmaxmахimus,
Так как, я:" неумелые прогарммисты, неряхи, или новички " то я в принципе не понял что ты сказал |
<script> var let = [1,2,3,4,1,5] alert(let) for(k=0;k<=let.length;k++) { console.log('k: '+let[k]) for(j=0;j<let.length;j++) { if(k==j) j+=1; if(let[k]==let[j]) { let[k] = Math.random() * 6 | 0 } else { continue; } } } alert(let) </script> Та идея что пришла в голову почти осуществилась...но есть некоторые изъяны..Пока он только находит и заменяет повторяющееся число, но не факт что в результате повторения не будет.. Например: [1,2,3,4,1,5] [2,0,3,4,1,5] // заменил первую цифру на 2, проверил, что 2 уже есть, и заменил ее на 0 Но: [1,2,3,4,1,5] [4,2,3,4,1,5] // что в роде такого получилось как-то...4 все равно осталась |
Все...сделал. Знаю что быдлокод явно выраженный, но идеи уже закончились...Читал рассказ про программиста: "приходишь домой и еще весь вечер недоумеваешь, как твой код может работать" У меня сейчас примерно тоже самое)
<script> var let = [] for(i=0;i<33;i++) { var r = Math.random() * 33 | 0 let[i] = r } alert(let) var i = 100; while(i>0) { for(k=0;k<=let.length;k++) { for(j=0;j<let.length;j++) { if(k!=j) { if(let[k]==let[j]) { let[k] = Math.random() * 33 | 0 for(a=0;a<j;a++) { if(let[a]==let[j]) { let[a] = Math.random() * 33 | 0 } } } } } } --i } alert(let) function ch() { var c = 0 for(aa=0;aa<=let.length;aa++) { for(b=0;b<let.length;b++) { if(aa!=b) { if(let[aa] == let[b]) { c+=1 } else { c+=0 } } } } alert(c) } ch() </script> P.S. если последний алерт возвращает 0, значит совпадений не найдено, если же другое число, то оно означает сколько найдено совпадений |
9xakep, да сделай ты уже рекурсивную функцию
|
monolithed,
========= И зачем? |
Цитата:
При этом чтобы сократить количество вызовов и повысить эффективность алгоритма, нужно делать проверку перед вставкой элемента на его наличие в массиве. |
Цитата:
|
Бугага)) Шифратор готов, monolithed, да-да, я ничего не переделал, но это в будущем
<input type='text' value='' id='text'> <input type='button' value='шифровать' onclick='w()'> <script> var let = [] for(i=0;i<33;i++) { var r = Math.random() * 33 | 0 let[i] = r } var i = 100; while(i>0) { for(k=0;k<=let.length;k++) { for(j=0;j<let.length;j++) { if(k!=j) { if(let[k]==let[j]) { let[k] = Math.random() * 33 | 0 for(a=0;a<j;a++) { if(let[a]==let[j]) { let[a] = Math.random() * 33 | 0 } } } } } } --i } let[33] = '_' function w() { var buk = ['А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я',' '] var b = document.getElementById('text').value var b = b.toUpperCase() var b1 = b.match(/./g) for(a=0;a<b1.length;a++) { for(b=0;b<=buk.length;b++) { if(b1[a]==buk[b]) { b1[a] = let[b]; var b2 = ''+b2 + b1[a]; var b3 = b2.replace(/undefined/, '') } } } document.write(b3) } </script> Как работает: 1) Генерирует 33 числа 2) Заносит в массив 3) Делает их не повторяемыми 4) Пишем строку 5) Создаем массив русских букв 6) "Связываем" букву в строке, с буквой массиве, заменяем букву на цифру. Делаем со всеми также... P.S. это укороченный вариант :D Кому интересно копайтесь в коде :p ============= |
monolithed, по идее, циклы без тела работают быстрее :D
(сорри, только первую страницу прочел перед ответом) |
Блин, объясните мне этот парадокс?! Почему, при написании...короче скрин:
![]() Вот лог: b1[0] :А, buk[0]: А // он нашел букву А, нашел букву А в массиве А: 0 // нашел первый элемент массива случ. чисел: 0 b1[0] :0, buk[33]: // какого он снова начинает искать? 0: _ b1[1] :А, buk[0]: А А: 0 b1[1] :0, buk[33]: 0: _ Вот лог любой другой цифры: b1[0] :А, buk[0]: А // нашел первую букву, нашел ее в массиве А: 24 // заменил ее на число в массиве случ. чисел b1[1] :А, buk[0]: А // пошел дальше А: 24 Так происходит если какая-нибудь буква по рандому равна 0? ======= Короче нашел пока единственной решение, не генерировать 0. Поставил при генерации проверку. Теперь генерируется 34 числа, ни одно из которых != 0 |
Часовой пояс GMT +3, время: 12:36. |