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.