OEIS'e koymak istediğim bir kombinatorik problemim var - sorun, yeterli terimlerim olmaması. Bu kod zorluğu, daha fazla terim hesaplamama yardımcı olmaktır ve kazanan, gönderimi en fazla sayıda terim içeren kullanıcı olacaktır.
Sorun
Size yan uzunluğu olan üçgen bir ampul dizisi verdiğimi varsayalım :
o
o o
o o o
o o o o
o o o o o
o o o o o o
1 2 ... n
Aşağıdaki örnekte olduğu gibi "dik" bir eşkenar üçgen oluşturan üç ampulü açacağım:
o
o x
o o o
o o o o
o x o o x
o o o o o o
Işıkları açmadan önce işiniz, açılmış ampullerin üçgenini çıkarma yeteneğini kaybetmeden diziden olabildiğince fazla ampulü çıkarmaktır. Açıkça söylemek gerekirse, bir ampul çıkarılmışsa, konumu açıldığında yanmaz.
Örneğin, aşağıdaki ampulleri (ile işaretlenmiş .
) çıkardıysanız, yalnızca aşağıdaki iki ışığın yandığını (işaretlendiğini x
) görürsünüz;
. .
. 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
Izin vermek a(n)
herhangi bir belirti vermeden kaldırılabilir maksimum ampul sayısı olsun .
Misal
Saf bir algoritma ile, aşağıda görüldüğü gibi kenar uzunluğu 7 olan bir üçgene kadar değerleri kontrol ettim:
.
. . 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
puanlama
En [a(2), a(3), ..., a(n)]
büyük n dizisini hesaplayan gönderim kazanır. İki gönderinin özdeş dizileri varsa, daha önce gönderilenler kazanır.
Sunum için gerekli olmamakla birlikte, yukarıdaki örnekte olduğu gibi, sonuçtaki triangluar dizilerinin bir yapısını yayınlarsanız bana öğretici olacaktır.