Для изображения N на N найдите набор пикселей, чтобы расстояние между ними не было более одного раза. То есть, если два пикселя разделены расстоянием d , то они являются единственными двумя пикселями, которые разделены ровно d (используя евклидово расстояние ). Обратите внимание, что d не обязательно должно быть целым числом.
Задача состоит в том, чтобы найти такой набор больше, чем кто-либо другой.
Спецификация
Вход не требуется - для этого конкурса N будет зафиксировано на 619.
(Поскольку люди продолжают спрашивать - в числе 619 нет ничего особенного. Оно было выбрано достаточно большим, чтобы сделать оптимальное решение маловероятным, и достаточно маленьким, чтобы изображение N на N отображалось без автоматической стековой замены. Изображения могут быть отображал полный размер до 630 на 630, и я решил пойти с самым большим штрихом, который не превышает это.)
Вывод представляет собой разделенный пробелами список целых чисел.
Каждое целое число в выходных данных представляет один из пикселей, пронумерованных в английском порядке чтения от 0. Например, для N = 3 местоположения будут пронумерованы в следующем порядке:
0 1 2
3 4 5
6 7 8
Вы можете выводить информацию о ходе выполнения во время выполнения, если хотите, при условии, что конечный результат подсчета очков будет легко доступен. Вы можете выводить в STDOUT или в файл, или что-либо другое, что проще всего вставить в Судья Фрагмента стека ниже.
пример
N = 3
Выбранные координаты:
(0,0)
(1,0)
(2,1)
Выход:
0 1 5
выигрыш
Оценка - это количество мест на выходе. Из тех достоверных ответов, которые имеют самый высокий балл, побеждает самый ранний, чтобы опубликовать результат с этим баллом.
Ваш код не должен быть детерминированным. Вы можете опубликовать свой лучший результат.
Смежные области для исследований
(Спасибо Abulafia за ссылки Голомба)
Хотя ни один из них не является тем же, что и эта проблема, они оба похожи по концепции и могут дать вам идеи о том, как подойти к этому:
- Линейка Голомба : одномерный случай.
- Прямоугольник Голомба : двумерное расширение линейки Голомба. Вариант случая NxN (квадрат), известный как массив Костаса, решается для всех N.
Обратите внимание, что точки, необходимые для этого вопроса, не подпадают под те же требования, что и прямоугольник Голомба. Прямоугольник Голомба простирается от одномерного случая, требуя, чтобы вектор от каждой точки друг к другу был уникальным. Это означает, что могут быть две точки, разделенные расстоянием 2 по горизонтали, а также две точки, разделенные расстоянием 2 по вертикали.
В этом вопросе скалярное расстояние должно быть уникальным, поэтому не может быть горизонтального и вертикального разделения на 2. Каждое решение этого вопроса будет прямоугольником Голомба, но не каждый прямоугольник Голомба будет правильным решением этот вопрос.
Верхние границы
Деннис услужливо указал в чате, что 487 является верхней границей на счете, и дал доказательство:
Согласно моему коду CJam (
619,2m*{2f#:+}%_&,
), существует 118800 уникальных чисел, которые могут быть записаны как сумма квадратов двух целых чисел от 0 до 618 (оба включительно). n пикселей требуют n (n-1) / 2 уникальных расстояний между собой. Для n = 488 это дает 118828.
Таким образом, есть 118 800 возможных различных длин между всеми потенциальными пикселями в изображении, и размещение 488 черных пикселей приведет к 118 828 длинам, что делает невозможным их уникальность.
Мне было бы очень интересно узнать, есть ли у кого-нибудь доказательство более низкой верхней границы, чем эта.
Leaderboard
(Лучший ответ от каждого пользователя)