1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #!/usr/bin/ruby
- # a(n) is the smallest n-gonal pyramidal number which can be represented as the sum of n distinct nonzero n-gonal pyramidal numbers in exactly n ways, or -1 if none exists.
- # https://oeis.org/A359321
- # For n = 3: 2300 = 1 + 969 + 1330 = 56 + 220 + 2024 = 165 + 364 + 1771.
- # For n = 4: 6201 = 1 + 91 + 1785 + 4324 = 1 + 285 + 1015 + 4900 = 30 + 140 + 506 + 5525 = 91 + 819 + 1496 + 3795.
- # Known terms:
- # 2300, 6201, 8125, 6391
- # Conjecture:
- # a(7)-a(11) are all -1.
- func isok(index, k) {
- var n = index.pyramidal(k)
- var arr = (1..^index -> map{|j| pyramidal(j, k) })
- var s = Set(arr...)
- var sol = []
- arr.combinations(k-1, {|*a|
- with (n - a.sum) {|d|
- if (s.has(d) && !a.has(d)) {
- sol << a
- }
- }
- })
- sol.map {|a| [a..., n - a.sum].sort }.uniq
- }
- func a(n) {
- for k in (1..Inf) {
- var sol = isok(k, n)
- if (sol.len == n) {
- return [n, k, k.pyramidal(n)]
- }
- elsif (sol.len > n) {
- say "[#{n}] Found #{sol.len} solutions for k = #{k}..."
- }
- }
- }
- for k in (3..6) {
- say a(k)
- }
- #~ say a(12)
- __END__
- [7] Found 8 solutions for k = 22...
- [7] Found 15 solutions for k = 26...
- [7] Found 9 solutions for k = 27...
- [7] Found 18 solutions for k = 28...
- [7] Found 12 solutions for k = 29...
- [7] Found 20 solutions for k = 30...
- [7] Found 27 solutions for k = 31...
- [7] Found 44 solutions for k = 32...
- [7] Found 42 solutions for k = 33...
- [7] Found 46 solutions for k = 34...
- [7] Found 46 solutions for k = 35...
- [7] Found 70 solutions for k = 36...
- [7] Found 85 solutions for k = 37...
- [7] Found 81 solutions for k = 38...
- [7] Found 88 solutions for k = 39...
- [8] Found 10 solutions for k = 23...
- [8] Found 18 solutions for k = 24...
- [8] Found 14 solutions for k = 25...
- [8] Found 24 solutions for k = 26...
- [8] Found 17 solutions for k = 27...
- [8] Found 28 solutions for k = 28...
- [8] Found 53 solutions for k = 29...
- [9] Found 14 solutions for k = 26...
- [9] Found 23 solutions for k = 27...
- [9] Found 22 solutions for k = 28...
- [9] Found 36 solutions for k = 29...
- [10] Found 11 solutions for k = 26...
- [10] Found 17 solutions for k = 27...
- [10] Found 11 solutions for k = 28...
- [10] Found 34 solutions for k = 29...
- [11] Found 12 solutions for k = 27...
- [11] Found 15 solutions for k = 29...
- [11] Found 32 solutions for k = 30...
- [12] Found 33 solutions for k = 31...
|