All streams
Search
Write a publication
Pull to refresh
23
0
Send message
А все заметили наверху глайдерную пушку, которое через какое-то количество ходов рушит в клочья один из обломков? И еще несколько глайдеров случайно образуются в процессе, если я не ошибаюсь, и улетают в бесконечность.
ну и union all не сохраняет порядок объединяемых множеств, на это тоже нельзя закладываться.
Как зачем? Чтобы избавиться от дополнительного уровня вложенности.
Ну, конкретно для этой задачи можно составить систему линейных уравнений, которая примитивно решается за N^3 ( можно и быстрей ), в то время как ваш способ имеет экспоненциальную сложность.
А вообще не понял, о чем статья. О том, что интуиция рулит? Ну, так вы написали программу которая делает тупые действия, а не ищет решение данной проблемы, поэтому неудивительно, что она действовала так тупо.
Разумеется, что программа написанная за 5 минут на коленке не может сравниться в изощренности с человеческим мозгом.
Здесь нет никакого противоречия. Само по себе переключение контекста — это очень быстрая и ненапряжная операция. По сравнению с выполнением sql-оператора — копейки. Т.е. выполнять для sql-запроса одно дополнительное переключение контекста ничего не стоит.
Проблемой становится когда переключение контекста выполняется для каждого фетча в запросе ( как в самом первом куске кода). Т.е. если запрос возвращает 100 млн строк, то будет 200 млн. переключений контекста ( туда-сюда), а это уже совсем другое дело.
Т.е. вы когда кодите, думаете «так, эта часть неважна, использую-ка я здесь самый неоптимальный алгоритм который знаю»? Может вы в неважных частях также переменные называете как попало, код не комментируете и не соблюдаете стили форматирования? Использовать эффективные алгоритмы — это такая же необходимая привычка, как и другие правила хорошего кода. Кроме того, опыт говорит, что алгоритм который имеет оптимальный ( или близкий к оптимальному ) порядок сложности для задачи — чаще всего незначительно сложнее в написании, чем неоптимальный ( при определенном опыте ). Вот константы в сложности алгоритма — их, да, можно оптимизировать бесконечно, и этим нужно заниматься только в случае необходимости.

Ну и над действительно большим проектом работает куча людей, и желательно чтобы каждый из них делал хорошо свою часть работы, а не делал второпях ее так, чтобы потом другим людям пришлось все переделывать.
Когда-то говорили «Мы все довольны своим умом и никто положением». А сейчас я вижу слишком много людей которые довольны своей скоростью гугления и считают что это их в чем-то выделяет среди всех остальных. Зато не видел ни одного программиста, который бы жаловался на свой навык гугления. Для программистов — это такой же необходимый навык как умение печатать, и хвастаться им или говорить что он в этом крут — просто странно.
А еще, увы, слишком много людей считает
а) что нагуглить можно все
б) что во всем можно разобраться за 3 минуты
Это не так. Можно нагуглить сложность и описание алгоритма по его названию, но нельзя нагуглить алгоритм для данной конкретной задачи, которая сейчас стоит перед тобой. Можно нагуглить названия паттернов, их описания и примерную реализацию — но нагуглив это, ты не научишься ими пользоваться уместно и логично. Можно за 3 минуты нагуглить что такое монады, но это не значит что ты сразу же сможешь применять их с пользой.
Все эти вопросы призваны проверять базу. Человек который знает базу — не тратит время в работе на выяснение тривиальных вещей. Он гуглит более сложные вещи, когда ему понадобится. Не стыдно гуглить Штор-Вагнера, стандарт IEEE 754 или параметры не самых часто используемых функций вашего родного языка, но гуглить «сложность алгоритма сортировки пузырьком» — это честно говоря, гребаный стыд.

«Если «Сrafty» и «Fruit» на порядок слабее, то как распознали плагиат?»

В огороде бузина, а в Киеве дядька? Здесь два независимых утверждения.
По поводу первого.

Смотрим авторитетный рейтинг CEGT. www.husvankempen.de/nunn/40_4_Ratinglist/40_4_AllVersion/rangliste.html

Rybka 1.0 Beta w32 — 2817 ( первая версия рыбки которая появилась )
Fruit 2.1 — 2714 ( это та опенсорсная версия Фрукта, из которой были заимствования ).

К сожалению не смог найти какая версия Крафти была выложена на тот момент, но даже спустя 4 года сильнейшая 32-х ядерная версия Крафти

Crafty 23.00 (CB) w32 2CPU — 2720 ( на тот момент было что-то еще слабее ).

Разница в 100 пунктов ЭЛО — это очень весомо. Т.е. матожидаемо победа в матче из 10 партий где-то 6.5 на 3.5, т.е. почти в 2 раза.

По поводу второго вашего утверждения можете почитать ссылку, данную автором вначале статьи. Там есть отдельно документы по поводу как сравнивали с крафти, и как с фруктом.

www.chessvibes.com/reports/rybka-disqualified-and-banned-from-world-computer-chess-championships/
Попробую написать развернутый комментарий.
1. Сами по себе программы «Сrafty» и «Fruit» на порядок слабее даже «Rybka 1.0 beta», не говоря о нынешней «Rybka 4», которая выиграет у «Rybka 1.0 beta» четыре партии из пяти. Таким образом, мое мнение, что заимствование кода на самом деле не сильно повлияло, и Райлих мог написать ту же самую рыбку, не заимствуя ни строчки кода. А заимствуя, скажем, идеи, что лицензией GPL разрешено. :)
Ну, и думаю, если понадобится Райлих сможет переписать эти фрагменты, если за 4 года работы над проектом они еще остались.
2. Потеря титулов задним числом — думаю, несущественна. Райлих уже прилично заработал на рыбке, и еще заработает, т.к. вряд ли кто-то передумает покупать один из сильнейших шахматных движков из-за этой истории.
3. История со «Стрелкой» ( движок написанный Юрием Осиповым ) довольно мутная. В частности, на форуме шахматных разработчиков автор «Стрелки» Юрий Осипов первоначально сам утверждал, что дизассемблировал «Рыбку». В дальнейшем он почему-то стал утверждать что написал свой движок на основе «Фрукта», а еще позже вместе с единомышленниками создал опенсорсный движок «Ипполит», от которого сразу отпочковались куча форков, как это обычно бывает. Кстати, желающим присоединиться велкам — ippolit.wikispaces.com/. Первоначальные исходники Ипполита на С, кстати, очень сильно наводят на мысль о дизассемблировании какой-то другой программы :)
4. На текущий момент сильнейший движок в мире — «Гуддини», и есть серьезное подозрение на то, что за основу взят кто-то из семейства «Ипполитов» ( в чем автор не признается ). Первоначально этот движок демонстрировал уж очень похожую на Ипполитов игру, но затем автор придумал как его усовершенствовать, чтобы сделать намного сильнее. Движок бесплатный. 2-3 места по разным тестам занимает либо платная «Рыбка», либо различные опенсорсные Ипполитообразные движки. Но в любом случае, утверждать, как это сделано в заголовке что «Рыбка» лучшая — уже, конечно, нельзя.
Внезапно — обороноспособность! Я это понял, потому что это единственное слово в русском языке с семью буквами «о».
Действительно, круто.
#2 имхо точнее перевести так: «Пишите вашу программу так, как будто парень, который будет ее поддерживать жестокий психопат, который знает, где вы живете»
Спасибо, хорошая статья!
Я уже давно предлагаю на программах писать «не содержит ГМО яндекс-бар»
Я-то могу.
Пожалуйста: принципиально она решается, разумеется. По схеме Шеннона.
Вопрос в том, решается ли она за реальное время.
А вот от вас я ничего не увидел кроме голословного «задача простая!».
Если простая, будьте добры, решение, или хотя бы наметки к нему.
В противном случае утверждать что она простая — самонадеянно и неуважительно по отношению к тем людям, которые долго думали над ней и не посчитали ее простой.
Именно этим и прет от ваших постов «сейчас я вам тут все на листочке посчитаю!».
P.S. Великая теорема ферма тоже простая на первый взгляд.

Конечно, в гугле одни дураки сидят.
Впрочем, вы можете им это доказать, все в ваших руках.
Зачет! А вообще когда-то была мысль о запрете этого парадокса на форумах, так же как запрещено скажем, слово «гитлер». Сразу появляется десяток очень упертых твердолобых людей, твердящих «1/2 — хоть ты тресни!!!» и десяток людей до посинения пытающихся их убедить. Через некоторое время ( иногда — неделю) до них, наконец, доходит и они сливаются. Но первоначальное обсуждение к тому моменту уже давно убито.
Ну, я как-то на 500 так обогатился. Мне тогда деньги очень нужны были как раз.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity