Mam problem z kombinatoryką, który chciałbym postawić na OEIS - problem polega na tym, że nie mam wystarczającej liczby terminów. To wyzwanie kodowe ma pomóc mi w obliczeniu większej liczby terminów, a zwycięzcą zostanie użytkownik, który prześle największą liczbę terminów.
Problem
Załóżmy, że dam ci trójkątny zestaw żarówek o długości boku :
o
o o
o o o
o o o o
o o o o o
o o o o o o
1 2 ... n
Zamierzam włączyć trzy żarówki, które tworzą „pionowy” trójkąt równoboczny, jak w poniższym przykładzie:
o
o x
o o o
o o o o
o x o o x
o o o o o o
Zanim zapalę światła, Twoim zadaniem jest usunięcie jak największej liczby żarówek z tablicy - bez utraty możliwości wywnioskowania trójkąta włączonych żarówek. Dla jasności, jeśli żarówka została usunięta, nie świeci się, gdy jej położenie jest włączone.
Na przykład, jeśli usuniesz następujące żarówki (oznaczone przez .), zobaczysz tylko następujące dwa światła włączające się (oznaczone przez x), co wystarczy jednoznacznie wydedukować trzecią (nieoświetloną) pozycję:
. .
. 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
Niech a(n)będzie maksymalną liczbą żarówek, które można usunąć bez wprowadzania dwuznaczności.
Przykład
Za pomocą naiwnego algorytmu sprawdziłem wartości do trójkąta o długości boku 7, jak pokazano poniżej:
.
. . 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
Punktacja
Zgłoszenie obliczające sekwencję [a(2), a(3), ..., a(n)]dla największej liczby n wygrywa. Jeśli dwa zgłoszenia mają identyczne sekwencje, wygrywa ten, który został wcześniej opublikowany.
Chociaż nie jest to konieczne do przesłania, byłoby pouczające, jeśli opublikujesz konstrukcję wynikowych tablic triangluarowych, jak w powyższym przykładzie.