![]() |
Подскажите по неравенствам:)
Объясните пожалуйста, почему в одном случае выдаётся "true", в другом "false", причём это всё как то связано с "1", при замене допустим на "4" или "6" в обоих случая выдаётся "true". Подскажите как происходит обсчёт и как этого избежать, чтобы всё считалось верно?
Код AS1/AS2:
|
Как избежать - не писать подобных конструкций. Есть скобки, есть && и ||. Не надо лишний раз запутывать компилятор и себя.
|
Для оформления своего кода надо использовать теги [code][/code]
При неравенстве с единицей, последняя преобразуется в булево значение true, что не происходит с другими числами, они дают false. Есть строгое неравенство !== там такого не будет. В вашем случаи q!=w это true, true != 7 тоже true, а true != 1, это true != true, что дает false. Получается: (true != true) != false, это false != false и результат true (true != false) != true, это true != true и результат false |
Ясно, немного разобрался в механизме. Спасибо. Но тогда возникает вот какой вопрос, а как тогда всё таки добиться того, что изначально планировал, как должно выглядеть уровнение, которое выдаёт "false" в том случае если хотя бы "2" из "n" чисел равны и "true" в том случае если все числа отличны друг от друга?:)
|
Ну, каждое нужно сравнить с каждым. Это 2 вложенных цикла.
|
Это ясно, то есть без цикла не обойтись?)
|
Ну в голову пока идея не лезет.
Когда на бумажке смотришь на цифры, ты ведь каждый сравниваешь с каждым, так? |
Можно, ручками.
Код AS1/AS2:
Но два цикла не надо, хватит одного. Код AS1/AS2:
|
Код AS1/AS2:
|
Гениально! Спасибо, никогда бы сам такое не придумал))) Меня только на такое хватило))
Код:
var array:Array = [1, 8, 4, 9]; |
Денис, а почему у тебя результат false, когда в массиве все числа разные?
|
Скорее всего при обратном пробеге работать будет быстрее :)
У iNils-а, по идее, работать должен ещё быстрее. iNils, у тебя неправильный флеш :) Копипаст кода выдает true. UPD: Опа, под AS3 работает, под AS2 нет :( Добавлено через 10 минут Нате вот: Код AS1/AS2:
|
Ну да, в АС2 не было Аrray.indexOf ))))
|
Wolsh, у тебя сравнивает это со следующим, так что не катит.)
__etc, разве indexOf по сути сам не работает как цикл? ИМХО с вложенным циклом будет бегать быстрее, чем с indexOf (если indexOf реализован тоже на АС, черт его знает скорость прогонки, если не на нем написан), надо проверить, как будет минутка. 2iNils: *___* ты гений) |
Psycho Tiger, у Wolsh-а сортировка в начале :)
|
вот и моя очередь подошла предложить оптимальный вариант:
Код AS1/AS2:
|
Отлично.
|
2__etc: ой, проглядел :)
Гм, вообще странно... АС без угрызений совести записывает в Boolean массив, (без !!), даже не сругиваясь на тип мисмач... Вообще, обьясните мне как этот код работает? |
Хелп:
Цитата:
Единственно, я не знаю что такое 12, но с 4 нормально вроде работает. |
На самом деле, там не нужно 12, хватит и 4.
4 - соответствует константе Array.UNIQUESORT - "Задает уникальное требование сортировки для методов сортировки класса Array. Эта уникальная возможность прекращает сортировку, если любые два сортируемых элемента имеют одинаковые значения." Таким образом, как если будут найдены два одинаковых числа, sort вернет число 0, а в других случаях массив. Двойное отрицание сначала переводит результат в булев тип (0 в true, массив в fasle), а потом инвертирует булев тип в необходимое нам по условию значение. |
Дак я так и не понял - я четко указал тип Boolean - на какой радости туда флеш посмел записать массив?
|
Потому что это AS1/AS2 :)
Типизация отсутствует в runtime. |
Итак, резюме
Цитата:
Код AS1/AS2:
|
12 это 4 + 8.
Потому, что если в массиве все зачения уникальны, то массив отсортируется. Поэтому, чтоб изначальный массив оставался неизменным и плюсуется 8. Хотя если плевать на очерёдность элементов, то пусть сортируются :) |
Так лучше?
Код AS1/AS2:
|
| Часовой пояс GMT +4, время: 21:05. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.