পাইথন 3, n≈40
def plausible_suffix(l,N):
if sum(l)>N:
return False
pairs = [(N-1-i,l[i]) for i in range(len(l))]
if sum(i*x for i,x in pairs)>N:
return False
num_remaining = N - len(l)
for index, desired_count in pairs:
count = l.count(index)
more_needed = desired_count - count
if more_needed<0:
return False
num_remaining -= more_needed
if num_remaining<0:
return False
return True
plausible_func = plausible_suffix
def generate_magic(N):
l=[0]
while l:
extend = False
if plausible_func(l,N):
if len(l)==N:
yield l[::-1]
else:
extend = True
if extend:
l.append(0)
else:
while l[-1]>=N-2:
l.pop(-1)
if not l:raise StopIteration
l[-1]+=1
n=40 #test parameter
if n>0:
for x in generate_magic(n):
print(n,x)
সম্ভাব্য তালিকাগুলির প্রস্থ-প্রথম অনুসন্ধান কি ডান থেকে বামে এন্ট্রি পূরণ করছে, যদি এটি যুক্তিযোগ্য না হয় তবে প্রত্যয়টি অনুসন্ধান বন্ধ করে দেয়, যা ঘটতে পারে:
- প্রত্যয়টিতে প্রবেশের যোগফলকে ছাড়িয়ে গেছে
n
(পুরো তালিকার যোগফল অবশ্যই হবে n
)
i*l[i]
প্রত্যয়টির ওজনযুক্ত যোগফল ছাড়িয়ে গেছে n
(পুরো তালিকার যোগফল অবশ্যই হবে n
)
- যে কোনও সংখ্যার প্রত্যয়টিতে আরও বেশি বার উপস্থিত হয় যা প্রত্যয়টি বলে যে এটি করা উচিত
- বাকি অসম্পূর্ণ দাগগুলির সংখ্যা যে সমস্ত সংখ্যার জন্য আরও বার প্রদর্শিত হবে তার জন্য অ্যাকাউন্ট খুব কম।
আমার বাম থেকে ডানে মূল পরীক্ষিত উপসর্গ ছিল, তবে এটি আরও ধীরে ধীরে চলেছে went
ফলাফলগুলি হ'ল n=30
:
4 [1, 2, 1, 0]
4 [2, 0, 2, 0]
5 [2, 1, 2, 0, 0]
7 [3, 2, 1, 1, 0, 0, 0]
8 [4, 2, 1, 0, 1, 0, 0, 0]
9 [5, 2, 1, 0, 0, 1, 0, 0, 0]
10 [6, 2, 1, 0, 0, 0, 1, 0, 0, 0]
11 [7, 2, 1, 0, 0, 0, 0, 1, 0, 0, 0]
12 [8, 2, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0]
13 [9, 2, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
14 [10, 2, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
15 [11, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
16 [12, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
17 [13, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
18 [14, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
19 [15, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
20 [16, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
21 [17, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
22 [18, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
23 [19, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
24 [20, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
25 [21, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
26 [22, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
27 [23, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
28 [24, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
29 [25, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
30 [26, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
প্রথম তিনটি তালিকা ব্যতীত [1, 2, 1, 0], [2, 0, 2, 0], [2, 1, 2, 0, 0]
প্রতিটি দৈর্ঘ্যের ঠিক একটি তালিকা রয়েছে n>6
এবং এটির ফর্ম রয়েছে [n-4, 2, 1, ..., 0, 0, 1, 0, 0, 0]
। এই প্যাটার্নটি কমপক্ষে অবধি স্থায়ী n=50
। আমি সন্দেহ করি এটি চিরকাল ধরে রেখেছে, এক্ষেত্রে এগুলির একটি বিশাল সংখ্যার আউটপুট দেওয়ার ক্ষেত্রে এটি ক্ষুদ্র। তা না হলেও, সম্ভাব্য সমাধানগুলি সম্পর্কে একটি গাণিতিক বোঝাপড়া একটি অনুসন্ধানকে তীব্রতর করবে।