Saya memiliki masalah kombinatorik yang ingin saya gunakan pada OEIS — masalahnya adalah saya tidak memiliki persyaratan yang cukup. Tantangan kode ini adalah untuk membantu saya menghitung lebih banyak istilah, dan pemenangnya adalah pengguna dengan kiriman yang berisi jumlah syarat terbesar.
Masalah
Misalkan saya memberi Anda array segitiga bola lampu dengan panjang sisi :
o
o o
o o o
o o o o
o o o o o
o o o o o o
1 2 ... n
Saya akan menyalakan tiga bola lampu yang membentuk segitiga sama sisi "tegak" seperti dalam contoh berikut:
o
o x
o o o
o o o o
o x o o x
o o o o o o
Sebelum saya menyalakan lampu, tugas Anda adalah menghilangkan sebanyak mungkin bola lampu dari array — tanpa kehilangan kemampuan untuk menyimpulkan segitiga bola lampu yang telah dinyalakan. Untuk menjadi jelas, jika bola lampu telah dilepas, itu tidak menyala ketika posisinya dihidupkan.
Misalnya, jika Anda melepas lampu berikut (ditandai oleh .
), Anda hanya akan melihat dua lampu berikut menyala (ditandai oleh x
), yang cukup unik untuk menyimpulkan posisi ketiga (tidak menyala):
. .
. 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
Membiarkan a(n)
menjadi jumlah maksimum umbi yang dapat dihapus tanpa memperkenalkan ambiguitas.
Contoh
Dengan algoritma naif, saya telah memeriksa nilai hingga segitiga dengan panjang sisi 7, seperti yang terlihat di bawah ini:
.
. . 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
Mencetak gol
Kiriman yang menghitung urutan [a(2), a(3), ..., a(n)]
untuk n terbesar menang. Jika dua pengiriman memiliki urutan yang sama, maka yang dikirim sebelumnya menang.
Meskipun tidak perlu untuk pengajuan, akan bermanfaat bagi saya jika Anda memposting konstruksi array triangluar yang dihasilkan, seperti pada contoh di atas.