У мене є проблема комбінаторики, яку я хотів би поставити на 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 виграє. Якщо два подання мають однакові послідовності, виграє те, що було розміщено раніше.
Хоча це не потрібно для подання, мені було б повчально, якщо ви розміщуєте конструкцію отриманих трикутних масивів, як у наведеному вище прикладі.