Я просто переписал уравнения в виде 9*a + b = 32*c +14 и 15*a + b = 32*d + 5, выразил b из одного, подставил во второе. И получил -6*a + 32*(c + d) - 9=0. По нему видно что решений нет (левая часть всегда нечетная). diophanite вам тоже даст пустое множество решений.
Вот, кстати, на хабре есть более-менее современная статья в тему habrahabr.ru/post/195650/.
Предмет, как его преподают в плохих университетах застрял в 80. Если тема интересна, стоит копать в сторону Linked data, Knowledge graph.
Сергей: Да не только в движке, для реализации геймплея тоже приходится использовать какие-то знания из области геометрии. Например мне однажды надо было сгенерировать плотно стоящую стаю пингвинов в некоторой зоне (многоугольнике). Вполне себе геометрия.
o_f: Домики это не так и бесполезно на самом деле. В работе моделлера нужно хорошо представлять как из простых фигур собрать сложную, как фигуру представить в виде развертки для наложения текстуры. И такие навыки закладываются в детстве. Но работа моделлера это все же скорее работа художника. Если вам это близко, то можно попробовать.
Tsiren Naimanov: Ну да, в индустрии этим занимаются разные люди: моделлеры, аниматоры, геймдизайнеры, UI-дизайнеры, программисты (backend, frontend). Но в инди разработке с переменным успехом эти функции могут быть объединены.
Денис: const в конце значит что сам метод, а не его возвращаемое значение, является константным. То есть, он не меняет состояние класса, и его можно вызывать у константных экземпляров.
Денис: Да. Но в вашем случае скорее всего результат возвращается по ссылке или константной ссылке (как в getByRef). Так что там никаких временных объектов не создается и не удаляется.
Денис: pastebin.com/w6YCiM2j вот такой код иллюстрирует возможные ситуации. Его вывод:
A::A()
get by ref
A::A(A const &other)
get by value to ref
A::~A
A::A(A const &other)
get by value to value
A::~A
program end
A::~A
Полезно понимать где происходят вызовы конструкторов и деструкторов. Самое неочевидное здесь то, что константная ссылка продлевает жизнь временного объекта до конца блока.
Тут еще бага, что 0 в начале может оказаться после перемешивания. Так что pastebin.com/D9Hks9hW вот исправленный вариант с построением графика, который похож на нормальное распределение.
а include работает как простая текстовая подстановка. То есть строчка #include "a.h" тупо заменяется на содержимое соответствующего файла. Таким образом если мы опишем шаблонные функции в .h, то они будут компилироваться как часть main.cpp
Суть в том, что когда компилятор видит использование шаблонной функции. он пытается сгенерировать ее код, подставив реальные типы вместо шаблонных параметров. Но cpp файлы компилируются отдельно. И если использование происходит в другом файле, то нужный вариант сгенерирован не будет. Отсюда ошибка линковки. когда объектные файлы (результат компилирования отдельных cpp) склеиваются вместе.