বর্গক্ষেত্রের শিকড়গুলি পূর্বাবস্থায় ফেরান


16

আপনার কাজ হ'ল দশমিকগুলি পূর্বে পূর্ণসংখ্যার বর্গমূলের যোগফলে রূপান্তর করা। ফলাফলটিতে কমপক্ষে significant টি উল্লেখযোগ্য দশমিক অঙ্কের নির্ভুলতা থাকতে হবে।

ইনপুট :

বর্গমূলের সংখ্যা এবং দশমিকটি সংখ্যাকে আনুমানিক নির্দেশ করে এমন একটি সংখ্যা।

উদাহরণ ইনপুট:

2 3.414213562373095

আউটপুট : পূর্ণসংখ্যাগুলি স্পেস দ্বারা পৃথক করা হয়, যখন বর্গক্ষেত্র মূল এবং যুক্ত করা হয়, কমপক্ষে the টি উল্লেখযোগ্য দশমিক অঙ্কের সাথে প্রায় দশমিক দশমিক নির্ভুল are

সমাধানে শূন্যগুলি অনুমোদিত নয়।

যদি একাধিক সমাধান থাকে তবে আপনাকে কেবল একটি মুদ্রণ করতে হবে।

উদাহরণ আউটপুট (যে কোনও ক্রমে):

4 2

এটি কাজ করে কারণ Math.sqrt(4) + Math.sqrt(2) == 3.414213562373095

এটি কোড গল্ফ। সংক্ষিপ্ততম কোড (alচ্ছিক বোনাস সহ) জয়!

সর্বদা একটি সমাধান হতে চলেছে তবে -10 আপনার প্রোগ্রামটি "না" মুদ্রিত করে যখন পূর্ণসংখ্যার সাথে কোনও সমাধান না হয়। তদুপরি, -10 যদি আপনার প্রোগ্রামটি কেবলমাত্র একের পরিবর্তে সমস্ত সমাধান (নিউলাইনস বা অর্ধিকলন বা যে কোনও কিছু দ্বারা পৃথক) প্রিন্ট করে।

পরীক্ষার কেস:

3 7.923668178593959 --> 6 7 8
2 2.8284271247461903 --> 2 2
5 5.0 --> 1 1 1 1 1
5 13.0 --> 4 4 9 9 9 --> 81 1 1 1 1 --> 36 9 4 1 1 etc. [print any, but print all for the "all solutions bonus"]

এবং হ্যাঁ, আপনার প্রোগ্রামটি যেকোন যুক্তিসঙ্গত মেশিনে সসীম স্মৃতি ব্যবহার করে সীমাবদ্ধভাবে শেষ করতে হবে। এটি কেবল "তত্ত্ব অনুসারে" কাজ করতে পারে না, আপনাকে এটির সত্যিকারের পরীক্ষা করতে সক্ষম হতে হবে।


যদি একাধিক সমাধান হয়, তবে আমরা কোন সমাধানটি মুদ্রণ করি তা কি গুরুত্বপূর্ণ? যেমন আপনার শেষ পরীক্ষার মামলার (5 13.0) ক্ষেত্রে এটিও একটি কার্যকর সমাধান: 81 1 1 1 1
জাকুব

এবং সমাধানে শূন্যগুলি অনুমোদিত কি?
জাকুবে

1
ইনপুট কি সর্বদা স্থান-বিচ্ছিন্ন হয়?
Sp3000

এবং ফাংশন কলের মাধ্যমে ইনপুট প্রবেশের অনুমতি দেওয়া হচ্ছে?
জাকুবে

এছাড়াও, সদৃশ সমাধান সম্পর্কে কি? প্রথম উদাহরণ হিসাবে, আমাদের কোডটি 6 7 8দ্বিতীয় বোনাসের জন্য ছয়টি অনুমতি প্রিন্ট করার অনুমতি দেয় ?
মার্টিন ইন্ডার

উত্তর:


9

পাইথন 3, 90 - 10 = 80

def S(N,x,n=[],i=1):
 if x*x<1e-12>N==0:print(*n)
 while.1+x*x>i:S(N-1,x-i**.5,n+[i]);i+=1

(টিপস, বিশেষত কিছুক্ষণের মধ্যে লুপটির পুনর্গঠন করার জন্য @ এক্সনোরকে মেগা ধন্যবাদ)

একটি সাধারণ পুনরাবৃত্তি প্রচেষ্টা। এটি লক্ষ্য সংখ্যার সাথে শুরু হয় এবং 0 বা তত কম না হওয়া পর্যন্ত অবিচ্ছিন্নভাবে বর্গমূলকে বিয়োগ করে। ফাংশনটির Sমতো বলা যেতে পারে S(2,3.414213562373095)(দ্বিতীয় যুক্তিটি ধনাত্মক বলে ধরে নেওয়া হয়)।

প্রোগ্রামটি কেবলমাত্র সমস্ত সমাধান মুদ্রণ করে না, এটি সমাধানের সমস্ত অনুমতিগুলি প্রিন্ট করে (একটু বহিরাগত, আমি জানি)। এখানে সর্বশেষ কেসটির আউটপুট দেওয়া হয়েছে: পেস্টবিন

সামান্য সাম্প্রতিক একটি 98 - 10 = 88 সমাধান দেয় যা অনুমতিগুলি প্রিন্ট করে না, এটি আরও দক্ষ করে তোলে:

def S(N,x,n=[]):
 *_,i=[1]+n
 if x*x<1e-12>N==0:print(*n)
 while.1+x*x>i:S(N-1,x-i**.5,n+[i]);i+=1

এবং কেবল মজাদার জন্য, এই 99 - 10 = 89 এক হিসাবে এটি যতটা দক্ষ তা কার্যকর (অন্যদের মতো নয়, এটি স্ট্যাকটি ফুটিয়ে তোলে না S(1,1000):

def S(N,x,n=[]):
 *_,i=[1]+n
 if x*x<1e-12>N:print(*n)
 while(.1+x*x>i)*N:S(N-1,x-i**.5,n+[i]);i+=1

মনে রাখবেন, যদিও আমাদের একটি পরিবর্তনীয় ডিফল্ট তর্ক রয়েছে, তবে n+[i]নতুন লিস্ট তৈরি করার পরে আমরা যদি ফাংশনটি পুনরায় চালু করি তবে এটি কখনই সমস্যার কারণ হবে না ।


সঠিকতার প্রমাণ

অসীম লুপটি শেষ করতে, আমাদের অবশ্যই এমন কিছু স্থানে আঘাত করতে হবে যেখানে x <0 এবং 0.1 + x 2 > 1 । এটি x <-0.948 ... দ্বারা সন্তুষ্ট ।

তবে মনে রাখবেন যে আমরা ইতিবাচক এক্স থেকে শুরু করি এবং এক্স সর্বদা হ্রাস পাচ্ছে , তাই x <-0.948 হিট করার জন্য ... আমাদের অবশ্যই x '- i 0.5 <-0.948 ... কিছু x'> -0.948 এর জন্য থাকতে হবে .. । আগে এক্স এবং ধনাত্মক পূর্ণসংখ্যা আমি । লুপটি চলার জন্য, আমাদের অবশ্যই 0.1 + x ' 2 > i থাকা উচিত

পুনরায় সাজানো আমরা এক্স ' 2 + 1.897x' + 0.948 <i <0.1 + x ' 2 পেয়েছি যা বাইরের অংশগুলিকে বোঝায় যে x' <-0.447 । তবে যদি -0.948 <x '<-0.447 , তবে কোনও ধনাত্মক পূর্ণসংখ্যা আমি উপরের অসমতার ফাঁকে ফিট করতে পারি না।

অতএব আমরা কখনও অসীম লুপে শেষ করব না।


আপনি এড়াতে পারেন absসঙ্গে x*x<1e-12
xnor

1
আমি মনে করি এই whileলুপটি ফাংশন পরামিতিগুলির সূচনা করে for: while.1+x*x>i:S(x-i**.5,n+[i]);i+=1এটি প্রতিস্থাপনে কাজ করে i=1। ধারণাটি হ'ল intএস এ রূপান্তর করার প্রয়োজন এড়ানো উচিত । .1ভাসা সম্প্রচার হ্যান্ডেল করতে হয়; আমি মনে করি এটি অসীম লুপগুলির বিরুদ্ধে সুরক্ষিত।
xnor

@ এক্সনর আমি আপাতত প্রথম টিপ বাস্তবায়ন করেছি। আমি এখনও দ্বিতীয়টির সঠিকতা যাচাই করছি, তবে এটি যদি ভাল হয় তবে এটি অনেকগুলি বাইট সংরক্ষণ করা হয়েছে! (এছাড়াও আমি আশা করি আপনি আসলে একটি সমাধান পোস্ট করেছেন: পি)
Sp3000

1
এবং Nএখন একটি ফাংশন যুক্তি দিয়ে, এটি সংক্ষেপে সংক্ষিপ্ত N-1এবং এর N==0চেয়ে কখন পরীক্ষা করা উচিত len(n)==N
xnor

@ এসপি 3000 আমি এখন নিশ্চিত যে এটি .1নিরাপদ; আপনি চাইলে আমি কোনও যুক্তি চ্যাট করতে পারি।
xnor

6

ECLiPSe প্রোলগ - 118 (138-20)

আমি প্রোলগের নিম্নলিখিত প্রয়োগগুলি ব্যবহার করেছি: http://eclipseclp.org/

:-lib(util).
t(0,S,[]):-!,S<0.00001,S> -0.00001.
t(N,S,[X|Y]):-A is integer(ceiling(S*S)),between(1,A,X),M is N-1,T is S-sqrt(X),t(M,T,Y).

এটি একটি খুব নিষ্পাপ, ক্ষয়ক্ষতিযুক্ত পদ্ধতির। সমস্ত সম্ভাব্য সমাধানের তালিকাতে সমস্ত সংমিশ্রণ কভার করতে সময় লাগে ( সম্পাদনা করুন : পরিদর্শন করা পূর্ণসংখ্যার পরিসর এখন প্রতিটি পদক্ষেপে হ্রাস পায়, যা প্রচুর অব্যর্থ সংমিশ্রণগুলি সরিয়ে দেয়)।

এখানে একটি পরীক্ষার সেশনের প্রতিলিপি অনুসরণ করা হবে। ডিফল্টরূপে, পরিবেশ এটির (-10) ব্যর্থ হলে সমস্ত সম্ভাব্য সমাধান (-10) এবং "না" মুদ্রণ করার চেষ্টা করবে।

মন্তব্যে স্প 3000 যথাযথভাবে উল্লেখ করা হয়েছে, এটি সফল হলে এটি "হ্যাঁ" মুদ্রণ করে। এর অবশ্যই অর্থ আমি আরও 10 টি পয়েন্ট মুছে ফেলতে পারি ;-)

[eclipse 19]: t(1,0.5,R).

No (0.00s cpu)
[eclipse 20]: t(2,3.414213562373095,R).

R = [2, 4]
Yes (0.00s cpu, solution 1, maybe more) ? ;

R = [4, 2]
Yes (0.00s cpu, solution 2, maybe more) ? ;

No (0.01s cpu)
[eclipse 21]: t(3,7.923668178593959,R).

R = [6, 7, 8]
Yes (0.02s cpu, solution 1, maybe more) ? ;

R = [6, 8, 7]
Yes (0.02s cpu, solution 2, maybe more) ? ;

R = [7, 6, 8]
Yes (0.02s cpu, solution 3, maybe more) ? 
[eclipse 22]: t(5,5.0,R).

R = [1, 1, 1, 1, 1]
Yes (0.00s cpu, solution 1, maybe more) ? ;
^C

interruption: type a, b, c, e, or h for help : ? abort
Aborting execution ...
Abort
[eclipse 23]: t(5,13.0,R).

R = [1, 1, 1, 1, 81]
Yes (0.00s cpu, solution 1, maybe more) ? ;

R = [1, 1, 1, 4, 64]
Yes (0.00s cpu, solution 2, maybe more) ? ;

R = [1, 1, 1, 9, 49]
Yes (0.00s cpu, solution 3, maybe more) ?
[eclipse 24]:

(সম্পাদনা) পারফরম্যান্সের বিষয়ে, এটি অন্যদের তুলনায় কমপক্ষে বেশ ভাল (উদাহরণস্বরূপ FryAmTheEggman এর এই মন্তব্য দেখুন )। প্রথমত, আপনি যদি সমস্ত ফলাফল মুদ্রণ করতে চান তবে নীচের প্রস্তাবটি যুক্ত করুন:

    p(N,S):-t(N,S,L),write(L),fail.
    p(_,_).

(5,13.0) কেসটির জন্য http://pastebin.com/ugjfEHpw দেখুন , যা 0.24 সেকেন্ডের মধ্যে সম্পূর্ণ হয় এবং 495 টি সমাধান পান (তবে সম্ভবত আমি কিছু সমাধান মিস করছি, আমি জানি না)।


3
এটি সফল হলে "হ্যাঁ" মুদ্রণ করে! ওহ প্রোলগ।
এসপি 3000

3

Erlang, 305-10 302-10

f(M,D)->E=round(D*D),t(p(E,M,1),{M,E,D}).
p(_,0,A)->A;p(E,N,A)->p(E,N-1,A*E).
t(-1,_)->"No";t(I,{N,E,D}=T)->L=q(I,N,E,[]),V=lists:sum([math:sqrt(M)||M<-L])-D,if V*V<0.1e-9->lists:flatten([integer_to_list(J)++" "||J<-L]);true->t(I-1,T)end.
q(I,1,_,A)->[I+1|A];q(I,N,E,A)->q(I div E,N-1,E,[I rem E+1|A]).

এই ফাংশনটি স্ট্রিং "না" বা ফাঁকা দ্বারা পৃথক মানগুলির সাথে একটি স্ট্রিং দেয়। এটি (অকার্যকরভাবে) প্রতিটি সম্ভাব্য মানগুলিকে একটি বড় পূর্ণসংখ্যায় এনকোড করে এবং উচ্চতর মান দিয়ে শুরু করে প্রক্রিয়া করে। সমাধানে 0 টি অনুমোদিত নয় এবং এনকোডযুক্ত 0 সকলকে উপস্থাপন করে। ত্রুটি স্কোয়ার করা হয়।

উদাহরণ:

f(1,0.5).               % returns "No"
f(2,3.414213562373095). % returns "4 2 "
f(3,7.923668178593959). % returns "8 7 6 "
f(5,5.0).               % returns "1 1 1 1 1 "
f(5,13.0).              % returns "81 1 1 1 1 "

f(5,13.0)ফাংশন অনুসন্ধানের স্থান 13 ^ 10 হওয়ায় দয়া করে ধৈর্য ধরুন । এটি 2 অতিরিক্ত বাইট দিয়ে দ্রুত তৈরি করা যেতে পারে।


3

পাইথন 3 2: 173 159 - 10 = 149

ব্যাখ্যা: প্রতিটি সমাধান হল x_1 x_2 ফর্মের ... x_n 1 <= x_1 <= x ^ 2 সহ যেখানে এক্স লক্ষ্য যোগফল। অতএব আমরা প্রতিটি সমাধানটি বেস x ^ 2 এ পূর্ণসংখ্যা হিসাবে এনকোড করতে পারি। লুপটি সমস্তটির উপরে পুনরাবৃত্তি করে (x ^ 2) poss n সম্ভাবনাগুলি। তারপরে আমি পূর্ণসংখ্যাটি রূপান্তর করে যোগফলটি পরীক্ষা করি। অনেকটাই অকপট.

i=input;n=int(i());x=float(i());m=int(x*x);a=m**n
while a:
 s=[a/m**b%m+1for b in range(n)];a-=1
 if abs(x-sum(b**.5for b in s))<1e-5:print' '.join(map(str,s))

এটি সমস্ত সমাধান সন্ধান করে তবে শেষ পরীক্ষার কেসটি অনেক দীর্ঘ সময় নেয়।


3

জাভাস্ক্রিপ্ট (ES6) 162 (172 - 10) 173

সম্পাদনা একটু খাটো, একটু ধীর।

2 পরামিতি সহ একটি ফাংশন হিসাবে, জাভাস্ক্রিপ্ট কনসোল আউটপুট। এটি কোনও পুনরাবৃত্তি ছাড়াই সমস্ত সমাধান মুদ্রণ করে (সমাধান টিউপসগুলি ইতিমধ্যে সাজানো হয়)।
আমি চর গণনা সম্পর্কে সময় নির্ধারণের চেয়ে আরও যত্নবান হয়েছি, যাতে এটি স্ট্যান্ডার্ড জাভাস্ক্রিপ্টের সময়সীমার মধ্যে একটি ব্রাউজার কনসোলে সহজেই পরীক্ষিত হয়।

(ফেব্রুয়ারী 2016 আপডেট) সর্বশেষ পরীক্ষার মামলার বর্তমান সময়: প্রায় 1 150 সেকেন্ড । মেমরির প্রয়োজনীয়তা: নগণ্য।

F=(k,t,z=t- --k,r=[])=>{
  for(r[k]=z=z*z|0;r[k];)
  { 
    for(;k;)r[--k]=z;
    for(w=t,j=0;r[j];)w-=Math.sqrt(r[j++]);
    w*w<1e-12&&console.log(r.join(' '));
    for(--r[k];r[k]<1;)z=--r[++k];
  }
}

ES 5 সংস্করণ যে কোনও ব্রাউজার

function F(k,t)
{
  var z=t- --k,r=[];  
  for(r[k]=z=z*z|0;r[k];)
  {
    for(;k;)r[--k]=z;
    for(w=t,j=0;r[j];)w-=Math.sqrt(r[j++]);
    w*w<1e-12&&console.log(r.join(' '));
    for(--r[k];r[k]<1;)z=--r[++k];
  }
}

স্নিপেট পরীক্ষা করুন এটি কোনও সাম্প্রতিক ব্রাউজারে চালানো উচিত

F=(k,t)=>
{
   z=t- --k,r=[];
   for(r[k]=z=z*z|0;r[k];)
   { 
      for(;k;)r[--k]=z;
      for(w=t,j=0;r[j];)w-=Math.sqrt(r[j++]);
      w*w<1e-12&&console.log(r.join(' '));
      for(--r[k];r[k]<1;)z=--r[++k];
   }
}

console.log=x=>O.textContent+=x+'\n'

t=~new Date
console.log('\n2, 3.414213562373095')
F(2, 3.414213562373095)
console.log('\n5, 5')
F(5, 5)
console.log('\n3, 7.923668178593959')
F(3, 7.923668178593959)
console.log('\n5, 13')
F(5, 13)

t-=~new Date
O.textContent = 'Total time (ms) '+t+ '\n'+O.textContent
<pre id=O></pre>

( সম্পাদনা করুন ) নীচে আমার পিসিতে ফলাফল দেওয়া হয়েছে যখন আমি এই উত্তরটি 15 মাস আগে পোস্ট করেছি। আমি আজ চেষ্টা করেছি এবং এটি একই পিসিতে 100 গুণ দ্রুত, ফায়ারফক্সের একটি 64 বিট আলফা সংস্করণ (এবং ক্রোম পিছনে পিছনে রয়েছে) দিয়ে! - ফায়ারফক্স 40 আলফা bit৪ বিটের সাথে বর্তমান সময়: ~ 2 সেকেন্ড, ক্রোম 48: ~ 29 সেকেন্ড

আউটপুট (আমার পিসিতে - শেষ নম্বরটি মিলিসেকেন্ডে রানটাইম)

2 4
1 1 1 1 1
6 7 8
1 1 1 1 81
1 1 1 4 64
1 1 1 9 49
1 1 4 4 49
1 1 1 16 36
1 1 4 9 36
1 4 4 4 36
1 1 1 25 25
1 1 4 16 25
1 1 9 9 25
1 4 4 9 25
4 4 4 4 25
1 1 9 16 16
1 4 4 16 16
1 4 9 9 16
4 4 4 9 16
1 9 9 9 9
4 4 9 9 9
281889

2

গণিত - 76 - 20 = 56

f[n_,x_]:=Select[Union[Sort/@Range[x^2]~Tuples~{n}],Abs[Plus@@√#-x]<10^-12&]

উদাহরণ

f[2, 3.414213562373095]
> {{2, 4}}
f[3, 7.923668178593959]
> {{6, 7, 8}}
f[3, 12]
> {{1, 1, 100}, {1, 4, 81}, {1, 9, 64}, {1, 16, 49}, {1, 25, 36}, {4, 4, 64}, {4, 9, 49}, {4, 16, 36}, {4, 25, 25}, {9, 9, 36}, {9, 16, 25}, {16, 16, 16}}

এই মুদ্রণ কিভাবে No? এছাড়াও, আউটপুট স্থান পৃথক করা হয় না। এছাড়াও, আপনি Tr@পরিবর্তে ব্যবহার করতে পারবেন না Plus@@? এবং আপনি কিছু অক্ষর সংরক্ষণ করতে সক্ষম হতে পারে পরিবর্তন Selectকরে Cases, একটি নিদর্শন শেষে ফাংশন, এবং fএকটি নামবিহীন বিশুদ্ধ ফাংশন তৈরি করে।
মার্টিন এন্ডার

2

হাস্কেল, 87 80 - 10 = 70

এটি @ স্প 3000 এর পাইথন 3 প্রোগ্রামের অনুরূপ একটি পুনরাবৃত্ত আলগোরিদিম। এটি একটি ইনফিক্স ফাংশন নিয়ে গঠিত #যা সমস্ত সমাধানের সমস্ত অনুমতিগুলির একটি তালিকা প্রদান করে।

0#n=[[]|n^2<0.1^12]
m#n=[k:v|k<-[1..round$n^2],v<-(m-1)#(n-fromInteger k**0.5)]

102 99 92 - 10 = 82 এর স্কোর সহ আমরা প্রতিটি সমাধান কেবল একবার মুদ্রণ করতে পারি, বাছাই করা:

0#n=[[]|n^2<0.1^12]
m#n=[k:v|k<-[1..round$n^2],v<-(m-1)#(n-fromInteger k**0.5),m<2||[k]<=v]

2

পাইথ 55 54 47-20 = 27

DgGHKf<^-Hsm^d.5T2^10_12^r1hh*HHGR?jbmjdkKK"No

এটি অনলাইনে চেষ্টা করুন।

নির্লজ্জভাবে xnor এর মন্তব্য থেকে ধার করা ;)

এটি কোনও মূল্যবান কম্পিউটারে মেমরির হাতছাড়া হয়ে যাবে এমনকি একটি মানের জন্যও 5,5.0। একটি ফাংশন সংজ্ঞায়িত করে,, gএটি বলা যেতে পারে g 3 7.923668178593959

এই অজগর 3 প্রোগ্রামটি মূলত একই অ্যালগরিদম ব্যবহার করে (শেষে "না" মুদ্রণটি করে না, যা সমস্ত ফলাফলের জন্য একটি ভেরিয়েবল নির্ধারণ করে কাজটি করা যেতে পারে) print(K if K else "No") ), তবে জেনারেটর ব্যবহার করে, তাই এটি কাজ করে না ' মেমরির ত্রুটি পাবেন না (এটি এখনও অত্যন্ত দীর্ঘ সময় নেবে, তবে মানগুলি খুঁজে পাওয়ার সাথে সাথে আমি এটি মুদ্রণ করে নিয়েছি):

এটি @ Sp3000- এ ঠিক একই ফলাফল দিয়েছে। এছাড়াও, এটি শেষ করতে বেশ কয়েক দিন সময় নিয়েছে (আমি এটির সময় পাইনি, তবে প্রায় 72 ঘন্টা)।

from itertools import*
def g(G,H):
    for x in product(range(1,int(H*H+2)),repeat=G):
        if (H-sum(map(lambda n:n**.5,x)))**2<1e-12:print(*x)

1

পাইথন 3 - 157 174 169 - 10 = 159

সম্পাদনা 1: আউটপুট ফর্ম্যাটটি কমা-বিচ্ছিন্ন পরিবর্তে স্থান-পৃথক পূর্ণসংখ্যায় পরিবর্তিত হয়েছে। (এন, এক্স) কাছাকাছি ধনুর্বন্ধনী অপসারণ করার পরামর্শের জন্য ধন্যবাদ।

সম্পাদনা 2: গল্ফিং টিপসের জন্য ধন্যবাদ! আমি যদি আরও 1 টি অক্ষর ছাঁটাই করতে পারি তবে আমি যদি 1e-6 এর মধ্যে আনুমানিক সমতার জন্য পরীক্ষার পরিবর্তে একটি == পরীক্ষা ব্যবহার করি তবে এটি যদি এরূপ উপস্থিত থাকে তবে এটি আনুমানিক সমাধানগুলিকে অকার্যকর করে দেয়।

আশাবাদী দক্ষতার সাথে সমস্ত সম্ভাব্য সংখ্যার সংমিশ্রণ উত্পন্ন করতে ইয়ারটুলগুলি ব্যবহার করে :)

দক্ষতার সাথে "না" মুদ্রণ যুক্ত করার কোনও উপায় আমি খুঁজে পাইনি, এটি সর্বদা 10 টিরও বেশি অতিরিক্ত অক্ষর গ্রহণ করে বলে মনে হয়।

from itertools import*
n,x=eval(input())
for c in combinations_with_replacement(range(1,int(x*x)),n):
 if abs(sum(z**.5for z in c)-x)<1e-6:print(' '.join(map(str,c)))

আপনার প্রোগ্রামটির ভুল আউটপুট ফর্ম্যাট রয়েছে (স্পেসগুলির পরিবর্তে কমা)। এছাড়াও, আপনি চারপাশে ধনুর্বন্ধনী অপসারণ করে 2 বাইট শেভ করতে পারেন n,x
জাগারব

আমি লাইনটি SyntaxErrorচেষ্টা করার সময় আমার মনে হচ্ছে eval...
Sp3000

@ এসপি 3000: 3,7.923668178593959 প্রবেশ করানোর চেষ্টা করুন। আপনার প্রয়োজন ','
জাকুব

৪ টি সামান্য উন্নতি: from itertools import*১ টি সঞ্চয় করে, স্থান z**.5forসংরক্ষণ করে 1 টি সংরক্ষণ করে []এবং sum(z**.5for z in c)2 টি ()if(...)
সঞ্চয়গুলি

পাইথন 2 এ পরিবর্তিত হয়ে n,x=input()আরও কমপ্যাক্ট ব্যবহার করা হবে?
অষ্টাভিয়া টোগামি

0

স্কালা (397 বাইট - 10)

import java.util.Scanner
object Z extends App{type S=Map[Int,Int]
def a(m:S,i:Int)=m updated(i,1+m.getOrElse(i,0))
def f(n:Int,x:Double):Set[S]={if(n==0){if(x.abs<1e-6)Set(Map())else Set()}
else((1 to(x*x+1).toInt)flatMap{(i:Int)=>f(n-1,x-Math.sqrt(i))map{(m:S)=>a(m,i)}}).toSet}
val s=new Scanner(System.in)
f(s.nextInt,s.nextDouble)foreach{(m:S)=>m foreach{case(k,v)=>print(s"$k "*v)};println}}

যদি কোনও অনুমোদন নেই, তবে এই প্রোগ্রামটি কোনও কিছুই মুদ্রণ করে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.