У меня есть проблема комбинаторики, которую я хотел бы поставить в OEIS - проблема в том, что у меня недостаточно терминов. Задача этого кода - помочь мне вычислить больше терминов, и победителем станет пользователь, представивший наибольшее количество терминов.
Проблема
Предположим, я даю вам треугольный набор лампочек с длиной стороны :
o
o o
o o o
o o o o
o o o o o
o o o o o o
1 2 ... n
Я собираюсь включить три лампочки, которые образуют «вертикальный» равносторонний треугольник, как в следующем примере:
o
o x
o o o
o o o o
o x o o x
o o o o o o
Прежде чем я включу свет, ваша задача состоит в том, чтобы убрать как можно больше лампочек из массива, не теряя возможности вывести треугольник включенных лампочек. Чтобы было ясно, если лампочка была удалена, она не горит, когда ее положение включено.
Например, если вы удалили следующие лампочки (помеченные .
), вы увидите только два следующих индикатора (помеченных x
), что достаточно однозначно вывести третью (неосвещенную) позицию:
. .
. o . x
. . o . . o
o o o . => o o o .
o o o o . o x o o . <- the third unlit position
o . . . o o o . . . o o
Позвольте a(n)
быть максимальное количество лампочек, которые могут быть удалены без внесения каких-либо неясностей.
пример
С наивным алгоритмом я проверил значения до треугольника с длиной стороны 7, как показано ниже:
.
. . o
. . o o . o
. . . . . o . o o .
. . . . o o o o o . o o . o .
. . . . o o o o . o o o o o . o . o . o o
. . . o o . o o o o . . o o o . . . o o o . o . o o o
a(2) = 3 a(3) = 4 a(4) = 5 a(5) = 7 a(6) = 9 a(7) = 11
счет
Представление, которое вычисляет последовательность [a(2), a(3), ..., a(n)]
для самых больших n побед. Если два представления имеют идентичные последовательности, выигрывает тот, который был опубликован ранее.
Хотя это и не обязательно для представления, для меня было бы поучительно, если вы опубликуете конструкцию получающихся триангулярных массивов, как в примере выше.