পাইথন 2.7 - 380 378 372 371 367 363 357 354 352 348 336 চর
কেবল একটি সাধারণ উদ্দীপনা অনুসন্ধান।
from itertools import*
s=lambda x:[x]['1'>x>'0':]+['(%s%s%s)'%f for i in range(1,len(x))for f in product(s(x[:i]),'*/-+^',s(x[i:]))]
def E(e):
try:return eval(e.replace("^","**"))
except:0
A={i:e for i in range(input(),input()+1)for x in permutations(`i`)for e in s("".join(x))[x>='1':]if E(e)==i}
print len(A)
for v in A:print v,A[v]
উদাহরণ রান:
1
300
9
128 (2^(8-1))
289 ((9+8)^2)
216 (6^(1+2))
121 (11^2)
153 (3*51)
25 (5^2)
125 (5^(2+1))
126 (6*21)
127 ((2^7)-1)
ব্যাখ্যা:
s(x)
হ'ল এমন একটি ফাংশন যা অঙ্কগুলির ক্রমযুক্ত স্ট্রিং নেয় এবং সেই সংখ্যাটি ব্যবহার করে সমস্ত ক্রমকে সেই ক্রমে প্রদান করে returns
[x]['1'>x>'0':]
এক্স '0' হয় বা '0' দিয়ে শুরু না হওয়া অঙ্কগুলির অনুক্রমের একটি তালিকা বিশিষ্ট করে; অন্যথায়, এটি একটি খালি তালিকায় মূল্যায়ন করে। মূলত এটি সেই ক্ষেত্রে পরিচালনা করে যেখানে আমি সমস্ত সংখ্যার সাথে একসাথে যোগদান করি।
['(%s%s%s)'%f for i in range(1,len(x))for f in product(s(x[:i]),'*/-+^',s(x[i:]))]
মূলত x দুটি অংশে পার্টিশন x (উভয়ই শূন্য-দৈর্ঘ্যের নয়), প্রতিটি অংশে s () কল করে এবং ফলাফল () ব্যবহার করে তাদের মধ্যে কিছু অপারেটরের সাথে সমস্ত ফলাফলের সাথে যোগ দেয়।
E(e)
মূলত একটি নিরাপদ al এটি ই এর মানটি ই ই বৈধ এবং অন্যথায় অন্য কোনও নয়।
A={i:e for i in range(input(),input()+1)for x in permutations(`i`)for e in s("".join(x))[x>='1':]if E(e)==i}
মূলত এই কোডটি পরিসরের সমস্ত সংখ্যা চেষ্টা করে, তাদের সংখ্যা নির্ধারণ করে এবং প্রতিটি অভিব্যক্তি পরীক্ষা করে যে সেই অনুমানের জন্য উত্পন্ন হয়, x '0' দিয়ে শুরু না হলে প্রথম এক্সপ্রেশন উপেক্ষা করে, কারণ যদি x দিয়ে শুরু না হয় 0 'এর পরে প্রথম এক্সপ্রেশনটি কেবল x হবে।
বিকল্প সংস্করণ - 397 অক্ষর
আপনি যদি ভগ্নাংশ ব্যবহার করতে চান তবে আমার কোডটি এখানে:
from fractions import*
from itertools import*
s=lambda x:["Fraction(%s)"%x]['1'>x>'0':]+['(%s%s%s)'%f for i in range(1,len(x))for f in product(s(x[:i]),'*/-+^',s(x[i:]))]
def E(e):
try:return eval(e.replace("^","**"))
except:0
A={i:e for i in range(input(),input()+1)for x in permutations(`i`)for e in s("".join(x))[x>='1':]if E(e)==i}
print len(A)
for v in A:print v,A[v].replace("Fraction","")
/
কাজ করে তা ব্যাখ্যা করতে পারেন ? উদাহরণস্বরূপ কি1/3
?