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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 20.04.2004, 17:28
Whatsername вне форума Посмотреть профиль Отправить личное сообщение для Whatsername Найти все сообщения от Whatsername
  № 11  
Whatsername

Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
А я помню как Nox Noctis переписывал два листа кодов Дебройла : ) Но все вышло очень красиво в итоге.
Спасибо за разъяснения, BitSky, ты это сильно задвинул, но теперь все понятно. Спасибо большое : )
Nox Noctis, так ты из ленингаарда? Может я когда-нибудь угощу тебя пивом?

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

Регистрация: Aug 2001
Сообщений: 4,121
нимало не возражаю.. отметим выход второго издания Мука что ли...


Последний раз редактировалось Nox Noctis; 20.04.2004 в 17:47.
Старый 20.04.2004, 18:53
Whatsername вне форума Посмотреть профиль Отправить личное сообщение для Whatsername Найти все сообщения от Whatsername
  № 13  
Whatsername

Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
2 Nox Noctis: Супер Отличный повод! Экземпляр для меня подпишешь? Я тебе email'ю, окей?
2 BitSky: Спасибо еще раз. Я все глубже постигаю твой пример. Сила : )

Старый 20.04.2004, 19:03
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 14  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
неспортивно чужие книжки подписывать

вон давай к Иву в очередь за автографами лучше встанем

Старый 20.04.2004, 19:37
Whatsername вне форума Посмотреть профиль Отправить личное сообщение для Whatsername Найти все сообщения от Whatsername
  № 15  
Whatsername

Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
Иву? а это кто?

// а Ivan Dembicki : ) Да, истый флешер : )


Последний раз редактировалось dm_nev; 20.04.2004 в 19:41.
Старый 20.04.2004, 20:43
Whatsername вне форума Посмотреть профиль Отправить личное сообщение для Whatsername Найти все сообщения от Whatsername
  № 16  
Whatsername

Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
Позвольте, я еще покажу вам один код по наитию Мука.

Вот что он мне поручил:
"Прикрепите нечувствительную функцию сортировки по алфавиту к классу Array в качестве наследуемого метода."
Тогда у меня и возник вопрос по области видимости аргументов. Такая не слишком корявая?

Код:
Array.prototype.compareFunction = function(element1, element2) {
	return (element1.toLowerCase()>element2.toLowerCase());
};
Array.prototype.sortbyAlph = function() {
	this.sort(this.compareFunction);
};
//
x = ["Zebra", "ape"];
x.sortbyAlph();
trace(x); // ape,Zebra

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

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
такая оч пральная

Старый 21.04.2004, 01:43
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 18  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
вобщем-то всё правильно и работает.
но.
имха, не стоит отступать от буквы мануала там где это не принципиально :)

ведь сказано же:
Цитата:
compareFunction can have one of the following three values:

-1 if A should appear before B in the sorted sequence
0 if A = B
1 if A should appear after B in the sorted sequence
теперь сравните: (не исключено что я где-то ошибся при тестах, но разница очень уж велика...)

1. твой вариант.
Код:
Array.prototype.compareFunction = function(element1, element2) {
	return (element1.toLowerCase()>element2.toLowerCase());
};
Array.prototype.sortbyAlph = function() {
	this.sort(this.compareFunction);
};
//
x = [];
for (var i = 0; i<100; i++) {
	x.push(chr(32+i));
}
//
heap = [];
for (var i = 0; i<10; i++) {
	heap.push(x.concat());
}
var s = getTimer();
for (var i = 0; i<10; i++) {
	heap[i].sortbyAlph();
}
var e = getTimer();
trace(e-s);
2. вариант честный. (я машинально делаю так :) )
Код:
Array.prototype.compareFunction = function(element1, element2) {
	var e1 = element1.toLowerCase();
	var e2 = element2.toLowerCase();
	return Number(e1<e2 || (e1>e2)*(-1));
};
Array.prototype.sortbyAlph = function() {
	this.sort(this.compareFunction);
};
//
x = [];
for (var i = 0; i<100; i++) {
	x.push(chr(32+i));
}
//
heap = [];
for (var i = 0; i<10; i++) {
	heap.push(x.concat());                
}
var s = getTimer();
for (var i = 0; i<10; i++) {
	heap[i].sortbyAlph();
                heap[i].reverse();
}
var e = getTimer();
trace(e-s);
тестил на компе: П3, 667мхз, 384мб СДрам. получил разницу в пол секунды и выше. я бы сказал что разница критическая :) хотя понятное дело что и так и так работать будет.

причем это взят массив всего в 100 элементов, состоящий из чаров. если возьмем строки длиной больше 1 - разница будет еще существеннее, что-то мне подсказывает. (не проверял)


Последний раз редактировалось Nox Noctis; 21.04.2004 в 01:46.
Старый 21.04.2004, 20:00
Whatsername вне форума Посмотреть профиль Отправить личное сообщение для Whatsername Найти все сообщения от Whatsername
  № 19  
Whatsername

Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
Nox Noctis, твоя compareFunction - гимн остроумию, но вот результаты моих пяти тестов:

У меня trace(e-s):
4859 4897 4834 4905 5048
У тебя trace(e-s):
6908 6838 6863 6815 6828

Хотя твой пример должен отрабатывать совершенно точно быстрее. (??)

У меня еще два вопроса:
a)Зачем нужна heap[i].reverse() в твоем примере?
b)Странная строчка "heap.push(x.concat())", Moock said, concat() должен принимать аргументы и возвращать новый массив. Reference said: "concat returns: Nothing". кому верить?

Старый 21.04.2004, 23:38
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 20  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
тупо копирую код, который выше и проверяю:

вариант 1: 3378 3371 3608 3604 3355
вариант 2: 2836 2858 2844 2823 2853

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

ээ... я неспроста основные сведения о конфигурации компа на котором тестил написал. ты на каком компе проверял ?


вопрос а) реверс нужен потму что иначе сортировка идет в нисходящем порядке :) а надо в восходящем. признаю, я скопировал код из своей работы, а не писал его заново :)

вопрос б) конкат() - это простой способ скопироваьт массив. получить копию массива без прямого перебора :) не верь мануалу, мук дело говорит :) конкат слепливает исходный массив и то который в параметре. а если в параметре пусто - то возвращается НОВЫЙ массив, содержащий все эелементы исходного.

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

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

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


 


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


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