Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Маленький тест, :) 
:(
    Опции темы
niasilil
Дата 14.1.2008, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.6.2007
Где: USA

Репутация: 8
Всего: 9



На свежую голову еще полчаса и все решил. Итого: час на обдумывание в первый вечер, полчаса во второй. 
Kangaroo, нифига не надо это учить, все равно забудется через полгода. Направление на обдумывание запомнил и этого достаточно. 
Код

public class Test {

    public static void main(String[] args) {
        // puzzle28();
        // puzzle29();
        // puzzle30();
        // puzzle31();
        // puzzle32();
        // puzzle33();
    }


    //
    // methods below
    // please, scroll down
    //
    //
    //

    public static void puzzle28() {
        Double i = Double.MAX_VALUE;
        System.out.println(i == i + 1);
    }

    public static void puzzle29() {
        float i = Float.NaN;
        System.out.println(i != i);
    }

    public static void puzzle30() {
        Double i = Double.NaN;
        System.out.println(i != i + 0);
    }

    public static void puzzle31() {
        byte i = -1;
        System.out.println(i);
        while (i != 0) {
            i >>>= 1;
            System.out.println(i);
        }
    }

    public static void puzzle32() {
        Float i = -0.0f;
        Float j = 0.0f;
        System.out.println(i <= j && j <= i && i != j);
    }

    public static void puzzle33() {
        int i = Integer.MIN_VALUE;
        System.out.println(i != 0 && i == -i);
    }
}



--------------------
SCJP 5.0, SCJD
PM MAIL   Вверх
Kangaroo
Дата 14.1.2008, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



niasilil
в 30 задачке НаН нельзя использовать, там другое легкое решение smile
32 у вас случайно получилась, ход мыслей неправильный. Просто замените Float на float и вы увидите разницу smile


Цитата(niasilil @  14.1.2008,  08:00 Найти цитируемый пост)
Kangaroo, нифига не надо это учить, все равно забудется через полгода.

Я не имею ввиду учить решения. Я, например, обнаружил проблемы у себя с двоичным исчислением в Java  smile А это необходимо знать.


--------------------
Lost....
PM MAIL MSN   Вверх
Platon
Дата 14.1.2008, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Цитата(niasilil @  14.1.2008,  10:00 Найти цитируемый пост)
Kangaroo, нифига не надо это учить, все равно забудется через полгода.

Не, ну зачем так радикально? Тут просто всплывают такие моменты, которые нечасто встретишь в обычной жизни, я к примеру,  давно забыл про NaN, а то что MAX/MIN_VALUE это не просто числа, а зарезервированные и обладают специфическими свойствами, зато благодаря задачкамKangaroo и конечно, вашим ответам, я уделю этому дополнительное внимание. 

Так что тут не в зубрежке дело.
PM MAIL ICQ   Вверх
batigoal
Дата 14.1.2008, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



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

Но как разминка для мозга - штука хорошая.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Kangaroo
Дата 14.1.2008, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Цитата(batigoal @  14.1.2008,  11:53 Найти цитируемый пост)
Практическая применимость таких хинтов почти нулевая, а за применение конструкций, непонятных при втором прочтении, вообще надо руки отрывать. 

Согласен.

Цитата(batigoal @  14.1.2008,  11:53 Найти цитируемый пост)
Но как разминка для мозга - штука хорошая.

Вот вот. Плюс полезно для подготовки к SCJP.


--------------------
Lost....
PM MAIL MSN   Вверх
v2v
Дата 14.1.2008, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 8
Всего: 56



урок понятен.. поехали дальше.)


--------------------
PM   Вверх
LSD
Дата 14.1.2008, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Kangaroo @  14.1.2008,  10:50 Найти цитируемый пост)
в 30 задачке НаН нельзя использовать, там другое легкое решение

Ну поставить туда String.


Цитата(Kangaroo @  14.1.2008,  10:50 Найти цитируемый пост)
32 у вас случайно получилась, ход мыслей неправильный. Просто замените Float на float и вы увидите разницу

Нет ничего случайного, раз нет ограничений - задача решена. Другой вопрос если она имеет альтернативное решение.


Цитата(batigoal @  14.1.2008,  12:53 Найти цитируемый пост)
Практическая применимость таких хинтов почти нулевая, а за применение конструкций, непонятных при втором прочтении, вообще надо руки отрывать.

Практическая применимость состоит в том, чтобы не забывать про такие граничные случаии и поведение Java в таких ситуациях.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
v2v
Дата 14.1.2008, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 8
Всего: 56



не знал о таких свойствах максимальны/минимальных значений, действительно полезные задачки.

Это сообщение отредактировал(а) v2v - 14.1.2008, 13:10


--------------------
PM   Вверх
Kangaroo
Дата 14.1.2008, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Цитата(LSD @  14.1.2008,  12:08 Найти цитируемый пост)
Ну поставить туда String.

Ну я ж говорил - легкое )))

Цитата(LSD @  14.1.2008,  12:08 Найти цитируемый пост)
Нет ничего случайного, раз нет ограничений - задача решена. Другой вопрос если она имеет альтернативное решение.

1) Тут конечно моя ошибка. Ограничение было, я просто пропустил его, когда постил.
2) Я говорил про  ход мысли, а не решение. Наша задача - что-то понять из этих задачек, а не просто их решить. имхо, niasilil посчитал, что задача решилась из-за -0.0f & 0.0f.. но на самом деле не так.


Цитата(LSD @  14.1.2008,  12:08 Найти цитируемый пост)
Практическая применимость состоит в том, чтобы не забывать про такие граничные случаии и поведение Java в таких ситуациях.

Тоже правильно. Лучше всего это передает название самой книжки: ".... Traps, Pitfalls, and Corner Cases"




--------------------
Lost....
PM MAIL MSN   Вверх
batigoal
Дата 14.1.2008, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Цитата(LSD @  14.1.2008,  14:08 Найти цитируемый пост)
Практическая применимость состоит в том, чтобы не забывать про такие граничные случаии и поведение Java в таких ситуациях.

Тебе приходил вставлять в код проверку на NaN? Я, помоему, даже MAX_VALUE ни разу у себя в коде не использовал.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
LSD
Дата 14.1.2008, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(batigoal @  14.1.2008,  14:01 Найти цитируемый пост)
Тебе приходил вставлять в код проверку на NaN?

Пару раз и один раз был глюк с Integer.MIN_VALUE (после этого я и постил здесь задачку на эту же тему).

Добавлено через 51 секунду
Цитата(Kangaroo @  14.1.2008,  13:19 Найти цитируемый пост)
Ограничение было, я просто пропустил его, когда постил.

И какое?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Kangaroo
Дата 14.1.2008, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Цитата(batigoal @  14.1.2008,  13:01 Найти цитируемый пост)
Тебе приходил вставлять в код проверку на NaN? Я, помоему, даже MAX_VALUE ни разу у себя в коде не использовал.

Это только пару задачек из множества. А вот то, что нужно быть аккуратным с использованием compound assignmen'ов с byte, short, char; или аккуратным с тем же использованием Юникод escape-последовательнестей и т.д. и т.п 


Цитата(LSD @  14.1.2008,  13:06 Найти цитируемый пост)
Цитата(Kangaroo @  14.1.2008,  13:19 )    
Ограничение было, я просто пропустил его, когда постил.    

И какое?

ммм, ограничение было про 30ю задачу. Но все-таки не в ограничениях дело и я описал почему. 
Конечно, если бы мы решили на олимпиаде, или на каком-нибудь другом соревнование, то надо было прописывать все. А тут я просто показал, что решение получилось случайно и это не хорошо. Хорошо - когда человек поняли фишку и запомнил.


--------------------
Lost....
PM MAIL MSN   Вверх
LSD
Дата 14.1.2008, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Ну тогда напиши правильное с твоей точки зрения решение, ибо я пока других не вижу.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Kangaroo
Дата 14.1.2008, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Цитата(LSD @  14.1.2008,  14:55 Найти цитируемый пост)
Ну тогда напиши правильное с твоей точки зрения решение, ибо я пока других не вижу.

Обязательно напишу, просто Samotnik пока просил не выкладывать решения.

Конкретно по этой задачке. Вот код niasilil
Код

        Float i = -0.0f;    
        Float j = 0.0f;    
        System.out.println(i <= j && j <= i && i != j);

Его можно по-разному трактовать. 
Почему он использовал значения -0.0f & 0.0f? Если он хотел этим создать разные объекты Float, тогда он прав и понял идею задачи. Но если он думал, что только с помощью этих значений решилась задачка - то он не прав. Это легко можно увидеть, если заменить Float на float.


--------------------
Lost....
PM MAIL MSN   Вверх
LSD
Дата 14.1.2008, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Это понятно, там -0.0f нафиг не уперлось, все равно -0.0f == 0.0f.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1494 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.