![]() |
|
||||||||||
|
|||||
|
Чёрт! никак не могу придумать алгоритм!
Есть N переменных (назовём эту группу переменных ААА) значение которых может быть 1 или 0. Из эитих переменных надо выбрать случайным образом одну, значение которой равно 1, затем поменять это значение на 0 и сообщить имя этой переменной переменной name.Если такая переменная найдена то переменной flag присваивается значение 1. Если значение всех переменных ААА равно 0, то ничего не происходит и переменной flag присваевается 0. У-ф-ф-ф! Спасибо!
__________________
Это подпись. |
|
|||||
|
Регистрация: Oct 2001
Адрес: Россия, Казань
Сообщений: 270
|
Тебе этот алгоритм для чего нужен-то?
И, вообще говоря, тут вроде и писать нечего - просто в своём предложении замени все "если" на if else и т.д.
__________________
The war does not determine who is right. Only who is left. |
|
|||||
|
Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
|
То, что ты описал - это и есть алгоритм
Если слово в слово переложить это в AS, то получиться: // возвращает индексы ненулевых значений массива aaa в случайном порядке
var aaa = new Array(1, 0, 1, 0, 0, 0, 1, 0, 0, 1);
var flag;
function selectN() {
var k, n = random(aaa.length);
for (var i = 0; i<aaa.length; i++) {
k = (n+i)%aaa.length;
if (aaa[k]) {
break;
}
}
aaa[k] = 0;
flag = i == aaa.length ? 0 : 1;
return flag ? k : -1;
}
trace(selectN());
trace(selectN());
trace(selectN());
trace(selectN());
trace(selectN());
__________________
Верить никому нельзя. Мне - можно. :) |
|
|||||
|
Цитата:
Я специально задал вопрос абстрактно чтобы избежать таких формулеровок. Цитата:
__________________
Это подпись. |
|
|||||
|
Цитата:
Хм... а как понимать эту строчку? flag = i == aaa.length ? 0 : 1;
__________________
Это подпись. |
|
|||||
|
Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
|
Это тернальная операция
![]() Только сегодня на лекции студентам рассказывал ![]() Это значит: если i равно размеру массива (т.е. единиц не найдено), то переменной flag присвоить 0, иначе присвоить 1... Ты ж сам просил...
__________________
Верить никому нельзя. Мне - можно. :) Последний раз редактировалось Dendroid; 23.09.2002 в 17:32. |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
Цитата:
![]() шучу на английском самое правильное название для этой фигни... безо всяких там жутких слов: " one-line if " и все вообще - этьо сильно похоже на маааленькую модель СМО ![]() только еще систему отказов\ожидания обработки заявок сделать и будет оно самое а самое правильное (но совсем не самое простое ) - сделать побитовый алгоритм ![]() тогда будет уже не массив, а всего одна переменная-число компактнее и удобнее... имхо ![]() Последний раз редактировалось Nox Noctis; 23.09.2002 в 17:38. |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
кстати о: flag = i == aaa.length ? 0 : 1;
зачем ? ![]() то же самое: flag = i != aaa.length; |
|
|||||
|
Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
|
конечно можно, но так еще менее понятно
![]()
__________________
Верить никому нельзя. Мне - можно. :) |
|
|||||
|
Издеваетесь
![]()
__________________
Это подпись. |
![]() |
Часовой пояс GMT +4, время: 10:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|