• Как скомпилировать Seman (набор инструментов aot.ru) под Windows?

    @SmartFrog
    Йоху, у меня скомпилировалось под VS 2010. Правда, как обычно с микрософтом, куча link error и шаманства.
    Действия следующие.
    1) Конвертируем translator.sln в современный проект.
    1a) В переменную среды RML складываем корневую папку распакованного архива.
    2) Для проекта SimpleGrammarLib скачиваем и прикручиваем flex и bison в настройках сборки.
    3) Запускаем солюшн на компиляцию.
    4) Правим синтаксические огрехи, выползшие от несовместимости библиотек: у pow(erg) аргумент насильно приводим к double: pow((double)arg), и увеличиваем длину строк в RusGramTab.h.
    5) Некоторые dll-rb не копируются после сборки в bin, я это делала руками и запускала regdll.
    6) Несколько раз запускаем компиляцию в режиме release. Повторяем шаги 5 и 6, пока не получим нужные dllки. Если не помогает, читаем ошибки компиляции.
    7) После этого у меня родился seman.dll и всё ему сопутствующее. Моя цель была достигнута.
    7а) Если не помогло, напишите сюда, я скину сконвертированные файлы.
    Ответ написан
    1 комментарий
  • JS библиотека для визуализации БД?

    @SmartFrog
    Не очень поняла задачу. Вот тут есть множество различных способов визуализации данных:
    http://d3js.org/
    https://github.com/mbostock/d3/wiki/Gallery

    Количество примеров огромно, скорее всего, рисование схемы БД там тоже есть. А если нет, то несложно «допилить» (пробовала, знаю).
    Ответ написан
    Комментировать
  • Задачка по линейной алгебре. Пересечение плоскостей в точке?

    @SmartFrog
    Попробую написать аналитический ответ.

    N=1 — плоскостей нет

    N=2 — все плоскости совпадают, то есть имеют бесконечное количество точек пересечения.

    N=3 — плоскости либо параллельны, либо пересекаются по прямой.
    Докажем это.
    Возьмем две пересекающиеся плоскости в трёхмерном пространстве. Их уравнения можно записать так:
    A1*x+B1*y+C1*z = D1.
    

    A2*x+B2*y+C2*z = D2.
    

    При повороте количество точек пересечения не изменится, поэтому мы можем повернуть плоскости так, чтобы A1 было ненулевым. Тогда:
    x = (D1-B1*y-C1*z )/A1,
    A2*(D1-B1*y-C1*z )/A1+B2*y+C2*z = D2.
    

    Пусть плоскости пересекаются в точке (x0,y0,z0), то есть, эта точка является решением двух вышестоящих уравнений. Подставим в уравнения y0+1, и решим систему (не буду продолжать выкладки, думаю, это довольно очевидно). Получим вторую точку пересечения. Единственное предположение, которое мы делали, что две наши плоскости пересекаются хотя бы в одной точке. Таких точек, если они есть, всегда больше одной, то есть N=3 не является решением задачи.

    N=4
    В четырехмерном пространстве плоскость задается системой двух линейных уравнений от четырех переменных: x, y, z и t.
    Приведем пример, когда две плоскости пересекаются в одной и ровно в одной точке. Первая плоскость образована осями абсцисс и ординат:
    z=0,
    t=0. 
    

    Вторая плоскость образована осью аппликат и осью, традиционно называемой осью времени:
    x=0,
    y=0.
    


    В четырехмерном пространстве только одна точка находится на обеих этих плоскостях (удовлетворяет обеим системам уравнений). Это начало координат (0,0,0,0), то есть ответ — 4.

    Очевидно, что при N>4 можно взять четырехмерную гиперплоскость, и в ней приведенный пример будет работать.
    Ответ написан
    Комментировать