24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
СМОЖЕШЬ ЛИ ТЫ ВКАТИТЬСЯ В АЙТИ? Реши пикрил и узнаешь.
>>295343848 >то почему нельзя просто поехать на точку B по прямой Ты двигаешься из точки А. Ты не можешь поехать прямо в Б, если прямая через АБ не проходит через (0,0)
Ну так и в чём проблема? Просто находишь точку пересечения между окружностью и прямой через начало координат и B. А дальше всё понятно. Нужно только формулы из геометрии вспомнить, а то я забыл уже всё. мимо_прогил_в_Delphi_17_лет_назад
Я наносек и я хз как это решать. В айти такие задачи встречаются очень редко.
Если бы у меня действительно возникла подобная задача, то я бы нагуглил или спросил у умного задрота из соседнего отдела. Если я на необитаемом острове, то сделал бы приближённое решение на генетическом алгоритме тупо перебором нескольких очевидных вариантов.
>>295343419 (OP) Это на геому задача. Могу сказать, если точка А находится ближе к началу координат, чем точка B, то выгоднее сначала двигаться по окружности а потом по прямой, иначе наоборот. Ещё есть ряд случаев, когда выгодно не двигаться по окружности, а пройти через начало координат. А тебе зачем? Олимпиадка или раунд на кодфорсес?
Есть мнение, что существует бесконечное количество пар точек, расстояние между которыми по двум разным путям будут равны. Отсюда следует, что просчитывать надо как минимум два варианта или заранее определять случай, при котором расстояния будут равны.
>>295346241 Я тебе больше скажу, даже классический 3D-рендеринг (и даже частично всякая хуйня с лучами) - это именно что задачи на геометрию в чистейшем виде, просто обычно обсчитываемые на шейдерах в видеокарте, которые и создавались для ворочания SIMD.
>>295346585 >Тут координаты x,y, тетрадь в клеточку открой, любую подпиши 0,0 - вот твой граф Может покажешь код, которые решит эту задачу с помощью графов?
>>295345895 Я тред не читал отвечаю ваще сразу тебе, это ведь из разряда графов нет? Читый матан же, а оппик наверняка перегружен всякой хуитой чтоп пыль в глаза пустить.
>>295346585 >Тут координаты x,y, тетрадь в клеточку открой, любую подпиши 0,0 - вот твой граф Прочитай задачу маня. Проходить можно не только через целочисленные точки. Да и энивей у тебя граф взвешенным выходит.
изи пизи, если точка назначения лежит на окружности ближе к началу координат то всегда будет выгодно сначала радиально спуститься на меньший радиус а потом ехать по дуге, если выше то сначала двигаться по дуге а потом радиально, лесенкой или другим хитровыебаным способом двигаться невыгодно
>>295346585 >да и симд это сингл инструкция для мультимл дата Да что ты говоришь... >какую то рандомную хуйню приплетаешь Ты когда-нибудь писал вообще классический рендер с нуля, крутил матрицами координаты и пр., или только в юнити тяп-ляп готовое импортировал готовые движки?
>>295346822 написание и отладка кода займёт у меня часа 2, я не наносек, но вижу эту задча как поиск кратчайшего пути через А* (да, графы) и укрошение его через второй пункт, т.е если между некими 2мя точками из мервого пути расстояние Р1 а через радиусы мужду этими точками Р2 и Р2 < Р1 то берём Р1, если бы не радиусы ответ в пером примере был бы 5, там любым алгоритмом 5 "клеток" между этими координатами
>>295343419 (OP) Мне блять даже лень эту хуйню читать, я засыпаю на 3 строчке. Но мне бабка квартиру оставила, так что мне похуй вообще. Сижу пержу на говноработке, на жись хватает и охуенно, еще я буду себе голову ебать этой хуйней. Да я бля имея жилье даже дворником выживу, вообще поебать.
1. Сначала смотрим на путь, состоящий из 1 прохода по "кольцевой" (по дуге) и одного по радиальной линии. Две точки находятся на разном расстоянии от центра; проход по кольцевой должен быть по той кольцевой, на которой стоит точка, ближайшая к центру из этих двух. Если бы мы рассматривали обычное евклидово пространство, где мы бы двигались по настоящим перпендикулярным друг другу прямым, являющимся действительно кратчайшим расстояниям между некими заданными точками, то было бы однохуйственно и можно было бы делать сколько угодно поворотов с условно "горизонтальных" линий на "вертикальные" (представьте себе прямоугольную застройку условного Манхеттена, где похуй, на скольки перекрестках поворачивать - на тыще или на одном). Но когда мы рассматриваем движение по дугам, то проход по дуге с меньшим радиусом, быстрее добравшись до прямой радиальной линии, ведущей к конечной точке, приведет к меньшему общему пути, чем путешествие к дуге с большим радиусом, ведущей к конечной точке.
2. Затем также рассматриваем путь через центр: движение из точки А в центр координат, а оттуда - в точку Б.
Кратчайший из этих двух путей и будет являться оптимальным, ваш кэп. Вероятно, что чуть-чуть подрочив функции роста значений этого пути от разных переменных, можно будет сделать какой-то вывод о том, что если угол A0B больше ~120 (???) градусов, то вероятнее, что путь через центр будет короче, но это не точно.
>>295343419 (OP) Эта хуита не имеет ни малейшего отношения к вкату в айти. Чтобы вкатиться в айти, нужно дрочить алгоритмы, структуры данных, потому что задачи будут "пропарсить ввод и сформировать из этого html страницу" или "написать model-view архитектуру для отображения содержимого базы данных", а не дроч математических формул. мимо c++ лид
>>295347236 это годное наблюдение, тогда нужно проверять меньший из двух угол и двигаться тупо по радиусу если угол больше 2 радиан, заодно проблема квадрантов решается
>>295347591 Меня сильно смущает вот это самое число "2" у тебя. Почему именно столько?
Интуитивно-то ясен хер, если точки "почти" противоположны друг другу, то никакая дуга по "кольцевым" линиям не будет короче путешествия через центр, да. Но эти два расстояния будут равны при довольно сложной системе стартовых условий, а не только при каком-то строго определенном значении угла A0B.
>>295347848 >тогда с любой заданной наперед точностью можно отрезок прямой, соединящий точки, аппроксимировать движениями вдоль окружности и вдоль радиуса Можно. Но в этой модели его длина будет больше, чем Эвклидово расстояние.
Если способ движения можно менять сколько угодно раз, то можно просто приблизить с заданной точностью прямую между А и Б с помощью отрезков прямых и секторов кругов. Это и будет кратчайший путь. Движемся по окружности, как только отклоняемся от прямой АБ то возвращаемся на неё по прямой. И так пока не придём в Б.
>>295347848 >тогда с любой заданной наперед точностью А вот и нет. Обосрался тут как раз ты. Ты можешь так делать, когда у тебя все линии, по которым ты можешь двигаться - прямые. Например, сетка из перпендикулярных друг другу линий, или она же, но аффинно наклоненная в сторону. Тогда - да, можешь хоть проехать 1 км на север а потом 1 км на запад, а можешь через каждый метр менять направление север-запад-север-запад. Но в описанной задаче дуги (отрезки окружностей вокруг центра), смещающие тебя на нужное тебе число радиан, имеют меньшие расстояния, когда они находятся ближе к центру, и поэтому ВСЕГДА для наименьшего пройденного расстояния нужно выбирать именно ту дугу, которая находится ближе всего к центру.
>>295347954 Нет, см. тут: >>295347978 Путь, пройденный - на твоей картинке - начиная из A вдоль радиальной линии (по направлению к центру) до достижения радиуса точки B, а затем по дуге в B, будет короче, чем тот, который нарисовал ты.
>>295347954 >можно просто приблизить с заданной точностью прямую между А и Б с помощью отрезков прямых и секторов кругов. Можно. >Это и будет кратчайший путь. Нет, не будет.
>>295343419 (OP) выглядит как усложненная школьная задачка из геометрии дали б мотивацию я бы нашел решение а иначе нахуй надо да и ограничение в 256 мб смешное считаю скриптик не займет и 1/4 этого объема тупойнаркоша
>>295348612 Там прописана метрика, лол. >>295348610 Сорян, я хз где этот алгоритм математически не верен. Только траблы с точностью могу предположить и всё.
>>295348559 Анон, твоя ошибка в том, что мы решаем эту задачу буквально не в евклидовой геометрии. Вот тебе три пика. На первых двух похуй, в какой последовательности идти по отрезкам любой длины, лишь бы общий сдвиг был на одинаковое количество по обоим координатам. А вот в этой радиальной геометрии (пик 3) в обоих случаях сдвиг одинаков по углу и по радиусу, ОДНАКО пройденное расстояние (в метрах) при движении вдоль дуг тем меньше, чем ближе эта дуга к началу коордигнат.
>>295349105 Это задача уровня "правильная скобочная последовательность". Тольуо из-за того что не показывает тесты на которых завалило она кажется сложной
>>295349103 Потому что задача не просит тебя найти путь между точками с наименьшим общим сдвигом по радиусу и наименьшим общим сдвигом по углу. В этом случае оба варианта слева и справа на картинке 3 были бы одинаково верны, да.
Задача просит тебя найти минимальный путь в МЕТРАХ при условии, что движение выполняется в неевклидовых координатах. Иными словами, два отрезка, которые в этих координатах равны в используемой метрике, (две дуги на пике), на самом деле очень не равны в том значении, которое требуется найти для решения задачи.
Спасибо. Я это понял, просто предположил, что кругов бесконечно много, как и прямых, проходящих через центр, потому что противное не озвучено в условии задачи, то есть на них вообще можно, по сути, забить. А если есть какая-то сетка с каким-то шагом, тогда нужно уже думоть.
>>295349105 Потому что эта задача вообще не из айти и не из алгоритмов, а из чистейшей геометрии, а айтишного тут - обернуть готовое геометрическое решение ("бизнес-логику", если угодно) в код.
>>295349174 А это абсолютно неважно, дискретная у тебя сетка или сколь угодно дробимая.
Посмотри еще раз на мой пик 3. Движение по радиусу в обоих случаях имеет одинаковую длину в метрах. А движение по дуге имеет тем меньшую длину в метрах, чем меньше радиус этой дуги. Это верно вне зависимости от того, можно ли проводить дуги через каждый километр друг от друга или прямо через каждый нанометр.
>>295349409 Скажи, а когда ты в школе решал задачи по геометрии, как ты или учитель проверял верность решения? Вбивал в комплюктор несколько вариантов входных чисел и смотрел, правильные ли выходные получаются, те же самые, что в решебнике, или не те?
>>295349376 Считаешь расстояние от центра (радиус) у обеих точек. Двигаешься в нужном направлении. Считаешь на какой граду\дугу надо повернуть, двигаешься в этом направлении.
>>295349298 Что айти это огромная индустрия, а задачи с пикрила никто не решает за исключением олимпиадников. Алсо, такое на практике нужно только кждаому сотому IT-шнику, а то и меньше.
>>295343419 (OP) Вкатился во фронтенд на 120к без вышки. Такую ебень нигде решать не давали. В качестве тестового нужно было сделать API-запрос и отрендерить карточки с полученными объектами. Затем присобачить фильтры и оформить более-менее не вырвиглазно.
>>295349509 Это не задача на написание кода. Это задача на математику в чистейшем виде. Ты можешь сколько угодно обложить ее тестами, которые в случае "почти" правильного решения будут тебе давать 100% корректные результаты, но доказать, что решение действительно верное, ты можешь ИСКЛЮЧИТЕЛЬНО аналитически.
>>295349584 Да хоть в лично изобретенной системе координат с m и n, где m = x+y, а n = x-y. Ты в ней четырежды охуеешь от того, во что превратятся относительно простые формулы, но результат (внезапно) не будет зависеть от выбранного тобой подхода.
>>295343444 >>295349539 Айти это: дизайнеры, сисадмины, 1с-ники, художники, 3д-шники, маркетологи, психологи, ейчары, менеджеры всех подвидов, фронтендеры (макаки), бекендеры которые будут пердолить базу данных, а не вот это всё, тимлиды которые будут руководить, девопсы которые нахуй не нужны, но пусть будут, кто то же должен ci/cd настраивать и из всех этих сортов Пикрил будет решать только учитель информатики который должен зародить интерес в будущих итт-шниках
>>295349700 Ну и да, ты можешь "аппроксимировать" движение по прямой, но не факт, что эти маленькие движения будут короче, это тоже надо считать, но в конретных условиях может оно таки будет короче, я хз.
>>295349801 >но не факт, что эти маленькие движения будут короче, Абсолютно НИКОГДА не будут, потому что с каждым увеличением расстояния от центра движение по кусочку дуги на N радиан будет проходить бОльший путь, чем движение по кусочку дуги на N радиан с меньшим расстоянием от центра/радиусом.
>>295349789 При чем тут это? Это классический Сишный путь, ебашишь чтобы заработало, если работает недостаточно хорошо рефакторишь. В общем-то ничего нового не придумали, просто эта задача хоро изучена, а так всегда потом напильником допиливают.
>>295349833 Ну да представь прямую через АВ я на ней и отдельно прямая через начало координат, если точка А на последней прямой не лежит я не смогу двигаться
>>295349847 При том, что любая бизнес-логиковая задача сначала решается на бумажке, на доске, в виде ну я блядь не знаю блок-схемы ояебу, а уже потом превращается в код на нужном языке.
>>295349915 >любая бизнес-логиковая задача сначала решается на бумажке, на доске, в виде ну я блядь не знаю блок-схемы ояебу, а уже потом превращается в код на нужном языке Найс манямирок. Не надо думать, что все компании идеальные.
>>295343419 (OP) тред не читал, кодинг не запускал. надо вычислить длину радиуса исходной и конечной точки, от ближней посчитать длину дуги через угол между векторами и сложить с разницей радиусов. по памяти стопроцентно влезу, по времени мб поебаться придется, но тут все линейно
>>295350000 Анон, не всё в интернете и даже на дваче берется из некоторых существующих чужих годных "разборов", которые можно "скинуть". Иногда тут до сих пор (зачем-то) сидят люди, способные решить что-то самостоятельно.
>>295349890 >>рвоньк неосилятора 10 лет в разработке. Увидел уебанские формулировки ограничений для школьных олимпиад, дальше не читал. А ведь у меня горела жопа от этого ещё в школе.
>>295350059 Да это все понятно, просто не всегда есть силы прорешивать все самому. Хочется посидеть чаек попить и в общих чертах понять не напрягаясь. Ладно, сам найду. Я так понимаю, там та же фигня, что и с "длиной фракталов", т.е. там в бесконечноть улетает эта длина на бесконечном приближении.
Типа я должен вывести формулу длины дуги от радиуса и угла? Арккосинусом получаю угол B, дальше пропорция 180/B = PiR/x. Потом сравниваю длину дуги и 2R, если длина больше то ответ 2R+кусок который я должен пройти до радиуса, если нет - то x+кусок до радиуса.
Суть задачи в том чтобы знать как искать кратчайшее расстояние между точками на поверхности сферы. Типа Яндекс же считает маршруты и прочее по координатам на поверхности земли, которую можно представить как поверхность сферы. Только тут для простоты убрали ось Z.
Получается что задача довольно простая, если догадался о чём речь.
>>295350055 1. Нужно не длину найти, а построить маршрут, а значит придется делить на 2 случая: когда к центру едем и когда от центра 2. Не учитываешь, что если угол между векторами больше 90, то кратчайшим маршрутом будет проехать через центр, что нам даем еще два случая.
Но задача - хуйня для школьников, хз зачем оп сюда это притащил.
>>295350162 Ты все еще про обсуждаемый выше вариант с "зигзагом"?
Простыми словами могу объяснить так: как бы мелко ты ни дробил отрезки, суммарная длина всех отрезков, проходящих по радиальным линиям ("прочь от центра" или "к центру"), действительно всегда будет одной и той же и будет равна простой разнице радиусов точек без всяких выебонов с зигзагами. А вот суммарная длина маленьких кусочков дуг, расположенных все дальше и дальше от центра, будет больше, чем длина участка наиболее близкой к центру дуги, имеющей точно такой же пройденный угол.
Ты, скорее всего, попадаешь в ловушку, думая, что при некоем бесконечном приближении к "диагонально" проведенной линии у тебя общая пройденная длина станет приближаться к ее длине. Представь себе застройку района тупо перпендикулярными улицами, и тебе надо проехать куда-то по диагонали. Даже если ты будешь поворачивать туда-сюда каждый метр, оставаясь при этом строго на горизонтальных и вертикальных улицах, ты не уменьшишь свой пройденный путь.
>>295350202 а ведь ты прав, спасибо, если нужно через весь дс проехать, то проще через центр, а не по мкаду. тогда я в расчет добавлю сравнение дуги и суммы радиусов вообще задачу надо в полярных координатах решать, но для этого надо к ним перейти, а это сложно
>>295350293 > Нужно не длину найти, а построить маршрут, а значит придется делить на 2 случая: когда к центру едем и когда от центра зачем? дуга от близкой к центру окружности короче, чем дуга от дальней. всегда, если надо ехать по дуге, брать самую маленькую
>>295350338 Это я понимаю. Я про другое уже. Может знаешь про задачку с "замером береговой линии" где чем меньший масштаб берешь, тем, больше длина, т.е. при "бесконечном" приближении у тебя бесконечная длина береговой линии. Та же фигня для фракталов работает. А про "квартальные координаты", не помню как правильно называется такая схема, я знаю, теперь понял.
Кажется до меня дошло. Если представить себе какой-то треугольник, у которого длина АБ это основание, то длина этого основания в этой системе координат будет больше суммы длины других двух сторон, одна из которых дуга, а другая прямая, проходящая через центр и точку Б. Так что ли?
>>295350525 >Может знаешь про задачку с "замером береговой линии" где чем меньший масштаб берешь, тем, больше длина, т.е. при "бесконечном" приближении у тебя бесконечная длина береговой линии. Мне кажется в этой задаче что-то из той же оперы должно быть зарыто.
>>295350525 Теперь понял, о чем ты, но здесь не фракталы. Береговая линия действительно (с некоторыми оговорками) фрактальная, но это вполне определенный класс геометрических объектов, которыми такие линии, как в задаче, не являются.
>>295350622 Ну я к тому, что получается, этот зигзаг, чем ближе он к прямой линии, тем он длиннее?? Т.е. при приближении к бесконечности, длина улетает в бесконечность? И вот это как-то неинтуитивно, поэтому я и хотел разбор глянуть, это либо из-за особенностей системы координат, либо это фундаментально так, но это противоречит "кратчайшему пути между двумя точками". Это от фундаментального различия системы координат или просто это особенности ограничений задачки?
>>295350752 >Ну я к тому, что получается, этот зигзаг, чем ближе он к прямой линии, тем он длиннее?? Т.е. при приближении к бесконечности, длина улетает в бесконечность? Нет. Его длина будет не бесконечна, она будет находиться между минимальной длиной через дугу с наименьшим радиусом + разницу в радиусе и максимальной длиной через дугу с наибольшим радиусом + разницу в радиусе.
Ты смешиваешь в голове разные понятия "бесконечности". Сраное число "пи" ты можешь определять бесконечно точно и в его записи использовать "бесконечно" много знаков, что не делает его значение бесконечностью.
>>295350911 Хорошо, давай с другой стороны, ты понимаешь что для пары геометрических формул выданное время работы 2 секунды и память 256мб это довольно дохуя? Или ты думал там от балды указывают данные?
>>295350983 Ты уверен, что "диагональ" при каком-нибудь приближении (пусть даже бесконечном) не будет короче движения по тому алгоритму который ты описал? Т.е. это точно, что при бесконечном приближении оно стремится к той длине о которой ты говорил, а не к какой-либо другой?
Я так понимаю, что если точки в противоположных четвертях по диагонали, то сначала надо газануть через центр и там делать дуговой доворот Писенюхова, а если нет, то от ближайшей к центру точки надо сначала дуговой доворот делать по меньшей окружности и оттуда прямой газок до цели
>>295351107 Не будет "диагональ" короче, потому что ты не можешь двигаться по такой диагонали по условию задачи, ВООБЩЕ не можешь. Можешь двигаться только ступеньками, как тебя всё не отпускает, но длина пути ступеньками не будет даже и близко равна длине этой диагонали, как вот в этом бородатом меме. https://2ch.hk/b/src/295343419/16990446090450.png
>>295351173 А, реально, тригонометрию в 8 классе начинают. Мне почему-то запомнилось, что до 10ого класса вообще детсадовские задачи были, а тут оно вот как.
>>295351052 Тред про вкат в айти же. Нормальный айтишник, решая эту задачу в какой-нибудь энтерпрайзной поебени на ЖС, найдёт, чем забить всю оперативу и как падать после 2 с.
>>295343419 (OP) ОП неосилятор с курсов скиллбокса получил тестовое ТЗ при раскидывании резюме и не может осилить, пытается наебать анона сделать за него, спешите видеть.
>>295351207 Ну так я и говорю, получается по условиям задачи мы в другой системе координат. Я не помню, как такая система называется, но когда ты про кварталы написал, я сразу видос вспомнил. Там в таких координатах, прямая линия по другому выглядит.
>>295351321 Больше проигрываю с того, сколько даунов кодерков на это повелось, и сидят еблану что-то там решают в треде. А потом будут ныть у нас на работе дауна наняли.
>>295350410 Возьмем крайний случай для того, чтобы доказать, что не всегда: (0;1) и (0;-1) дуга у нас будет равна пи, а кратчайший путь через центр 2, а 2<3.1415
А вообще, что мешает при закладывании нового города и постройке его ВООБЩЕ С НУЛЯ строить его полностью перпендикулярной сеткой улиц? Сразу всем будет понятно, что и где находится, и будет понятно, как и куда ехать, безо всяких навигаторов. Особенно если улицы еще и пронумерованы типа 54 N, а не названы в честь деятелей-хуеятелей хуй знает как (особенно плохо, когда в одном городе бывают две идентично названные улицы, это вообще пиздец).
>>295343419 (OP) Короче есть 3 маршрута, каждый из которых будет оптимальным в разных ситуациях: 1. Дуга между векторами наименьшего радиуса + разница длин векторов 2. Два радиуса 3. Сумма радиусов + дуга наименьшего радиуса между одним вектором и вектором, обратным второму
Нужно просто посчитать все три значения и выбрать наименьший /thread
>>295351938 Ну я бывал в городах со всякими холмами, в т.ч. ЗАМЕТНЫМИ БЛЯДЬ холмами, и что-то это не мешало даже древним строителям ебашить улицы прямо по заметному градиенту "через" холм, когда фасады домов вдоль этих улиц вынуждены стоять на фундаменте "треугольником" (думаю, ты понимаешь, о чем я).
>>295351809 >А вообще, что мешает при закладывании нового города и постройке его ВООБЩЕ С НУЛЯ строить его полностью перпендикулярной сеткой улиц? география мешает, слишком дорого будет. В среднем радально-кольцевой план города гораздо эффективнее. Но у нас еще долго будет стихийная застройка. Что в общем-то тоже имеет свои плюсы. Разве что на новой планете будут строить по единому плану.
>>295352006 >Чел, угол 90° стугивает четвертинку круга, длина которого равна 2пи*р. Тогда дуга равна пи/2 Да вот только тот анон тебе говорил про угол 180, там две точки, расположенные напротив друг друга прямо через центр.
>>295352026 А чем ты в QA занимаешься, что вызывает меньшее отвращение? Полагаю, автотестов ты не кодишь, но неужели протыкивать кнопки-курлы интереснее? Мне любопытно просто.
>>295352100 Я в перформансе, строю модельки тестирования, замеряю всяку хуйню на разных устройствах, считаю метрики. Кодить приходится, но это в основном просто обработка данных, что довольно просто.
>>295352245 Ну не судьба значит, не для тебя это. Попробуй научиться чему-нибудь другому, например чему-нибудь полезному для общества. На токаря например можешь отучиться.
>>295352296 Да просто потому что если ты не можешь решать задачки, которые тебе дают в обучении или в качестве тестового задания, значит нехуй тебе в айти делать, по крайней мере не в алгоритмах. И чем раньше ты это поймешь - тем лучше тебе же самому будет. А иначе упрешься головой в потолок на уровне мидла и будешь охуевать всю оставшуюся жизнь
>>295352401 Ты щелкал абсолютно все задачи как орешки, попивая смузи? Мне профита от решения анона нет, кроме того, что узнаю как она решается. Что сказать-то хотел?
>>295352659 Вот только логику пока не завезли, как и жизненный\бытовой опыт. Мне больше нравилось, когда их называли статистическими моделями, а не AI, но кому-то надо было срочно поднять бабла.
>>295352541 Убедись лично в любой онлайн IDE. Случай из пика 3 (справа) >>295349029 предусмотрен. Почему это кратчайший путь и при чём тут 2 радиана - объяснять не буду, т.к. матан накидал на отрывке туалетной бумаги за 5 минут.
double optimal_distance (double Ax, Ay, Bx, By) { // находим угол A0B (угловое расстояние в радианах между отрезками A0 и B0) // 1. длины сторон треугольника A0B: double A0 = sqrt(AxAx+AyAy); double B0 = sqrt(BxBx+ByBy); double AB = sqrt((Ax-Bx)(Ax-Bx)+(Ay-By)(Ay-By)); // 2. теорема косинусов double angleA0B = arccos((A0A0 + B0B0 - ABAB) / (2A0B0)); double arcLength = (A0 < B0 ? A0 : B0) angleA0B; // если точка A ближе к началу координат, то считаем путь по дуге, на которой лежит A, иначе по дуге, на которой лежит B double radialLength = abs(A0-B0); // а это - часть пути по радиальной линии if ((arcLength + radialLength) < (A0+B0)) return (arcLength + radialLength); else return (A0+B0); // мне лень кодить частный случай, когда треугольник A0B схлопывается в вырожденный (точки лежат на одной линии или две из них или вообще все три совпадают) }
>>295352753 Я тупой, меня первый пункт смущал, я несебе представил движение по клеточкам где иногда можно начать двигаться по дуге, а третья картинка как раз и описывает первый пункт задачи подразумевая что вся система координат изначально радиальная
>>295352766 О, пару лет назад меня к вам звали. Сначала было собеседование в субботу с пятью китайцами по зуму или вичату, не помню уже. Я так и не понял, чего они от меня хотели. Потом собеседование с каким-то мужиком из Москвы, который типа йоба-начальник. Он рассказал о командировках в Китай, и что пару дней назад как раз прилетел из Китая, но у него был такой вид, как будто его там в жопу выебали, и вообще, всех, кто туда ездит, ебут в жопу. Послушал я его, послушал, спросил про переработки и работу в выходные, и что-то у меня желание пропало. Потом он начал задавать разные задачи, про йоба-деревья и разную хуйню, на что я вежливо ответил: спасибо за интересные рассказы, но я, пожалуй откажусь. И вообще, я не помню нифига, сами дрочите свои бинарные деревья.
Блять, я решил эту ебаную задачу, прошел до 17 теста, а дальше все, пиздец, по нулям. Наверно, точность недостаточная. Не понимаю, что к чему тг @fgriz давайте корешиться и решать вместе, я решил кучу задач К слову, я сначала не знал, что можно библиотеку math использовать, подставил получение косинуса через ряд тейлора, лол.
>>295352941 Нет. Школьная тригонометрия + умение пользоваться документацией. >>295353076 > а дальше все, пиздец, по нулям Попробуй from math import PI, atan2, hypot ... ang_rad = abs(atan2(y_a, x_a) - atan2(y_b, x_b)) % PI Проебал найти меньший угол в некоторых случаях.
>>295352753 >abs(atan2(y_a, x_a) - atan2(y_b, x_b)) Так, во-первых, большое спасибо, анон. Во-вторых, хотя мои рассуждения шли примерно, как у тебя, у меня вместо этой строчки было так: math.abs(r1-r2) + math.acos((x1x2 + y1y2)/(r1r2))min(r1,r2) (я пару штук подставил сюда ради красивой строчки) Конечно тоже был if на два радиана, но также на случай косинуса нуля и единицы. Теперь понял, почему ты взял арктангенс. У меня все работало до 17 теста, до сих пор не пойму, почему. Ща прикину на салфетке, как твоя формула вообще работает.
Раз такой тред, продублирую свой вопрос из питонотреда. Задача на работу с рядом. Решил со сложностью On2. На десятом тесте слишком долго. Снизил точность до on2/2. Все равно сликшком долго. Придумал, вывел формулу, чтобы превратить все в прогрессию и считать каждый последующий член по очереди. Теперь никаких вложенных циклов, тупо два обхода массива. Как еще ужать, не понимаю. Вот код. Хелп. Какой алгоритм тут вообще можно приткнуть? И на что тут уходит секунда? https://goonlinetools.com/snapshot/code/#4aig7b6vpxwnia9vigr4zn
>>295353767 Ты пропустил всю ту часть, где добываешь угол - лично у меня вся проблема была в ней, взял косинус вместо тангенса. Впредь буду знать. А если у тебя такие проблемы с тем, чтобы расставить приоритеты и пояснить свое решение, то твое место возле параши и пофиг, где ты там работаешь.
>>295353963 Это в американском стартапе тебя научили говорить с апломбом советской училки? Ты понимаешь, что твой собеседник теоретически может быть сорокалетним самоучкой или шкальником? И это нормально. Раз уж ты снизошел до того, чтобы кого-то поучить и помочь, мог бы и не смотреть на это свысока. К тому же, как ты и сам отметил, задача простая. Не факт, что кого-то полярные координаты смутят меньше, чем остальная часть задачи. Да и там аж три формулы. Чувак пару постов ранее выбрал тангенс а я косинус - и уже все, пиздец, деление на ноль нужно покрывать и все равно где-то ответ неверный. Уже есть, где -аплутать, получается.
>>295354019 Ладно. Ок. Что меня волнует, так это что вообще в моем решении могло занять секунду, если это просто линейный обход массива. Там просто пара умножений каждую итерацию, даже нет цикла в цикле, ну что тут можно упростить?
>>295354149 Надеюсь, какие-то шансы у меня все же есть. А бомблю я потому, что раз ты говоришь решение, оно должно быть полным, ну или хотя бы понятным - иначе в чем вообще смысл говорить, что оно у тебя есть. По-моему это круто, когда после разговора с тобой кто-то что-то понимает.
>>295347106 Если не сможешь рассказать за видеокарты - не программист. Если не сможешь объяснить физические основы работы оперативной памяти - не программист. Если не сможешь объяснить природу всего сущего на земле - не программист. Не программист.
>>295353912 Проще "добыть" угол через треугольник A0B и теорему косинусов, чтобы не ебаться с определением того, "влево" или "вправо" там надо считать, определив тангенс, и не проебаться с расположением в разных квадрантах друг относительно друга. Вот как тут, например >>295352836.
>>295354090 >а где у нас начало координат? Там, где 0;0. Ваш кэп. Оно по умолчанию становится центром (какой еще площадки). На то оно и начало координат.
>>295354288 Я уже заметил. Я вывел общую формулу для bj. Я воспользовался тем, что числа дают в порядке возрастания, получил зависимость bj от b(j-1) и превратил цикл в цикле в один цикл. Способы, которыми можно было бы упростить ситуацию это а) каким-то образом избежать первого обхода цикла для получения s? б) сократить число операций на итерацию. И то и другое смотрится нереалистично. Я чувствую, что упускаю что-то важное, какой-то алгоритм, но не понимаю, что. Или ты все это время имел в виду какую-то конкретную закономерность, а я просто не вкурил?
>>295354331 А я-то сначала подумал, что библиотеки под полным баном и вручную косинус и квадрат считал, лол. Да и вообще считал косинус из произведения векторов
>>295354364 Я так сделал, потому что решил сократить число операций. Ну хуй знает, может искать в массиве дольше, чем формировать массив интов. Хотя погоди-ка, где я в цикле ебусь со строками, кроме того, что пихаю ответ сразу в строку и беру начальные данные из массива строк? Где тут можно было бы действовать быстрее? Если бы я "сразу перевел все числа в инты" то, во-первых, это был бы лишний обход массива. Ну или у меня просто был бы лишний массив.
>>295354478 ДА ПОШЛИ ВЫ НАХУЙ, ЕБАНЫЙ ЯНДЕКС И ЕБАНЫЙ ПИТОН. Два дня я с этим ебусь, а теперь заменил одну версию питона на другую и все заработало в хуй знает сколько раз быстрее. Как это работает нахуй?
>>295354646 Анон, ну если без доебов, как ты будешь писать сраные шейдеры без понимания того, что они будут выполняться много раз по одному разу для каждого набора входных данных, ведь на то оно и simd? Разговор ведь с этого начался.
>>295343419 (OP) я из-за этой хуйни начал терять мотивацию изучать кодинг, т.к. невероятно скучно, а со временем вообще бросил а если бы не отвлекался на хуесосов-борщехлёбов, которые навязывают скучное обскурное говно по философии "не служил не мужик, не дрочил сисп/фп/алгоритмы не программист", сейчас шлёпал бы говняк на php и получать неплохую зп
>>295354681 Да я прост тренируюсь. Хочу к следующей стажировке подготовиться, по машобу. >>295354681 >>295354585 прикрил - вывод зависимости каждого следующего члена от предыдущего. Прикольно вышло, надеюсь, тут можно что-то разобрать.
>>295354570 >что пихаю ответ сразу в строку и беру начальные данные из массива строк Нахуя а главное зачем? Ты сделал свой код нечитаемым, а по перформансу скорее всего нихуя не выиграл.
>>295354950 Что правда, то правда, но я был в отчаянии. Кто бы знал, что python 3.9 эта какая-то хуйня, в которой нет вычислений быстрее секунды, зато в 11 все мгновенно решится? я уже не могу откопать читаемый вариант
>>295343419 (OP) Если точка дальше, то находим угол AOB, смещаемся по окружности на 3.14159265358979наRнаAOB, доезжаем по прямой. Если меньше, то в обратном порядке, тк чем меньше радиус, тем выше угловая скорость.
>>295354796 Нужно потому что самому адекватно оценивать, что приближает тебя к цели, а что-нет. Тебе повезло, что ты хоть понял, многие нормидауны всю жизнь занимаются хуйней во имя цели, к которой не приближаются.
Если я наносек, то мне в голове надо фреймворки держать и применение базовых алгоритмов (Ни в коем случае не сами алгоритмы), а не математику. А значит я тупо загуглю если не решение, то формулы для решения, как и с алгоритмами. Представьте ебало тех, кого заставляют это штудировать, а потом они жидко обмякают, когда не вкатываются?
>>295355230 >Если я инженер, то мне не надо знать, что нельзя делить на ноль. Я же могу просто загуглить эту инфу, когда она мне понадобится. >Как же круто было бы ехать в метро, зная, что его проектировали такие, как я Умение оптимизировать что-бы-ты-там-не-писал походя это незаменимое умение программиста. Если все, что ты умеешь, это управление рычагами полторы команды во фреймворке, то ты первый в очереди на замену чатомЖПТ. Который допилят такие как я, и очень скоро. Из-за таких, как ты, сейчас любой сайт грузится секунд по пять. Пошел ты нахуй
>>295355305 >Умение оптимизировать что-бы-ты-там-не-писал походя Никому не нужно, оптимизировать нужно в случае необходимости. Это вот я знаю, потому эффективен, а ты только задачки решать умеешь за восьмой класс.
>>295355340 Я не понимаю, ты меня троллишь что ли? Оптимизация это хорошая привычка. Если рассуждать как ты, то ты просто будешь плохим программистом, твои программы будут работать 10 секунд вместо 0.1, проблемы начнут расти как снежный ком. Ты думаешь, ты такой умный, знаешь, где можно схалявить и положиться на чужую разработку? Только вы, такие сверхразумы, уже на всех уровнях, и нихуя не понимаете, чем вообще занимаетесь. Именно это отличает программиста двадцатилетней давности и современного и именно поэтому большинство современных продуктов такая лютая сырая дрисня.
>>295355407 Ты - веб-макака. Я - инженер. Я занимаюсь разработкой. Ты иммитируешь интеллектуальную деятельность, пока я не напишу робота, который будет в сто раз дешевле и в 10 раз лучше выполнять твою работу. Хорош оправдывать свой непрофессионализм своей якобы востребованностью. Это быстро кончится.
>>295355450 Да, да. Сколько роботов собрал уже? Оно и видно. Даже базовых принципов разработки не знаешь (Не цифродроча, а именно тырпразной разработки). Если бы ты оптимизировал все подряд тебя бы уволили, так как мог бы делать еще быстрее. Когда появится востребованность - тогда и надо оптимизировать. Ну и напоследок - способность оптимизировать не зависит от того, держишь ли ты в голове решение всех ебанутых задачек, главное знать что они есть, а решать их или нет - программист выбирает исходя из требований, в то время как нуб будет цепляться за каждую мелочь. Это и отличает задрота-медалиста от настоящего айтишника
>>295355491 >Работаешь шофером >И че, ты прям стоишь каждый раз, когда видишь красный свет? >А если ты картинку с кирпичом увидишь, пока срешь, ты тоже остановишься? >Я вот всегда смогу загуглить правила, когда они понадобятся >Раз ты знаешь правила, у тебя, наверно, не хватает умения нажимать на педаль сцепления, как тебя только не уволили, пук Знать, где срезать, всегда лучше, чем не знать, очевидно. Это, разумеется, не значит, что этим необходимо пользоваться постоянно. Программа это инструмент. Хорошая программа это быстрый и точный инструмент. Мастер, который создает хорошие и точные инструменты, ну или просто блять понимает, счто делает, всегда будет цениться больше, чем чувак, который пуляет в прод сырую высокоабстрактную штуку, чью работу под капотом он себе не представляет, и не сможет починить, когда она неминуемо наебнется (особенно если решения нет на stackOwerflow на первой странице гугла) И что б ты знал, моя непосредственная рабочая обязанность сейчас - делать рпа-ботов, и я усиленно учу машоб, чтобы (как раз по задачкам типа оповской) попасть на стажировку яндекс и стать настоящим хорошим высокоценимым и увольнеустойчивым профессионалом, а не чуваком из валли
Реши пикрил и узнаешь.