মান গণনা করুন


16

চ্যালেঞ্জ

একটি পূর্ণসংখ্যা দেওয়া, , ইনপুট যেখানে যেমন গুলি 1 আউটপুট মান ζ ( গুলি ) (যেখানে ζ ( এক্স ) প্রতিনিধিত্ব করে রিম্যান জিটা ফাংশনের )।ss1ζ(s)ζ(x)

আরো তথ্য

হিসাবে সংজ্ঞায়িত করা হয়:ζ(s)

ζ(s)=n=11ns

আপনার উত্তরটি 5 দশমিক স্থানে আউটপুট করা উচিত (আর নয়, কম নয়)। উত্তর আসে আউট যদি অনন্ত হতে চাইলে আমাদের অবশ্যই আউটপুট উচিত বা আপনার ভাষায় সমতুল্য।

রিমান জেটা বিল্ট-ইনগুলি অনুমোদিত, তবে সেভাবে এটি করা কম মজাদার নয়;)

উদাহরণ

আউটপুটগুলি অবশ্যই নীচের মত দেখাচ্ছে

Input -> Output
1 -> ∞ or inf etc.
2 -> 1.64493
3 -> 1.20206
4 -> 1.08232
8 -> 1.00408
19 -> 1.00000

খয়রাত

বিল্ট-ইনগুলিকে অনুমতি দেওয়ার জন্য সান্ত্বনা হিসাবে, আমি সংক্ষিপ্ত উত্তরের জন্য 100-রিপ্রেস বন্টি অফার করব যা অন্তর্নির্মিত জিতা ফাংশন ব্যবহার করে না । (সবুজ চেকমার্ক এখনও সামগ্রিকভাবে সংক্ষিপ্ত সমাধানে যাবে)

জয়লাভ

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।


7
এই চ্যালেঞ্জটির এমন সম্ভাবনা ছিল ... যতক্ষণ না আপনি বিল্টিনগুলিকে অনুমতি দেন ...
হাইপারনিউটারিনো

@ হাইপারনিউট্রিনো ইয়েপ, আমি পোস্ট করেছি কারণ আমি বিল্টইনগুলিকে অনুমোদিত চ্যালেঞ্জটি দেখেছি। এফজিআইটিডব্লিউ
ননওনিহ

2
"5 দশমিক স্থানের নির্ভুলতার জন্য" কঠোর? (অর্থাত্ কি আমরা আরও নির্ভুলতায় আউটপুট দিতে পারি?) যদি না হয় তবে পরীক্ষার কেসগুলি সত্যই 6 ডিপি প্রদর্শন করা উচিত।
জোনাথন অ্যালান

@ জোনাথন অ্যালেন আমি রাউন্ডিং স্পেসটি সাফ করে দিয়েছি
বিটা ডেক

3
@ বেটাডেকে (দীর্ঘশ্বাস ফেলুন না) একটি পাঠ্যকে কি 19 সত্যই আউটপুট দেয় 1.00000? করবে না 1বা 1.0বৈধ হতে? দেখে মনে হচ্ছে আপনি এটিকে একটি গিরগিটি চ্যালেঞ্জ হিসাবে পরিণত করেছেন।
জোনাথন অ্যালান

উত্তর:


11

গণিত, 9 7 11 বাইট

Zeta@#~N~6&

ব্যাখ্যা:

Zeta@#       (* Zeta performed on input *)
      ~N     (* Piped into the N function *)
        ~6   (* With 6 digits (5 decimals) *)
          &  (* Make into function *)

গণিতের ফলাফল

বিল্টিন ছাড়া:

গণিত, 23 ইউটিএফ -8 বাইট

Sum[1/n^#,{n,∞}]~N~6&

কেলি লোডারকে ধন্যবাদ


3
N@*Zetaদুটি বাইট সংরক্ষণ
মার্টিন ইন্ডার

@*(বামে) রচনা অপারেটর হল: f@*gএকটি ফাংশন যুক্তি এ যার মানকে উল্লেখ করে xহয় f[g[x]]
গ্রেগ মার্টিন

@ বেটাডেকে এর ফলাফল 1আউটপুট দেয় ComplexInfinityএবং এটি 5স্থানগুলিতে চারদিকে যায়। (উদাঃ 1.64493)
এখানে

@ মার্টিনএেন্ডার কীভাবে *কাজ করে?
NoOneIsHere

1
@ নন আইস আপনার উত্তরটি ব্যবহার করে N~5তবে আপনার ব্যাখ্যাটি ব্যবহার করে 6
নম্বরমানিয়াক

8

জাভাস্ক্রিপ্ট, 81 70 66 65 বাইট

s=>s-1?new Int8Array(1e6).reduce((a,b,i)=>a+i**-s).toFixed(5):1/0

চলমান উদাহরণ:

ζ=s=>s-1?new Int8Array(1e6).reduce((a,b,i)=>a+i**-s).toFixed(5):1/0

const values = [ 1, 2, 3, 4, 8, 19 ];
document.write('<pre>');
for(let s of values) {
  document.write('ζ(' + s + ') = ' + ζ(s) + '\n')
}


এটাকে জেড বলে কেন? জেটা প্রতীকটি জেএসের একটি বৈধ ফাংশনের নাম, এবং এটি আপনাকে গল্ফ করার দরকার নেই।
মনিকার লসুইটটি

প্রতিস্থাপন Array(1e6).fill()সঙ্গে [...Array(1e6)], এবং প্রথম প্রতিস্থাপন (s)সঙ্গেs
কোনোর ব্রায়েন

1
@ কিপেসট্যাক্স ভালো পয়েন্ট! ইউনিকোড ভেরিয়েবলের নাম ftw!
ফ্রেক্সস্ট্রেম

@ কনরোও ব্রায়ান হু, আমি কখনই বুঝতে পারি নি যে অ্যারে ট্রিক (আমি ভেবেছিলাম যে স্পার্স অ্যারেগুলি পুনরাবৃত্তি হয় নি তবে আমি অনুমান করি যে আমি ভুল)। ধন্যবাদ!
ফ্রেক্সস্ট্রেম

@ ফ্রাক্সস্ট্রিম নোট করুন যে two দুটি বাইট নেয়
কোকোবিয়ান

6

এপিএল (ডায়ালগ) , 22 21 বাইট

মা দেখুন, কোনও বিল্ট-ইন নেই! -1 ngn ধন্যবাদ।

যেহেতু ডায়ালগ এপিএলে কোনও ক্ষতি নেই I প্রস্তাবিত স্বরলিপি

{1=⍵:'¯'5⍕+/÷⍵*⍨⍳!9}

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

{ বেনামে ফাংশন:

1=⍵: যুক্তি যদি এক হয় তবে:

  '¯' একটি ম্যাক্রন ফিরিয়ে দিন

 আর

  !9 নয়টির ফ্যাক্টরিয়াল (362880)

   প্রথম যে অনেকগুলি পূর্ণসংখ্যা i ntegers

  ⍵*⍨ তাদের তর্কের শক্তিতে উত্থাপন করুন

  ÷ পারস্পরিক মূল্য

  +/ সমষ্টি

  5⍕ পাঁচ দশমিক সঙ্গে বিন্যাস

} [বেনামে ফাংশন শেষ]


1
1E6-> !9
ngn

আপনাকে ধন্যবাদ
অ্যাডম

5

সি, 74 70 69 বাইট

n;f(s){double z=n=0;for(;++n>0;)z+=pow(n,-s);printf("%.5f",z/=s!=1);}

সংকলন -fwrapv । একটি আউটপুট উত্পাদন করতে কিছু সময় লাগবে।

এটি এখানে কাজ দেখুন । অংশটি ++n>0প্রতিস্থাপন করা হয়েছে ++n<999999, সুতরাং আপনাকে অপেক্ষা করতে হবে না। এটি অভিন্ন কার্যকারিতা এবং আউটপুট রাখে।


নেই floatকাজ করে?
l4m2

5

টিআই-বেসিক, 16 বাইট (কোনও বিল্টইন নেই)

Fix 5:Σ(X^~Ans,X,1,99

উত্তর = 2 এর উত্তর পাওয়ার জন্য আপনাকে সত্যিকারের প্রায় 150000 পর্যন্ত যেতে হবে, যা ৮৪ প্লাস সিইতে গণনা করতে আধ ঘন্টাের বেশি সময় নেয়। এছাড়াও, আপনি উত্তর = 1, টিআই-বেসিকের অনন্ততার নিকটতম প্রতিনিধিত্বের জন্য একটি ত্রুটি পেতে কোথাও (Ans-1) ^ 0 দিয়ে গুণ করতে পারেন!
pizzapants 184

@pizzapants184 I'm fully aware that 2, 3, etc. might take more than 99 iterations. You can achieve this functionality by replacing 99 with E9 where E is the scientific E, i.e. representing 10^9. (Or obviously something smaller like E5). Understanding that E99 is generally used for positive infinity also allows for this functionality theoretically, if the upper bound of the summation was E99. Emulators can provide this much faster than a physical calculator. Thanks for your thoughts :)
Timtech

I don't think this counts as displaying infinity. It won't even throw an error if you added 1 infinitely, due to floating-point imprecision.
lirtosiast

4

C (gcc), 112 101 94 84 bytes

Thanks for the golfing tips from ceilingcat.

n;f(s){float r;for(n=98;n;r+=pow(n--,-s));printf("%.5f",r+pow(99,-s)*(.5+99./--s));}

Try it online!


1
The question has been edited. You can output language native infinity symbols.
2501

@2501 I reverted back to the previous answer, although I'm still quite a few bytes away from your solution.
cleblanc

@ceilingcat f(1) doesn't seem correct.
cleblanc



2

MATL, 21 bytes

q?'%.5f'2e5:G_^sYD}YY

Try it online!

Explanation

Input 1 is special-cased to output inf, which is how MATL displays infinity.

For inputs other than 1, summing the first 2e5 terms suffices to achieve a precision of 5 decimal places. The reason is that, from direct computation, this number of terms suffices for input 2, and for greater exponents the tail of the series is smaller.

q         % Input (implicit) minus 1
?         % If non-zero
  '%.5f'  %   Push string: format specifier
  2e5:    %   Push [1 2 ... 2e5]
  G       %   Push input again
  _       %   Negate
  ^       %   Power. element-wise
  s       %   Sum of array
  YD      %   Format string with sprintf
}         % Else
YY        %   Push infinity
          % End (implicit)
          % Display (implicit)

2

R, 54 bytes

function(a){round(ifelse(a==1,Inf,sum((1:9^6)^-a)),5)}

Finds the sum directly and formats as desired, outputs Inf if a is 1. Summing out to 9^6 appears to be enough to get five-place accuracy while still being testable; 9^9 would get better accuracy in the same length of code. I could get this shorter if R had a proper ternary operator.


1
function(a)round("if"(a-1,sum((1:9^6)^-a)),5) is a few bytes shorter.
Giuseppe

Yes, but it throws an error if a = 1. function(a)round("if"(a-1,sum((1:9^6)^-a),Inf),5) works and is still shorter than my original solution.
Michael Lugo

Oh yes of course! I forgot to include the Inf, that's what I get for typing code into the comment box directly...
Giuseppe

2

C,129 130 128 bytes

#include<math.h>
f(s,n){double r=0;for(n=1;n<999;++n)r+=(n&1?1:-1)*pow(n,-s);s-1?printf("%.5f\n",r/(1-pow(2,1-s))):puts("oo");}

it uses the following formula

\zeta(s) = \frac{1}{1-2^{1-s}}\sum\limits_{n=1}^{\infty}{\frac{(-1)^{n+1}}{n^s}}

test and results

main(){f(2,0);f(1,0);f(3,0);f(4,0);f(8,0);f(19,0);}

1.64493
+oo
1.20206
1.08232
1.00408
1.00000

Why this equation instead of Σ(1/(n^s))? It seems much more complicated...
Beta Decay

@BetaDecay because it seems to me more fast in find the result; here there is the range for sum s in 1..999, in the 'Σ(1/(n^s)) ' there is need s in the range 1..10^6
RosLuP

1
I see. FYI, simply oo is fine, you don't need to specify it as positive
Beta Decay


@ceilingcat you can write one other entry for this question... it seems I remember here without math.h header it not link...
RosLuP

2

Python 3: 67 bytes (no built-ins)

f=lambda a:"∞"if a<2else"%.5f"%sum([m**-a for m in range(1,10**6)])

Nothing fancy, only uses python 3 because of the implicit utf-8 encoding.

Try it online with test cases.




1

জেলি , 23 বাইট

ȷ6Rİ*⁸S÷Ị¬$ær5;ḷỊ?”0ẋ4¤

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

কিভাবে?

  • Sums the first million terms
  • 0কখন abs(input)<=1ফলন করা যায় তার infপরিবর্তে বিভাজন (পরিবর্তে)14.392726722864989) for 1
  • রাউন্ডটি 5 দশমিক স্থানে
  • abs(result)<=1ফর্ম্যাট করতে হলে চারটি শূন্য যুক্ত করে1.0 as 1.00000
  • ফলাফল মুদ্রণ

ȷ6Rİ*⁸S÷Ị¬$ær5;ḷỊ?”0ẋ4¤ - Main link: s
ȷ6                      - literal one million
  R                     - range: [1,2,...,1000000]
   İ                    - inverse (vectorises)
     ⁸                  - link's left argument, s
    *                   - exponentiate
      S                 - sum
          $             - last two links as a monad:
        Ị               -   insignificant? (absolute value of s less than or equal to 1?)
         ¬              -   not (0 when s=1, 1 when s>1)
       ÷                - divide (yielding inf when s=1, no effect when s>1)
           ær5          - round to 10^-5
                      ¤ - nilad followed by link(s) as a nilad:
                  ”0    -   literal '0'
                    ẋ4  -   repeated four times
                Ị?      - if insignificant (absolute value less than or equal to 1?)
              ;         -       concatenate the "0000" (which displays as "1.00000")
               ḷ        - else: left argument
                        - implicit print


0

Jelly, 26 bytes

⁵*5İH+µŒṘḣ7
⁴!Rİ*³Sǵ’ݵ’?

Don't try it online with this link! (Since this uses 16!~20 trillion terms, running on TIO produces a MemoryError)

Try it online with this link instead. (Uses 1 million terms instead. Much more manageable but takes one more byte)

Returns inf for input 1.

Explanation

⁵*5İH+µŒṘḣ7    - format the output number
⁵*5İH+         - add 0.000005
      µŒṘ      - get a string representation
         ḣ7    - trim after the fifth decimal.

⁴!Rİ*³Sǵ’ݵ’? - main link, input s
           µ’? - if input minus 1 is not 0...
⁴!R            -   [1,2,3,...,16!] provides enough terms.
   İ           -   take the inverse of each term
    *³         -   raise each term to the power of s
      S        -   sum all terms
       Ç       -   format with the above link
               - else:
        µ’İ    -   return the reciprocal of the input minus 1 (evaluates to inf)

Out of the 26, bytes, 7 are used for computation, 12 are for formatting, and 7 are for producing inf on zero. There has to be a better golf for this.


ȷ6 is a numeric literal of a million, removing the factorial workaround.
Jonathan Allan

0

MathGolf, 14 bytes (no builtins)

┴¿Å'∞{◄╒▬∩Σ░7<

লক্ষ্য করুন Tio লিঙ্কে আমি প্রতিস্থাপিত আছে জন্য , যা ধাক্কা106 পরিবর্তে 107। কারণ এখানে জমা দেওয়া সংস্করণটি সমস্ত পরীক্ষার ক্ষেত্রে সময় শেষ করে। এর ফলস্বরূপ 3 এবং 8 এর উত্তরগুলিতে 1 দশমিক স্থান বন্ধ থাকবে। তবে, ম্যাথগল্ফে বড় আকারের 1-বাইট সংখ্যাসূচক অক্ষর রয়েছে যা স্বেচ্ছাসেবী দশমিক নির্ভুলতার জন্য অনুমতি দেয়।

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

ব্যাখ্যা

┴                check if equal to 1
 ¿               if/else (uses one of the next two characters/blocks in the code)
  Å              start block of length 2
   '∞            push single character "∞"
     {           start block or arbitrary length
      ◄          push 10000000
       ╒         range(1,n+1)
        ▬        pop a, b : push(b**a)
         ∩       pop a : push 1/a (implicit map)
          Σ      sum(list), digit sum(int)
           ░     convert to string (implicit map)
            7    push 7
             <   pop(a, b), push(a<b), slicing for lists/strings

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