Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 23.09.2002, 15:24
Denisator вне форума Посмотреть профиль Отправить личное сообщение для Denisator Найти все сообщения от Denisator
  № 1  
Denisator
 
Аватар для Denisator

Регистрация: Aug 2000
Адрес: Калининград
Сообщений: 236
Отправить сообщение для Denisator с помощью ICQ
По умолчанию Помогите написать алгоритм!

Чёрт! никак не могу придумать алгоритм!
Есть N переменных (назовём эту группу переменных ААА) значение которых может быть 1 или 0. Из эитих переменных надо выбрать случайным образом одну, значение которой равно 1, затем поменять это значение на 0 и сообщить имя этой переменной переменной name.Если такая переменная найдена то переменной flag присваивается значение 1. Если значение всех переменных ААА равно 0, то ничего не происходит и переменной flag присваевается 0. У-ф-ф-ф!

Спасибо!
__________________
Это подпись.

Старый 23.09.2002, 15:57
Aib вне форума Посмотреть профиль Отправить личное сообщение для Aib Посетить домашнюю страницу Aib Найти все сообщения от Aib
  № 2  
Aib

Регистрация: Oct 2001
Адрес: Россия, Казань
Сообщений: 270
Тебе этот алгоритм для чего нужен-то?
И, вообще говоря, тут вроде и писать нечего - просто в своём предложении замени все "если" на if else и т.д.
__________________
The war does not determine who is right. Only who is left.

Старый 23.09.2002, 16:04
Dendroid вне форума Посмотреть профиль Отправить личное сообщение для Dendroid Посетить домашнюю страницу Dendroid Найти все сообщения от Dendroid
  № 3  
Dendroid
 
Аватар для Dendroid

Регистрация: 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());
Конечно это еще можно оптимизировать (если надо).....
__________________
Верить никому нельзя. Мне - можно. :)

Старый 23.09.2002, 16:19
Denisator вне форума Посмотреть профиль Отправить личное сообщение для Denisator Найти все сообщения от Denisator
  № 4  
Denisator
 
Аватар для Denisator

Регистрация: Aug 2000
Адрес: Калининград
Сообщений: 236
Отправить сообщение для Denisator с помощью ICQ
Цитата:
Тебе этот алгоритм для чего нужен-то?
Чтобы из N человечков выбрать одного незанятого, занять его и пустить на него тарелку :-).

Я специально задал вопрос абстрактно чтобы избежать таких формулеровок.

Цитата:
И, вообще говоря, тут вроде и писать нечего - просто в своём предложении замени все "если" на if else и т.д.
возникают трудности здесь:"Из эитих переменных надо выбрать случайным образом одну, значение которой равно 1"
__________________
Это подпись.

Старый 23.09.2002, 16:40
Denisator вне форума Посмотреть профиль Отправить личное сообщение для Denisator Найти все сообщения от Denisator
  № 5  
Denisator
 
Аватар для Denisator

Регистрация: Aug 2000
Адрес: Калининград
Сообщений: 236
Отправить сообщение для Denisator с помощью ICQ
Цитата:
Тебе этот алгоритм для чего нужен-то?
Чтобы из N человечков выбрать одного незанятого, занять его и пустить на него тарелку :-).

Хм... а как понимать эту строчку?
flag = i == aaa.length ? 0 : 1;
__________________
Это подпись.

Старый 23.09.2002, 17:28
Dendroid вне форума Посмотреть профиль Отправить личное сообщение для Dendroid Посетить домашнюю страницу Dendroid Найти все сообщения от Dendroid
  № 6  
Dendroid
 
Аватар для Dendroid

Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
Это тернальная операция
Только сегодня на лекции студентам рассказывал
Это значит: если i равно размеру массива (т.е. единиц не найдено), то переменной flag присвоить 0, иначе присвоить 1...
Ты ж сам просил...
__________________
Верить никому нельзя. Мне - можно. :)


Последний раз редактировалось Dendroid; 23.09.2002 в 17:32.
Старый 23.09.2002, 17:36
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 7  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
Цитата:
Оригинал написал(а) Dendroid
тернальная операция
кххх... нет чтобы выражаться по-человечески !...

шучу
на английском самое правильное название для этой фигни...
безо всяких там жутких слов:
" one-line if " и все

вообще - этьо сильно похоже на маааленькую модель СМО
только еще систему отказов\ожидания обработки заявок
сделать и будет оно самое

а самое правильное (но совсем не самое простое ) -
сделать побитовый алгоритм
тогда будет уже не массив, а всего одна переменная-число
компактнее и удобнее...
имхо


Последний раз редактировалось Nox Noctis; 23.09.2002 в 17:38.
Старый 23.09.2002, 17:45
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 8  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
кстати о: flag = i == aaa.length ? 0 : 1;

зачем ?

то же самое: flag = i != aaa.length;

Старый 23.09.2002, 17:53
Dendroid вне форума Посмотреть профиль Отправить личное сообщение для Dendroid Посетить домашнюю страницу Dendroid Найти все сообщения от Dendroid
  № 9  
Dendroid
 
Аватар для Dendroid

Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
конечно можно, но так еще менее понятно
__________________
Верить никому нельзя. Мне - можно. :)

Старый 23.09.2002, 21:05
Denisator вне форума Посмотреть профиль Отправить личное сообщение для Denisator Найти все сообщения от Denisator
  № 10  
Denisator
 
Аватар для Denisator

Регистрация: Aug 2000
Адрес: Калининград
Сообщений: 236
Отправить сообщение для Denisator с помощью ICQ
Издеваетесь
__________________
Это подпись.

Создать новую тему   Часовой пояс GMT +4, время: 12:21.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 12:21.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.