Вступление
Представьте, что вы находитесь в двухмерной декартовой плоскости и хотите определить свою позицию на ней. Вы знаете 3 точки на этой плоскости и ваше расстояние до каждой из них. Хотя из этого всегда можно рассчитать свою позицию, сделать это в своей голове довольно сложно. Таким образом, вы решили написать программу для этого.
Соревнование
Учитывая 3 балла и ваше расстояние до них, выведите свои координаты.
- Ввод и вывод могут быть в любом удобном формате, включая использование сложных, а не вещественных чисел. Укажите в своем ответе, какой формат вы используете.
- Вы всегда получите ровно 3 разных очка с их расстоянием до вас.
- Координаты и расстояния будут плавать с произвольной точностью. Ваш вывод должен быть правильным с точностью до 3 знаков после запятой. Округление зависит от вас. Пожалуйста, уточните в своем ответе.
- Вы можете предположить, что эти три точки не коллинеарны, поэтому всегда найдется уникальное решение.
- Вам не разрешено брутфорс решения.
- Вы не можете использовать любые встроенные функции, которые упрощают эту конкретную проблему. Хотя встроенные функции для векторных норм и т. Д. Допускаются.
Подсказка для начала:
Подумайте о круге вокруг каждой из этих трех точек с их расстоянием до вас в качестве радиуса.
правила
- Функция или полная программа разрешены.
- Правила по умолчанию для ввода / вывода.
- Применяются стандартные лазейки .
- Это код-гольф , поэтому выигрывает меньшее количество байт. Tiebreaker является более ранним представлением.
Контрольные примеры
Формат ввода для одной точки здесь [[x,y],d]
с x
и y
быть координаты и d
быть расстояние до этой точки. 3 из этих пунктов расположены в списке. Вывод будет x
и тогда y
в список.
[[[1, 2], 1.414], [[1, 1], 2.236], [[2, 2], 1.0]] -> [2, 3] [[[24.234, -13.902], 31.46], [[12.3242, 234.12], 229.953], [[23.983, 0.321], 25.572]] -> [-1.234, 4.567] [[[973.23, -123.221], 1398.016], [[-12.123, -98.001], 990.537], [[-176.92, 0], 912.087]] -> [12.345, 892.234]
С помощью этой программы Pyth вы можете создавать дополнительные тестовые случаи . Расположение идет в первой строке ввода, а 3 точки находятся в следующих 3 строках.
Удачного кодирования!
solve
(учитывая три круговых уравнения) тривиализирующей проблему? Я думал, что это так, но если ты в порядке с такими вещами, я пойду и опубликую это.Ответы:
Desmos, 122 байта
Использование онлайн . Скопируйте + вставьте каждое уравнение в поле уравнения, нажмите «добавить все» для каждого поля, затем щелкните точку пересечения и введите соответствующее значение. каждый из
A
,B
иC
являются расстояния для точек(a,b)
,(c,d)
, и(E,f)
, соответственно. Чтобы получить квадратный корень в значении, введитеsqrt
значение в поле.Проверьте первый контрольный пример .
Или вы можете посмотреть здесь:
источник
C
362348345 байтВвод задается в виде последовательности разделенных пробелами плавает на поверхности стандартного ввода:
x1 y1 d1 x2 y2 d2 x3 y3 d3
. Выход похож на стандартный вывод:x y
.C
тип структуры, членами которой являются x-координатаa
, y-координатаb
и расстояние (радиус)c
. Функцияf
принимает двеC
структуры и указатель на число с плавающей точкой и определяет линию, на которойC
пересекаются (круги). Y-точка пересечения этой линии помещается в указатель-поплавок, и наклон возвращается.Программа вызывает
f
две пары окружностей, затем определяет пересечение полученных линий.источник
f
производимые линии никогда не будут параллельными. Тесты должны гарантировать, что они также не вертикальные, так как я использую форму перехвата с уклоном. Таким образом, всегда есть только один ответ.Питон - 172
Принимает ввод как список кортежей формы (x, y, d). Дайте мне знать, если вы видите способ игры в гольф дальше, я чувствую, что должно быть, но я не могу понять это!
источник
-1 if 1 else 1
может стать-1if 1else 1
например. Это также работает с скобками. Есть несколько мест, где вы можете воспользоваться этим. И тоже.5
самое0.5
.