N এর গড়তম কত, n এর নিকটতম প্রাইম, n এর বর্গ এবং নিকটতম ফিবোনাচি সংখ্যাটি n হয়?


13

এটি একটি গণিত সমস্যা যা বেশ কয়েকটি বিষয়কে প্রশ্নে ফেলে, বরং এটি চ্যালেঞ্জিং করে তোলে এবং আপনি যেমন অনুমান করতে পারেন এটি একটি কোড গল্ফ, সুতরাং এটি যতটা সম্ভব সংক্ষিপ্ত হওয়া উচিত।

ইনপুট , nকোন হল পূর্ণসংখ্যা নম্বর (কমপক্ষে সমর্থন পূর্ণসংখ্যার, কিন্তু প্রয়োজন সীমাবদ্ধ করা উচিত)। আউটপুট হয় গড় সংখ্যা:

  • n
  • এর বর্গাকার n
  • সবচেয়ে নিকটতম মৌলিক সংখ্যা n
  • nফিবোনাচি ক্রমের নিকটতম সংখ্যা

কিছুদিন, প্রোগ্রাম উচিত মানক আউটপুটে প্রিন্ট চ্যানেলের ফলাফলের এর (n+(n*n)+closestPrime(n)+closestFib(n))/4

আপনি না সম্ভব উপচে ইত্যাদি সাধারন ফ্লোটিং পয়েন্ট স্পষ্টতা যত্নশীল আছে এছাড়াও ঠিক আছে।

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

আপনি যখন নিকটস্থ সন্ধান করছেন তখন টাই টাই হয়, নিম্নলিখিতগুলির মধ্যে একটি চয়ন করুন:

  1. আরোহণ করা
  2. নামা
  3. এলোমেলোভাবে একটি চয়ন করুন

"নিকটতম" সংজ্ঞা দিন। বন্ধনগুলি কীভাবে ভেঙে যায়?
পিটার টেলর

@ পিটার টেইলর: এলোমেলোভাবে নীচে সরান বা একটি চয়ন করুন।
Anto

সমাধানগুলি যাচাই করতে কিছু নমুনা ইনপুট / আউটপুট দিন।
fR0DDY

আপনি যখন "অবশ্যই সীমাবদ্ধ থাকবেন না" বলবেন তখন আর কিসের সমর্থন করা উচিত? বা আপনার অর্থ কি "সীমাবদ্ধ হওয়া দরকার" না?
টিমভি

@Timwi! "দরকার নেই", দুঃখিত, এটি ঠিক করে দেবে
এন্টার

উত্তর:


10

পাইথন 160 চর

p=lambda n:any(n%x<1for x in range(2,n))
N=input()
a=0;b=1
while b<N:a,b=b,a+b
c=d=N
while p(c)and p(d):c-=1;d+=1
print (N+N*N+[b,a][2*N-a-b<0]+[c,d][p(c)])/4.0

নিকটতম ফাইব অংশ সম্পর্কে একটি সামান্য ব্যাখ্যা:

যখন লুপটি শেষ হবে তখন এন এর চেয়ে ছোট এবং খ হয় সমান বা এন এর চেয়ে বড় হবে এখন [b,a][2*N-a-b<0]অংশটি। এটিকে [খ, এ] [(না) - (বিএন)] হিসাবে দেখুন। (না) হ'ল এন এবং ক এর মধ্যে পার্থক্য এবং একইভাবে (বিএন) বি এবং এন এর মধ্যে পার্থক্য যদি এই দুটির মধ্যে পার্থক্য 0 এর চেয়ে কম হয় তবে এর অর্থ একটি এন এবং এর তদ্বিপরীত এর কাছাকাছি।


আপনি কেন এই কাজ করছে তার একটি ব্যাখ্যা যুক্ত করতে পারেন?
কুইসোটিক

@ দেবানজান নির্দিষ্ট কিছু, আপনি জানতে চান না? আমি ভেবেছিলাম সবকিছু স্ব-বর্ণনামূলক। :)
fR0DDY

নিকটতম fib অংশের সামান্য বিট [b,a][2*N-a-b<0]:)
কুইসোটিক

7

গল্ফস্ক্রিপ্ট, 59 টি অক্ষর

~:N..*.,2>{:P{(.P\%}do(!},{{N-.*}$0=}:C~[1.{.@+.N<}do]C+++4/

এই স্ক্রিপ্টটি কিছু প্রয়োজনীয়তা পূরণ করে না:

  • এটি কেবল ইনপুটগুলির জন্য সঠিকভাবে কাজ করে n >= 2, অন্যথায় এটি ক্র্যাশ হয়।
  • ফলাফলটি একটি পূর্ণসংখ্যার সাথে কাটা হয়।
  • যে কোনও পরিমিত আকারের জন্য ভয়াবহ অভিনয় n

কোডের একটি সংক্ষিপ্ত ওয়াকথ্রু:

  1. ~:N..*ইনপুটটি এন-এ সঞ্চিত রয়েছে এবং আমরা ঠিক এখনই উভয় nএবং বর্গকে ধাক্কা দিয়েছি n*n
  2. .,2>অ্যারে ফিল্টার করে আমরা প্রাইমগুলির একটি তালিকা তৈরি করব [2..n*n]। আমরা আমাদের আগের গণনাটিকে n*n(খুব খারাপ!) উপরের আবদ্ধ হিসাবে এন এর চেয়ে বড় প্রাইম সন্ধানের জন্য ব্যবহার করি।
  3. {:P{(.P\%}do(!},আমাদের আগের অ্যারে ট্রায়াল বিভাগ দ্বারা ফিল্টার করা হয়। প্রতিটি পূর্ণসংখ্যা পি প্রতিটি পূর্ণসংখ্যার [P-1..1] এর বিপরীতে পরীক্ষা করা হয়।
  4. {{N-.*}$0=}:C~পূর্ববর্তী অ্যারেটি দূরত্বের উপর ভিত্তি করে সাজায় nএবং প্রথম উপাদানটি ধরে। এখন আমাদের নিকটতম প্রধানমন্ত্রী রয়েছে।
  5. [1.{.@+.N<}do]Cযতক্ষণ না আমরা তার থেকেও বেশি কিছু পাই আমরা ফাইবোনাসিস তৈরি করি n। সৌভাগ্যক্রমে, এই অ্যালগোরিদম প্রাকৃতিকভাবে পূর্ববর্তী ফিবোন্নাসিকে ট্র্যাক করে রাখে, তাই আমরা তাদের উভয়কে একটি অ্যারেতে ফেলে দিই এবং আমাদের পূর্ববর্তী দূরত্বের ধরণটি ব্যবহার করি। এখন আমাদের কাছে নিকটতম ফিবননচি রয়েছে।
  6. +++4/গড়। নোট করুন যে গল্ফস্ক্রিপ্টের ভাসমানদের জন্য সমর্থন নেই, সুতরাং ফলাফলটি কেটে গেছে।

গল্ফস্ক্রিপ্ট, ৮১ টি অক্ষর

এখানে একটি বৈকল্পিক যা সমস্ত প্রয়োজনীয়তা পূরণ করে।

~:N..*2N*,3,|2,^{:P{(.P\%}do(!},{{N-.*}$0=}:C~[0.1{.@+.N<}do]C+++100:E*4/.E/'.'@E%

এর যথাযথ আচরণ নিশ্চিত করার জন্য n<2, আমি এড়ানো 2<(অ্যারে ছোট হলে ক্রাশ হওয়া ) এড়াতে পারি এবং পরিবর্তে ব্যবহার করি 3,|2,^। এটি নিশ্চিত করে যে প্রধান প্রার্থী অ্যারে ঠিক [2]তখন n < 2। আমি উপরের থেকে পরবর্তী প্রধানমন্ত্রী জন্য আবদ্ধ পরিবর্তিত n*nকরতে 2*n( বারট্রান্ড এর স্বীকার্য )। এছাড়াও, 0 টি একটি ফিবোনাচি সংখ্যা হিসাবে বিবেচিত হয়। ফলাফলটি শেষে পয়েন্ট গণিতে গণনা করা হয়। মজার বিষয় হল, ফলাফলটি সর্বদা চতুর্থ (0, .25, .5, .75) এর মধ্যে রয়েছে বলে মনে হয়, তাই আমি আশা করি 2 ডেসিমেল যথাযথতার জন্য যথেষ্ট।

গল্ফস্ক্রিপ্ট ব্যবহার করার ক্ষেত্রে আমার প্রথম ক্র্যাক, আমি নিশ্চিত যে উন্নতির কোনও জায়গা আছে!


7
আপনি জানেন যে, 4 দিয়ে ভাগ করার সময় এটি চতুর্থটি পাওয়া ভয়ঙ্কর অবাক হওয়ার কিছু নয় ;-)
জো

...প্রকৃতপক্ষে! +1;)
মাইক ওয়েলশ

3

জাভাস্ক্রিপ্ট, 190

function n(n)
{z=i(n)?n:0
for(x=y=n;!z;x--,y++)z=i(x)?x:i(y)?y:0
for(a=b=1;b<n;c=a+b,a=b,b=c);
return(n+n*n+(2*n-a-b<0?a:b)+z)/4}
function i(n)
{for(j=2;j<n;j++)
if(!(n%j))return 0
return 1}

[257]

function n(n)
{return(n+n*n+p(n)+f(n))/4}
function p(n)
{if(i(n))return n
for(a=b=n;;a--,b++){if(i(a))return a
if(i(b))return b}}
function i(n)
{for(j=2;j<n;j++)
if(!(n%j))return 0
return 1}
function f(n)
{for(a=b=1;b<n;c=a+b,a=b,b=c);
return 2*n-a-b<0?a:b}

uncompressed:

function closest( a, b, c )
{
  return 2*a-b-c < 0 ? b : c;
}

function closestPrime( n )
{
  a=b=n;
  if (isPrime( n ) ) return n;
  while ( true )
  {
    a-=1;
    b+=1;
    if (isPrime(a))return a;
    if (isPrime(b))return b;
  }
}

function isPrime( n )
{
  for (i=2;i<n;i++)
  {
    if ( !( n % i ) ) return false;
  }
  return true;
}

function closestFib( n )
{
  for(fib1=0,fib2=1;fib2<n;fib3=fib1+fib2,fib1=fib2,fib2=fib3);
  return closest( n, fib1, fib2 );
}

function navg(n)
{
  n2 = n*n;
  np = closestPrime( n );
  nf = closestFib( n );
  return ( n + n2 + np + nf ) / 4;
}

আপনার নিকটতম প্রধান কার্যের জন্য: আমি ভাবছি আপনি যদি a=0ইতিবাচকভাবে ন্যায়বিচার এবং বৃদ্ধি ব্যবহার করেন তবে আপনি স্থান বাঁচাতে পারবেন । এবং এর isPrimeজন্য পরীক্ষা করার পরিবর্তে , কেবলমাত্র পরীক্ষা করুন এবং । আপনি সম্ভবত এটি সমস্ত একটি ক্রেজি টেরিনারি স্টেটমেন্টে ম্যাস করতে পারেন তবে জাভাস্ক্রিপ্টের সাথে আমি ভয়ানক। abisPrime(n+a)isPrime(n-a)
মিঃ লালমা

নিম্নলিখিত চমত্কার কাজ বলে মনে হয়: function closestPrime(n,o){return isPrime(n+o)?n+o:isPrime(n-o)?n-o:closestPrime(n,o+1);}। এটিকে কল করুন closestPrime(n,0)এবং এটি নিজেই কাজ করবে। প্রয়োজন মতো ছোট করুন
মিঃ লালমা

1

গণিত, 70 69 বাইট

Sp3000 এর জন্য একটি বাইট সংরক্ষিত ধন্যবাদ (কখনও কখনও বিল্ট-ইনগুলি যাওয়ার সর্বোত্তম উপায় নয়)।

((n=#)+#^2+(f=#&@@#@Range@Max[1,2n]~Nearest~n&)@Prime+f@Fibonacci)/4&

এটি একটি নামবিহীন ফাংশন সংজ্ঞায়িত করে একটি পূর্ণসংখ্যা গ্রহণ করে এবং যথাযথ সংখ্যা হিসাবে যুক্তিসঙ্গত সংখ্যা হিসাবে উত্পাদন করে। সম্পর্কের ক্ষেত্রে, ছোট প্রধান / ফিবোনাচি নম্বর চয়ন করা হয়।

এটি বৃহত ইনপুটগুলির জন্য খুব অদক্ষ, কারণ এটি 2nনিকটতম বাছাইয়ের আগে প্রথম প্রাইমস এবং ফিবোনাচি সংখ্যা উত্পন্ন করে ।


#&@@#.. হাহ?
seequ

@ সিগ ডান থেকে শুরু: #এটি একটি শুদ্ধ ফাংশন (এর f) এর যুক্তি । এই ক্ষেত্রে এটি আসলে নিজেই একটি ফাংশন, যেহেতু fপ্রয়োগ হয় Primeএবং Fibonacci। সুতরাং #@Range@...এটি পরিসীমা প্রতিটি পূর্ণসংখ্যার প্রদত্ত ফাংশন প্রয়োগ করে। তারপরে তালিকার প্রথম উপাদানটি বের করার #&@@জন্য কেবল একটি গল্ফযুক্ত উপায় । এটি #&তালিকায় প্রয়োগ করে কাজ করে যা এটি একটি ফাংশন যা কেবল তার প্রথম যুক্তিটি ফিরিয়ে দেয়।
মার্টিন এেন্ডার

0

প্রশ্ন, 119

সবচেয়ে দক্ষ নয়।

{%[;4]x+(x*x)+((*:)a(&)b=min b:abs x-a:{x,sum -2#x}/[x-2;1 1])+(*:)d(&)e=min e:x-d:(&)1={(min x mod 2_(!)x)}each(!)x+2}

0

ম্যাটল্যাব 88 চার্স

C=@(F)(F(abs(F-n)==min(abs(F-n))));(n+n^2+C(primes(n*2))+C(round(1.618.^(1:n)/2.236)))/4

n আপনার পূর্ণসংখ্যা

অ ইন্টিজারের সাথে কাজ করে, যতদূর আমি পরীক্ষা করেছি এটি খুব বড় সংখ্যক সাথেও কাজ করে, খুব দ্রুত খুব তাড়াতাড়ি চালায়।


0

স্কেলা 299

object F extends App{type I=Int
def f(n:I,b:I=1,a:I=1):I=if(a>=n)if(a-n>n-b)b else a else f(n,a,b+a)
def p(n:I)=(2 to n-1).exists(n%_==0)
def i(n:I,v:I):Int=if(!p(n+v))n+v else i(n+v,v)
val a=readInt
println(({val p=Seq(-1,1).map(i(math.max(a,3),_))
if(a-p(0)>p(1)-a)p(1)else p(0)}+f(a)+a+a*a)/4.0)}

পরীক্ষা এবং প্রার্থনা:

a  a² nP(a) nF  ∑   /4.0 
------------------------
-2  4   2   1   5   1.25
-1  1   2   1   3   0.75
0   0   2   1   3   0.75
1   1   2   1   5   1.25
2   4   2   2   10  2.5
3   9   2   3   17  4.25
4   16  3   5   28  7.0
5   25  3   5   38  9.5

প্রশ্নটি আলোচনা করে any Integerতবে সমস্যাটি নীচের 0 টির জন্য আকর্ষণীয় নয় তবে যাইহোক - আমরা কীভাবে শুরু করব? 0 এ? 1 এ? এবং 11 পরবর্তী পরবর্তী কি? 11 নিজেই?

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

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