Ответы пользователя по тегу Программирование
  • На чем и как лучше написать скрипт?

    @SeptiM
    Я бы это на bash-е написал. Что там, curl, sed, sort, unique, comm. Можно, наверное, в одну команду уложиться...
    Ответ написан
    7 комментариев
  • Как доказать отсутствие алгоритма для решения задачи?

    @SeptiM
    Вы возможно ищете проблему останова? Обычно ее сводят к нужной задаче, тем самым показывая алгоритмическую неразрешимость.
    Ответ написан
    Комментировать
  • Уточнения кода Голея?

    @SeptiM
    1. Нужно делить символ пополам. Т.е. каждый символ -- это последовательность из 8 бит. 3 символа -- 24 бита.
    2. Прежде чем здесь что-то делать, стоит уложить в голове несколько базовых вещей из алгебры. Вам нужны группы, кольца, конечные поля, идеалы. Особенно внимательно продумайте, как реализуется конечное поле F_2 и F_2^n, а также кольцо многочленов над полем F_2.
    Ответ написан
    Комментировать
  • Какую тему выбрать для дипломной?

    @SeptiM
    Напишите приложение для бегущего города (runcity.org). Чтобы пользователь внес точки, а приложение само кратчайший маршрут построило. Еще круче, если можно будет сфотографировать легенду, а программа сама все адреса найдет (OCR + NLP) и на карту их добавит (OSM или Yandex API).
    Ответ написан
    Комментировать
  • Что такое информатика и с чем её едят?

    @SeptiM
    Посмотрите список курсов CS Клуба. Там много горячих тем из мира науки. По лекторам рекомендую обратить внимание на Шеня, Бабенко, Куликова. Хотя это только трое из бОльшего числа крайне интересных товарищей.

    Клуб записывает видео. Так что с содержанием тоже можно ознакомиться.
    Ответ написан
    Комментировать
  • Как работать с большими массивами?

    @SeptiM
    Отсортируйте и напишите линейный алгоритм для пересечения отсортированных массивов. array_intersect скорее всего работает квадрат и потому все грузит.
    Ответ написан
    Комментировать
  • Как это устроено?

    @SeptiM
    У JetBrains-а есть забавная штука: MPS. Похоже на то, что вам нужно. Как минимум избавит от стадии построения AST, если нужен прототип обертки. Я какое-то время работал в Ютреке на ней.
    Ответ написан
    Комментировать
  • Алгоритм для быстрой проверки соответствия строки шаблонам?

    @SeptiM
    Простое решение можно реализовать через префиксное дерево. Запихиваем все шаблоны, а потом сравниваем по строчке из множества.

    Если требуется сделать разово и на большом объеме данных, я бы поступил так. Определим на строках обычный лексикографический порядок (если есть строка и её префикс, то префикс меньше). Каждому шаблону со звездочкой {s}* сопоставим две строки {s} и {s}$, где $ больше 0 и 1. Шаблону без звезды, просто ставим {s} и {s}&, где & < 0 и 1. А теперь, начиная с первого символа, запускаем цифровую сортировку на строках, полученных из шаблона, + проверяемых строках.

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

    Из положительного, это сделать проще, когда строки не влезают в память. Число разрядов на сравнение можно ограничить длиной самого длинного шаблона.
    Ответ написан
    6 комментариев
  • Как сделать систему автоматизированного составления расписания?

    @SeptiM
    Начните с постановки задачи. Какие объекты существуют (преподаватели, группы студентов, аудитории) и сколько их, какие есть ограничения (например, нельзя вести две пары в одной аудитории в одно время), какие из ограничений обязательны, какие можно нарушить. Желательно это все оформить в виде набора переменных, равенств и неравенств между ними + ввести функцию, которую мы хотим оптимизировать.

    Не беритесь за какое-то общее решение. Есть конкретный университет, для него и решайте. Вдруг, у вас есть какие-нибудь особенности, которые сильно упрощают задачу.

    После того, как все соберете и поставите задачу математически, можно думать над методами.
    Ответ написан
    Комментировать
  • Каким алгоритмом можно проверить Большое число на простоту?

    @SeptiM
    Расклад примерно такой. Пусть n -- длина числа, т.е. обычный перебор работает за 2^{c * n}.

    1) Вероятностный тест Рабина-Миллера можно реализовать за O(k n^2 log n), где k -- число попыток. Вероятность ложноположительной ошибки 4^-k. При k=100 это значение настолько безумно мало, что скорее в вашей программе найдется критический баг, процессор сделает ошибку в вычислениях и взломщик выиграет в лотерею и все это одновременно, чем число окажется составным.

    2) Детерминированный AKS (en.wikipedia.org/wiki/AKS_primality_test). Работает за O(n^{6 + eps}). Интересен скорее теоретически.

    3) Эллиптический тест на простоту (en.wikipedia.org/wiki/Elliptic_curve_primality). Эмпирически работает за O(n^5). Интересен тем, что в случае успеха возвращает сертификат простоты.
    Ответ написан
    2 комментария
  • Как найти определенную "фигуру" в двумерном массиве?

    @SeptiM
    Я бы искал эти паттерны как подстроки. Строим доп. массив по тому, где встречаются два и три нуля в строке, два и три нуля в столбце. Потом ищем где они образуют фигуры. Можно в лоб написать, можно КМП использовать.
    Ответ написан
    Комментировать
  • Какой российский ВУЗ на данный момент лучший в сфере IT?

    @SeptiM
    Неплохо бы и про себя что-то рассказать. Учились ли в ЛКШ? Что со Всеросом, ВКОШП-ом?

    Если говорить про Питер, то я думаю, стоит ориентироваться на три вуза.

    ИТМО кафедра КТ (КТ)
    Академический университет (АУ)
    СПбГУ (матмех)

    Также в городе есть Computer Science Center (CSC) (в Москве тоже самое называется ШАД) + можно свободно посещать CS Club. Преподаватели центра -- это сборная выше-названных вузов, Политеха и нескольких IT-компаний, включая Yandex. Даже если не поступите в эти три вуза, курсе на втором-третьем можно попытать счастье с CSC.

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

    Знаю, что КТ и АУ активно редактируют свои программы. В среднем, уровень становится выше. АУ собирает два раза в семестр анонимные отзывы студентов о преподавателях. Как конкретно сейчас в ИТМО -- не знаю. В АУ бакалавры сидят с утра до ночи, что-то учат, решают, программируют. Пропускать много занятий довольно рискованно.

    Про матмех знаю меньше. У них поселился Intel. Есть сильный кружок по программированию. Студенты, которым интересна информатика, посещают CSC.
    Ответ написан
    5 комментариев
  • Как сравнить форму кривых Безье?

    @SeptiM
    Если я правильно понимаю, вы хотите сравнивать с точностью до искривления. Я бы составил параметрическое уравнение кривой и взял вторую производную d^2 f / dt^2. В каждой точке это будет нормаль к кривой. Нужно для каждой кривой записать последовательность, когда эта нормаль слева от кривой, когда равна нулю (кривая идет прямо или точка перегиба), когда справа. Получится такая строчка, например, +1,0,-1,...,1. Ну и их сравнивать.

    Знак можно получить, например посчитав детерминант матрица 2x2 составленный из векторов для первой и второй производной. Можно попробовать сделать это сначала численно. Если подходит, попробовать решить аналитически.
    Ответ написан
    2 комментария