Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Подскажите по неравенствам:) (http://www.flasher.ru/forum/showthread.php?t=124523)

iNils 02.05.2009 15:02

Денис, а почему у тебя результат false, когда в массиве все числа разные?

etc 02.05.2009 15:03

Скорее всего при обратном пробеге работать будет быстрее :)
У iNils-а, по идее, работать должен ещё быстрее.

iNils, у тебя неправильный флеш :) Копипаст кода выдает true.

UPD: Опа, под AS3 работает, под AS2 нет :(

Добавлено через 10 минут
Нате вот:

Код AS1/AS2:

var array:Array = [9, 8, 7, 1, 5, 4, 6];
var str:String = '|' + array.join('|') + '|';
var result:Boolean = true;
 
for (var i:String in array) {
        i = '|' + i + '|';
 
        if (str.indexOf(i) != str.lastIndexOf(i)) {
                result = false;
                break;
        }
}
trace(result);

:D

Wolsh 02.05.2009 15:21

Ну да, в АС2 не было Аrray.indexOf ))))

Psycho Tiger 02.05.2009 15:30

Wolsh, у тебя сравнивает это со следующим, так что не катит.)

__etc, разве indexOf по сути сам не работает как цикл? ИМХО с вложенным циклом будет бегать быстрее, чем с indexOf (если indexOf реализован тоже на АС, черт его знает скорость прогонки, если не на нем написан), надо проверить, как будет минутка.

2iNils: *___* ты гений)

etc 02.05.2009 15:34

Psycho Tiger, у Wolsh-а сортировка в начале :)

Mnilionic 02.05.2009 22:01

вот и моя очередь подошла предложить оптимальный вариант:
Код AS1/AS2:

var arr = [1, 2, 3, 3, 5];
var result:Boolean = !!arr.sort(12);
trace(result);

:)

iNils 02.05.2009 22:22

Отлично.

Psycho Tiger 03.05.2009 13:34

2__etc: ой, проглядел :)

Гм, вообще странно... АС без угрызений совести записывает в Boolean массив, (без !!), даже не сругиваясь на тип мисмач... Вообще, обьясните мне как этот код работает?

Wolsh 03.05.2009 13:57

Хелп:
Цитата:

If you specify a value of 4 or Array.UNIQUESORT for the options parameter and two or more elements being sorted have identical sort fields, Flash returns a value of 0 and does not modify the array.
Соотв. если вернет 0 - приводится к false, !false дает true и !true опять false)) А если вернет массив - то цепочка преобразований начнется с true и им, соответственно, закончится.
Единственно, я не знаю что такое 12, но с 4 нормально вроде работает.

iNils 03.05.2009 13:58

На самом деле, там не нужно 12, хватит и 4.
4 - соответствует константе Array.UNIQUESORT - "Задает уникальное требование сортировки для методов сортировки класса Array. Эта уникальная возможность прекращает сортировку, если любые два сортируемых элемента имеют одинаковые значения." Таким образом, как если будут найдены два одинаковых числа, sort вернет число 0, а в других случаях массив. Двойное отрицание сначала переводит результат в булев тип (0 в true, массив в fasle), а потом инвертирует булев тип в необходимое нам по условию значение.


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

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