Да, но тут есть нюанс, если будут искать только по "Киркоров", то не сработает.
А Like с шаблоном типа такого % ..% с индексами работает не эффективно.
Есть ещё момент, для left join и Right join, тут левая или правая таблица всегда полностью выводится, а во втрой таблице при связывании если нет нужной строки, то значения всех колонок равны null. Это удобно использовать, когда нужно например вывести все записи одной таблицы для которых нет записей в другой
Олег Петров, можно написать bat-ник из которого запускать ваш exe.
В батнике, что-то вроде такого написать
notepad >> c:\temp\a.log
А сам батник повесить на автозапуск.
Вместо notepad ваш exe нужно вписать.
Если что-то пойдет не так по идее в a.log должен быть вывод того что попало в консоль до появления ошибки.
Судя по коду тут full join для таблиц c,d,e и записи в выборке перемножаются. В итоге вместо 1000 записей возвращается 1000 миллиардов записей и сервер падает при попытке построить датасет.
Так вторая же ссылка, про масштабирование изображений. При использовании интерполяции и для случая уменьшения исходного изображения каждому пикселю уменьшенного изображения соответствует несколько пикселей исходного и чтобы определить результирующий цвет берут квадратичную или кубическую функцию от исходных цветов пикселей. В итоге от границы к центру области происходит небольшое отклонение от исходного цвета. Вот здесь про resize на canvas хорошо написано.
В таком случае, как вариант можно построить индекс по дате события в отдельном массиве, индекс должен состоять из трёх полей:номера элемента индекса, даты и идентификатора события.
В индексе записи должны быть отсортированы по дате.
В таком случае можно по индексу отбирать события, а для ускорения поиска использовать бинарный поиск. Правда появляется необходимость поддерживать этот индекс. Но зато, если обращения к событиям будут происходить часто - это сильно сэкономит время на поиск и отбор событий.
Kooper_pro, это может быть связано с особенностями растеризации при отрисовке линий. Так делается чтобы линии казались более гладкими без ступенек.
Подробнее вот в этой статье почитать. https://habrahabr.ru/post/343876/
Либо с интерполяцией цветом при масштабировании. compgraph.tpu.ru/scale.htm
Конечно делал(я таким образом определял грань на 3D модели, которую выбрали мышью. Т.е. строил проекции всех видимых граней, которые попадали во viewport, на плоскость экрана, и у каждой грани делал заливку цветом соответсвующим номеру грани, а дальше по координатам мыши определял грань), поэтому и пишу. Вы нарисовали у каждой области свою границу, но по условию задачи это не так. Граница задается отрезком соединяющим две точки - это одна линия, а у вас по факту две рядом идущие границы.
Я в общем то и не критикую это решение, просто Вы его упомянули как универсальное и всегда работающее, а по факту тут есть границы применимости и нужно о них знать чтобы понимать можно использовать метод для решения задачи или нет.
Тут тоже есть нюанс. При таком подходе граница включается в ту область, которая выводится раньше. Т.е. порядок вывода областей в буфер меняться не должен иначе немного изменят границы объектов. Например если 6 область выводить последней ее северная граница будет на 1-2 пикселя смещена вниз, но если выводит области в обратном порядке, то южная граница области 1 будет смещена вверх на те же 1-2 пикселя.
Кроме этого, если исходная картинка имеет размер больше чем размер экрана, т.е. есть скролл или зум, то закрашенные области не всегда будут точно решать задачу из-за погрешностей вычисления координат в цветовом буфере по координатам исходной картинки. И тут придётся заново перестроитраивать цветовой буфер как только картинка поменяет масштаб.
Алгоритм заливки области требует указания границы области, например цветом. Как вы предлагаете делать заливку не указав контуров? Особенно это касается стыков областей, т.е. внутренних рёбер, которые как бы принадлежат нескольким областям.
Можете нарисовать картинку, как вы себе представляет результат?
По идее после ввода коэффициентов уравнения и нажатия кнопки "Посчитать", вы на Canvas рисуете график функции, которая есть ваше квадратное уравнение и рисуете оси координат.
Точки где ось координат "Х" пересечет график и будут корнями уравнения.
Файл читается построчно и тут же интерпретируется.
До объявления функции у вас a = 1 - тут создается глобальная переменная.
Далее в процессе чтения файла создается функция test и в конце этой функции в пространстве имен этой функии создается локальная переменная "a".
Если из вашего примера убрать вызов функции test() все отработает без ошибок.
Ошибка возникает в тот момент, когда интерпретатор выполняя функцию находит локальную переменную "a", это при вызове функции print(a), и ошибка от того, что значение локальной переменной "a" еще не присвоено.
Оно появиться после выполнения строки a = 2, т.е. схема такая:
загрузка модуля:
a = 1 #глобальная переменная "a" со значением 1
def test():
print(a) #глобальная переменная "a" со значением 1
a = 2 #создается локальная переменная "a", значение она получит только в момент выполнения функции
test()
#выполнение функции
def test():
print(a) #локальная переменная "a"без присвоенного значения - ошибка!
a = 2 #если бы сюда дошли была бы локальная переменная "a" со значением 2
Именно об этом по ссылке и говорится, смотрите первый пункт: "Почему я получаю исключение UnboundLocalError, хотя переменная имеет значение?"
Если бы вы в функции test() закомментировали код a = 2, создающий локальную переменную такой ошибки бы не было.
Т.е. вот так работает правильно:
a = 1
def test():
print a
test()
Все портит попытка присвоить имени "a" какое-либо значения в теле функции.
В этот момент создается локальная переменная с именем "a", которая закрывает для функции значение глобальной переменной "a".
Порядок разрешения имен в общем случае такой:
local - локальные переменные
nonlocal - "нелокальные" переменные, это те, что объявляются в теле функции и д.б. доступны во вложенных
функциях объявленных в теле той же функции. (шаблон декоратор как пример)
global - глобальные переменные
built-in - встроенная область
https://pythonworld.ru/osnovy/faq.html
Судя по тому что там написано, как только мы присваиваем какое-то значение глобальной переменной внутри функции, создается новая локальная переменная с таким же именем. И получается что в момент загрузки модуля
все "ОК", т.к. функция видит глобальную переменную, но в момент выполнения функции все крашится, т.к. уже действует локальная, но без присвоенного ей значения.
Python интерпретатор и обрабатывает код построчно. В момент выполнения print a интерпретатор останавливает выполнени программы, т.к. значение переменной “a” должно быть определено до использования, если это не так, то ошибка и что там дальше интерпретатор не знает.
Каждый элемент списка, это точка, с координатами заданными двумя строками.
На выходе для каждого треугольника должны быть три разные точки, для которых нужно проверить, что они не лежат на одной линии (хотя в задаче этого явно не сказано)
И да тут задача переборная и для получения всех треугольников нужно пройтись по всем вариантам, но сложность меньше чем O(N^3).
Если все точки разные и никакие три из них не лежат на одной прямой, то для массива из 5 точек, будет
1,2,3
1,2,4
1,2,5
1,3,4
1,3,5
1,4,5
2,3,4
2,3,5
2,4,5
3,4,5
Количество треугольников - это количество сочетаний по 3 точки из 5 имеющихся, т.е.
C(5, 3) = 5!/(3!*2!) = 120/(2*6) = 10
В общем случае будет C(N,3) = N!/((N-3)!*3!), т.е. например для n = 1000 получим 166167000 треугольников
Т.е. перебор индексов элементов массива такой 1>=i>j>k<=N и тут точно не будут возникать дубли треугольников.
Единственный момент, реальные индексы нужно начинать с нуля и заканчивать на N-1
N - количество элементов массива.
Поэтому комментарий Rsa97 не плохое решение, тем более что более быстрого нет, перебор нужно выполнить полностью.
А Like с шаблоном типа такого % ..% с индексами работает не эффективно.