Мне кажется, в программировании отсутствует понятие «необходимости» как таковое. Всегда есть какое-то альтернативное решение. Всегда есть «архитектура лучше/выше/быстрее», «код понятнее/короче/круче». Потому-то оно и искусством считается=)
Но я понимаю вашу подколку. Не так давно у меня с коллегой был спор на тему полезности подобных извращенных задач. Мне кажется, я его убедил. Сделать это в тексте тяжелее, но я попробую.
Эти задачки — это не паттерны, это синтетические примеры, в которых неочевидное поведение языка (например) приводит к неожиданным результатам. И если встретить подобный пример в живом проекте вряд ли удастся (и слава богу) — понимание этой неочевидности краевых случаев _необходимо_ (противоречу сам себе с необходимостью;)).
Разумеется, так нельзя писать, но понимать, как устроены дженерики (что не нужно полагаться на тип и удивляться пришедшим багам), как разруливаются конфликты имен — никогда не повредит.
Да, все верно, хоть и использовать deprecated методы и не комильфо;)
Все-таки подход к управлению потоками кардинально поменялся и это как раз тот случай, когда deprecated == нельзя, имхо.
Я не писал этот способ, потому что задание, все-таки, было «дополнительным» к дженерикам. Грубо говоря, на «усвоенный материал». На мой взгляд весьма забавное (как и каст нулла)
Повторюсь, почему нельзя было сразу так сделать? Очевидное же решение. Подозреваю, что это связано со старыми коллекциями, но не владею точной информацией.
А я и не говорю, что с дженериками плохо. Мне просто совсем непонятно, почему нельзя было хранить ссылку на класс-параметр в объекте дженерика. В этом случае дженерики оставались бы дженериками и в рантайме.
Сказал, не подумав.
Здесь важно, что элемент встречается строго больше, чем N/2 раз
иначе все действительно ломается при нечетном N:
N=5
12134
результат — 4
Второй проход требуется, чтобы в ситуации, когда такого элемента в принципе нет (условие задачи «некий элемент встречается как минимум N/2 раз» не выполняется) — понять это, а не выдать неверный ответ
с другой — я словами не могу описать, как меня бесит, когда люди начинают смешивать обобщение и конкретику.
Лично я никогда, подчеркиваю, никогда не стал бы говорить про «всех».
Я могу быть уверен и сказать за себя, да, черт возьми, я могу быть не уверен, но сказать, но обобщать — это уже демагогия.
Так вот я бы (уловил камень в свой огород, отвечаю) был бы искренне рад платить налог и т.п. если бы он шел на дело… да вообще, не отказался бы от больших налогов, если бы… Простите, еще чуть чуть и я начну уже спорить о нашем государстве, а не о способах выживания в нем.
А так — везде, где люди — везде поводок, не спорю (и не спорил, кстати).
по поводу первой части — ниже я писал, что идеал для меня — это места для выгула собак, чтобы могли порезвиться, и обязательно на поводке в остальных местах. Собственно, что тут спорить, все так хотят. Просто из-за отсутствия инфраструктуры большинство проблем (остальные — человеческий фактор)
Вот было бы здорово, если бы в нашей стране были предусмотрены нормальные места для выгула собак (не на от***сь, а хорошая инфраструктура)
мечты, мечты.
Я лично считаю, что держать собаку на привязи всегда — это одно, всегда без поводка — это второе, а «довести до места на поводке» и «отпустить порезвиться с себеподобными» — третье.
Уверен, большинство за третий вариант — но см. начало комментария… увы.
это хабр, многим наплевать на суть, а похоливарить все любят)) (я тоже, если что, люблю поспорить, но статья интересна, хоть и во многом мне непонятна;))
В подобных дискуссиях мне всегда хочется задать вопрос: а что будет, если собака на поводке? Если хозяин не сможет ее удержать? Он будет нести полую ответственность за содеянное? А если отпускает гулять без поводка — не будет что ли? конечно будет.
Если человек уверен в своем питомце — не кажется ли вам, что он будет менее бдительным?
Но это скорее насчет вашей позиции: «существует опасная собака среди потенциально безопасных», если я вас правильно понял.
Что касается проблемы — то я с вами соглашусь, но по другой причине.
Много людей боятся собак. Стереотипы, горький опыт, навеянное сми — не важно, это факт. Собака без поводка (а уж тем более без хозяина) вызывает страх у прохожих. И это, безусловно, не лучшее, на что можно тратить свои нервы. И дело даже не в том, что собака не тронет, а в том, что это доставит, кхм, дискомфорт окружающим.
ps сам собак не боюсь. лишь адекватно опасаюсь бездомных и излишне агрессивных.
Забавно. На моем стареньком ноутбуке если смотреть на монитор прямо, то телефон желтый, если немного снизу, то зеленый… Хамелеон. Какой же он на самом деле?=)
Но я понимаю вашу подколку. Не так давно у меня с коллегой был спор на тему полезности подобных извращенных задач. Мне кажется, я его убедил. Сделать это в тексте тяжелее, но я попробую.
Эти задачки — это не паттерны, это синтетические примеры, в которых неочевидное поведение языка (например) приводит к неожиданным результатам. И если встретить подобный пример в живом проекте вряд ли удастся (и слава богу) — понимание этой неочевидности краевых случаев _необходимо_ (противоречу сам себе с необходимостью;)).
Разумеется, так нельзя писать, но понимать, как устроены дженерики (что не нужно полагаться на тип и удивляться пришедшим багам), как разруливаются конфликты имен — никогда не повредит.
Все-таки подход к управлению потоками кардинально поменялся и это как раз тот случай, когда deprecated == нельзя, имхо.
Я не писал этот способ, потому что задание, все-таки, было «дополнительным» к дженерикам. Грубо говоря, на «усвоенный материал». На мой взгляд весьма забавное (как и каст нулла)
В любом случае, добавлю в пост, спасибо.
;)
А я и не говорю, что с дженериками плохо. Мне просто совсем непонятно, почему нельзя было хранить ссылку на класс-параметр в объекте дженерика. В этом случае дженерики оставались бы дженериками и в рантайме.
А по делу — спасибо за статью. Не сказал бы, что много нового, но акцентировать внимание на таких «мелочах», на мой взгляд, полезно.
Как раз про Ваш пример.
Еще раз. Для нечетного числа проверка нужна, если в условии будет нестрогое неравенство:
«некий элемент встречается как минимум N/2 раз»
Тогда, действительно, написанное Вами верно, и я лишь привел пример для N=5
Но на самом деле в условии строгое неравенство:
«Задача: в массиве длиной N найти элемент, который повторяется больше N/2 раз.»
И тут уже при выполнении условия выполнение второго прохода не требуется ни для каких N.
кстати, в вашем примере
112345
алгоритм выдаст 5 (опять же, условие задачи не выполнено)
Здесь важно, что элемент встречается строго больше, чем N/2 раз
иначе все действительно ломается при нечетном N:
N=5
12134
результат — 4
Уж выпендриваетесь (это к автору ресурса, не к Вам), так не делайте ошибок.
с другой — я словами не могу описать, как меня бесит, когда люди начинают смешивать обобщение и конкретику.
Лично я никогда, подчеркиваю, никогда не стал бы говорить про «всех».
Я могу быть уверен и сказать за себя, да, черт возьми, я могу быть не уверен, но сказать, но обобщать — это уже демагогия.
Так вот я бы (уловил камень в свой огород, отвечаю) был бы искренне рад платить налог и т.п. если бы он шел на дело… да вообще, не отказался бы от больших налогов, если бы… Простите, еще чуть чуть и я начну уже спорить о нашем государстве, а не о способах выживания в нем.
А так — везде, где люди — везде поводок, не спорю (и не спорил, кстати).
мечты, мечты.
Я лично считаю, что держать собаку на привязи всегда — это одно, всегда без поводка — это второе, а «довести до места на поводке» и «отпустить порезвиться с себеподобными» — третье.
Уверен, большинство за третий вариант — но см. начало комментария… увы.
Если человек уверен в своем питомце — не кажется ли вам, что он будет менее бдительным?
Но это скорее насчет вашей позиции: «существует опасная собака среди потенциально безопасных», если я вас правильно понял.
Что касается проблемы — то я с вами соглашусь, но по другой причине.
Много людей боятся собак. Стереотипы, горький опыт, навеянное сми — не важно, это факт. Собака без поводка (а уж тем более без хозяина) вызывает страх у прохожих. И это, безусловно, не лучшее, на что можно тратить свои нервы. И дело даже не в том, что собака не тронет, а в том, что это доставит, кхм, дискомфорт окружающим.
ps сам собак не боюсь. лишь адекватно опасаюсь бездомных и излишне агрессивных.