Рубрика «Алгоритмы» - 74

Отсеиваем простые из миллиарда чисел быстрее, чем в Википедии - 1
(Источник рисунка )

Общеизвестно, что Решето Эратосфена (РЭ) один из древнейших алгоритмов, появившийся задолго до изобретения компьютеров. Поэтому можно подумать, что за века этот алгоритм изучен вдоль и поперек и добавить к нему ничего невозможно. Если посмотреть Википедию – там море ссылок на авторитетные источники, в которых запросто утонуть. Поэтому удивился, когда на днях случайно обнаружил, что вариант, который в Википедии преподносится как оптимальный, можно заметно оптимизировать.
Читать полностью »

Навеяно комментарием под постом Фибоначчи на собеседовании. Пользователь pavellyzhin упомянул следующую задачу на собеседовании (комментарий):

Больше года назад откликнулся на вакансию «php-программист», прислали ТЗ и там было задание с Фибоначчи: выбрать все четные числа Фибоначчи в диапазоне от 1 до 10000. Решил с помощью цикла(for). Еще там нужно было SQL-запрос составить на выборку ближайших дней рождений пользователей, что-то сверстать, точно не помню и какую-то функцию написать. Все сделал, отправил. Прислали ответ: «по итогам тестового задания Вы не приняты». Что конкретно им не понравилось так и не написали. Вот сейчас сижу и думаю, наверное все-таки из-за Фибоначчи пролетел… :)

В данном посте я собираюсь показать как можно было решить эту задачу эффектно, а может даже и эффективно, но это не точно. Заодно продемонстрирую парочку из тысяч доказанных про числа Фибоначчи фактов.
Читать полностью »

Начало Предыдущая

Нейронные сети

В последнее время про НС говорят очень много. Я бы даже сказал, неприлично много. Я никогда не считал НС даже намёком на ИИ и, судя по многочисленным комментариям, это мнение разделяет немало людей. Некоторые высказывания: Читать полностью »

[Первая и вторая части.]

Трассировка лучей на GPU в Unity — Часть 3 - 1

Сегодня мы совершим большой скачок. Мы отойдём от исключительно сферических конструкций и бесконечной плоскости, которые трассировали ранее, и добавим треугольники — всю суть современной компьютерной графики, элемент, из которого состоят все виртуальные миры. Если вы хотите продолжить с того, чем мы закончили в прошлый раз, то воспользуйтесь кодом из части 2. Готовый код того, что мы будем делать сегодня, выложен здесь. Давайте приступим!

Треугольники

Треугольник — это всего лишь список трёх соединённых вершин, каждая из которых хранит свою позицию, а иногда и нормаль. Порядок обхода вершин с вашей точки обзора определяет, на что мы смотрим — на переднюю или заднюю грань треугольника. Традиционно «передом» считается порядок обхода против часовой стрелки.

Во-первых, нам нужно иметь возможность определять, пересекает ли луч треугольник, и если да, то в какой точке. Очень популярный (но совершенно точно не единственный) алгоритм для определения пересечений луча с треугольником был предложен в 1997 году джентльменами Томасом Акенин-Меллером и Беном Трембором. Подробно о нём можно прочитать в их статье «Fast, Minimum Storage Ray-Triangle Intersection» здесь.
Читать полностью »

Обклеенный десятками датчиков «объект исследований» при натурных динамических испытаниях (например, при исследовании виброактивности транспортного средства) легко обеспечивает нас большим объемом полученных данных, но вот что с ними делать, зачастую не очень-то ясно. То же самое — при симуляционом моделировании динамических процессов систем с большим количеством степеней свободы.

Это может быть не совсем понятно тем, кто не сталкивается с проблемой регулярно, но — отсматривать соответствующую анимацию процесса, стохастического во времени и пространстве, как правило, почти бессмысленно. Где сломается или почему так трясет — обычно «не видно». Что придумывали кроме анимации, ниже расскажу, а порекомендую вот что.

Путем элементарнешей процедуры можно получить и сами пространственные «формы» колебаний, причем именно реально проявляющиеся в данных условиях нагружения, и интенсивности их проявления (дисперсии; при желании — и сами процессы).

Исходный
многоканальный
процесс

image

Разложение
image
image
image

Рис.1 Разложение многоканального отклика по псевдоформам. «Струна в вязкой среде»(см.рис.2)

Читать полностью »

Почему data scientist — это не data engineer? - 1

«Ученый может открыть новую звезду, но не может создать её. Для этого ему пришлось бы обратиться к инженеру». Гордон Линдсей Глегг, «Дизайн дизайна» (1969)

Несколько месяцев назад я писал о различиях между специалистами по теории и методам анализа данных (data scientist) и специалистами по обработке данных (data engineer). Я говорил об их навыках и общих отправных точках. Произошло кое-что интересное: data scientist'ы начали наступать, утверждая, что они на самом деле так же компетентны в области инженерии данных, как и специалисты по обработке данных. Это было интересно, потому что специалисты по обработке данных не высказывали возражений и не говорили, что они являются специалистами по теории анализа данных.

Поэтому последние несколько месяцев я занимался сбором информации и наблюдением за поведением специалистов по теории анализа данных в их естественной рабочей среде. В этом посте я подробнее расскажу о том, почему data scientist не является data engineer'ом.
Читать полностью »

Сравнительное тестирование многопоточных кэшей реализованных на C/C++ и описание как устроен LRU/MRU кэш серии O(n)Cache**RU

Читать полностью »

Поле

  • Создание тайлового поля.
  • Поиск путей с помощью поиска в ширину.
  • Реализация поддержки пустых и конечных тайлов, а также тайлов стен.
  • Редактирование контента в режиме игры.
  • Опциональное отображение сетки поля и путей.

Это первая часть серии туториалов, посвящённых созданию простой игры в жанре tower defense. В этой части мы рассмотрим создание игрового поля, поиск пути и размещение конечных тайлов и стен.

Туториал создавался в Unity 2018.3.0f2.

Создание игры Tower Defense в Unity, часть 1 - 1

Поле, готовое к использованию в тайловой игре жанра tower defense.

Игра жанра Tower Defense

Tower defense — это жанр, в которой целью игрока является уничтожение толп врагов, пока они не добрались до своей конечной точки. Игрок выполняет свою цель, строя башни, которые атакуют врагов. У этого жанра очень много вариаций. Мы будем создавать игру с тайловым полем. Враги будут двигаться по полю в сторону своей конечной точки, а игрок будет создавать им препятствия.
Читать полностью »

Как и предыдущая, эта заметка представляет собой обзор статей и комментариев к ним здесь, на Хабре, сгруппированный по нескольким темам.

Законы робототехники Азимова

Пожалуй, самая смешная, но, как ни странно, до сих пор широко обсуждаемая тема. Собственно, говорить тут просто не о чем: разве кому-то не ясно, что если ИИ хоть немного станет вылезать из пелёнок (и даже раньше — уже сейчас!), на него тут же наложат лапу военные и всякая там «госбезопасность»? И они будут учить ИИ именно эффективно убивать, не заморачиваясь всякой ерундой на тему «псевдоэтики». Разве не ясно, что эти «законы» в принципе не работают и работать не могут, о чём прекрасно знал и сам Азимов? Разве не ясно, что главная угроза со стороны ИИ как раз связана с контролем со стороны человека? И что, мы так и будем верить в сказки, вопрошая: «Дадим ли мы военным роботам лицензию на убийство»? А разве нас кто-то спрашивает? Или: «Крупнейшие ИТ-компании не дадут ИИ вырваться из-под контроля человека». А разве их кто-то спрашивает? Или: «Известные во всём мире разработчики ИИ договорились не создавать умное оружие». Тупое будут создавать? Или: «Эксперт ООН призвал мировое сообщество притормозить создание боевых роботов с искусственным интеллектом». А разве крупные страны, способные создать таких роботов, хоть раз считались с мнением ООН? Так что давайте прекратим обсуждать очевидные глупости — это даже не детский сад, это младшая ясельная группа.

Тест Тьюринга

Читать полностью »

Вычисление ряда Фибоначчи — это классическая алгоритмическая задача, потому её нередко дают на собеседованиях, когда хотят проверить, что кандидат в принципе хоть как-то умеет в алгоритмы. Предположим, вы тот самый кандидат. Вам дали задание: на языке JavaScript написать функцию fib(n), возвращающую энное число Фибоначчи. Считаем, что нулевое число Фибоначчи — это нуль. Проверка корректности аргумента не требуется. Какие у вас есть варианты?

image
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js