Показать сообщение отдельно
  #9 (permalink)  
Старый 25.07.2011, 10:31
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Я конеш до конца не врубился в ваш алгоритм, но у вас там была бесконечная рекурсия и поэтому скрипт вырубало, я её пофиксил и немного "причесал" ваш код, но т.к. до конца не понял, что в итоге нужно, то не знаю, правильно она работает или нет)
var arr = [1, 2];
ra();
function ra(){
	var rand = function() { return a = Math.random().toString().slice(2,4); }, a;
	do { a = rand(); }
	while (a > 25);
	
	if (a === 0) {
		do { rand(); }
		while (a === 0);
	} else {
		rand = null;
		return prov(+a);
	}
}
function prov(t){
	var sh = 1, k, ind;
	for (k in arr) {
		ind = arr[k]
		if (t === ind) { ra(); return false; } // вот тут была бесконечная рекурсия, т.к. функция не прерывалась. Я поставил return false; , хотя в принципе можно было написать return чего угодно или просто return;
		if (sh >= arr.length) {
			dob(t);
		} else { sh++; }
	}
}
function dob(tr) {
	arr.push(tr);
	if (arr.length >= 25) {
		arr.splice(3,10);
		document.write(arr);
	} else { ra(); }
}


Пример ответа: 1,2,12,7,4,24,14,15,23,10,5,21,18,6,17

Цитата:
"t = b && typeof this[i].shuffle!=='undefined' ? this[i].shuffle() : this[i];"
Это строковый условный оператор, очень удобно использовать, в классическом виде - это выглядит так:
if (t = b && typeof this[i].shuffle !== 'undefined') {
	this[i].shuffle();
} else { this[i]; }
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 25.07.2011 в 12:00.
Ответить с цитированием