बड़ी संख्या: Ultrafactorials


25

इस सवाल को फिर से पढ़ा गया, कृपया इसे फिर से पढ़ें।

Ultrafactorials

अल्ट्राफैक्टेरियल संख्याओं का एक क्रम है जो निम्नलिखित फ़ंक्शन का उपयोग करके उत्पन्न किया जा सकता है:

a(n) = n! ^ n!

परिणामी मूल्य बहुत तेज़ी से बढ़ते हैं। साइड नोट: यह OEIS में A046882 है। संबंधित भी हाइपरफैक्टोरियल हैं, फिर भी काफी विशाल हैं, लेकिन थोड़ा छोटा अनुक्रम: A002109

आपका कार्य

आपका काम इन नंबरों को अपनी भाषा में लागू करना है। आपका कार्यक्रम 0 से लेकर समावेशी तक के सभी अल्ट्राफैक्टेरियल की राशि की गणना करेगा । n

इनपुट

आपका कार्यक्रम केवल एक इनपुट ले सकता है: एक संख्या, जो बीते समय में जोड़े जाने वाले अंतिम (एन) अल्ट्राफैक्टीरियर जैसा दिखता है। इनपुट सकारात्मक या 0 होने का आश्वासन दिया गया है।

उत्पादन

जब तक संख्याओं का दृश्य योग है, तब तक आपका आउटपुट आप तक है।

नियम

  • आप सभी पूर्णांकों को मान सकते हैं, इसलिए पूर्णांक इनपुट और पूर्णांक गणना छोरों का उपयोग करके कुछ परिणाम तैयार कर सकते हैं।

परीक्षण के मामलों

Input: -1
Output: Any kind of error (because -1! is undefined), or no handling at all

Input: 0
Output: 1

Input: 1
Output: 2

Input: 2
Output: 6

Input: 3
Output: 46662

चुनौती

यह , इसलिए बाइट्स जीत में कम से कम लंबाई के साथ जवाब!


2
क्या हमें मनमाने ढंग से बड़े पूर्णांकों पर विचार करने की आवश्यकता है? या क्या यह सबसे बड़ा संभालने के लिए पर्याप्त है कि भाषा का डिफ़ॉल्ट डेटा प्रकार (जैसे double) समर्थन करता है?
लुइस मेंडू

1
इन-कोड और आउटपुट में रूपांतरण आपके ऊपर है, हालांकि इनपुट एक पूर्णांक होगा। @LuisMendo
22

3
कई लोगों द्वारा उत्तर दिए जाने के बाद नियमों को बदलना अच्छी बात नहीं है। जब भी आप एक चुनौती प्रस्तुत करना चाहते हैं, तो कृपया सैंडबॉक्स का उपयोग करें ।
दोष

जवाबों:


7

05AB1E , 5 बाइट्स

कोड:

Ý!DmO

स्पष्टीकरण:

Ý       # Take the range [0, ..., input]
 !      # Map factorial over each element
  Dm    # Exponentiate each element to itself
    O   # Take the sum

CP-1252 का उपयोग करता है एन्कोडिंग का । इसे ऑनलाइन आज़माएं!


L!DmOयदि आप "CP-1252 एन्कोडिंग" बिट को उतारना चाहते हैं तो भी काम करता है।
मैजिक ऑक्टोपस Urn


8

जेली, 6 बाइट्स

इसे ऑनलाइन आज़माएं!

‘Ḷ!*`S // Main link: Argument n (integer)
‘      // Take n, increment by 1
 Ḷ     // Range from [0..n]
  !    // Calculates factorial for each [0..n]
   *`  // Raises each [0!..n!] to the power of itself
     S // Sum the resulting array

एक वृद्धि परमाणु है, इसलिए R!*`S‘एक बाइट बचाता है (मैं चला गया ‘Ḷ!*`S)।
जोनाथन एलन

1
आपकी टिप्पणी देखने से पहले मैं वास्तव में संपादन के बीच में था: P
Xanderhall

मैंने वह भी देखा, अच्छी नौकरी।
जोनाथन एलन

6

आर - 34 30 बाइट्स

x=factorial(0:scan());sum(x^x)

वेक्टरिंग अच्छी है

संपादित करें: @MickyT के लिए 4 बाइट्स सहेजे गए


1
आप इसे इस x=factorial(0:scan());sum(x^x)
तथ्य

4

जे, 15 12 बाइट्स

मीलों तक 3 बाइट्स बचाए!

1#.i.^~@!@,]

व्याख्या

1#.i.^~@!@,]  input: y
          ,]  append y to list...
   i.         [0, y)
        !@    factorial each member
     ^~@      raise each to itself
1#.           perform summation

परीक्षण के मामलों

   f =: 1#.i.^~@!@,]
   (,. f"0) i.4
0     1
1     2
2     6
3 46662
   (,. f"0) i.6
0           1
1           2
2           6
3       46662
4  1.33374e33
5 3.17504e249

   echo"1] _90]\":f 6x
190281878633201797429473437859705759836595323046380462211756876146775419721154680216391116
383660154937824558291984804764687140715927099993629348072943551413397410741069111169123658
220861477766905534108349401724389611558474171816216027733366046875815097164882588181826712
426524007417126023680300953790645455254723360874298622143752208989152655091222094594342956
890526202094068774356589887610542642450567071133028553816930267473112879050178461179814798
008667622200592591542432361632955904924276854403585221477449385731481108378608652069211835
448555831555820393949831627809528917004144455150642180845929102272754394116905511650997561
389917179995442329297103257850695109383021080317204810134810158543814178231002423431556657
737982683316707709406053569620116083909440177269311235173671447595521339849978144493268530
780365729831790064477684808893338190825461650933123545889305523546630119181308584140916288
912561260392366609493077363059677222110731132927863243720195975705161197786520981159422881
575250362836779593393897664990291828935858671453835924398316498051705698128484688847592380
831018330553151156822298060174230201841578757499203145955456593022852288527824268115043999
037373974753999860179933517198889966353093307592136928730661270863274130109304971274296438
682725017433937245229524959283895094220677649257613358344409711070780405579776000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000003175042373780336892901667920556557182493442088021222004926225128381629943118937129
098831435345716937405655305190657814877412786176000000000000000000000000000000000000000000
000000000000000000000000000000000000000000001333735776850284124449081472890438

1#.i.^~@!@,]कुछ और बाइट्स को हटाता है।
मील

@ मीलों ओह, मस्त। मुझे नहीं पता था कि 1#.योग करता है। यदि यह पहले से ही एक टिप नहीं है, तो आपको इसे निश्चित रूप से जोड़ना चाहिए!
कॉनर ओ'ब्रायन

4

पर्ल 6 , 41 38 37 बाइट्स

{[+] ([**] [*](1..$_)xx 2 for 0..$_)}

{[+] ([**] ([*] 1..$_)xx 2 for 0..$_)}

{sum (($_**$_ with [*] 1..$_) for 0..$_)}

( इसे ऑनलाइन आज़माएं। )

स्पष्टीकरण:

  • for 0 .. $_: प्रत्येक पूर्णांक से 0 इनपुट के लिए,
  • [*](1 .. $_) xx 2: दो बार भाज्य की गणना करें,
  • [**] ...: और दो समान फैक्टरियल को एक्सप्रैस करते हैं।
  • [+] ...: फिर लूप के सभी परिणामों का योग करें।

1 बाइट के लिए b2gills का धन्यवाद।


([*] …)[*](…)एक बाइट को बचाने के रूप में लिखा जा सकता है
ब्रैड गिल्बर्ट b2gills

3

चेडर , 44 37 बाइट्स

n->(0|>n=>(i,a=(1|>i)/(*))->a**a)/(+)

ऑपरेटर को कम करने के लिए बकरियों का धन्यवाद! मुझे लगता है कि फैक्टरियल को जोड़ना अच्छा होगा

इसे ऑनलाइन आज़माएं

Ungolfed

n -> ( 0|>n => (i, a=(1|>i) / (*)) -> a ** a) / (+)

व्याख्या

नोट: थोड़ा पुराना, ठीक कर देंगे

n ->           // Input
( 0 |> n) =>   // Run below for each of [0, n]
    (              
      i,           // Input
      a =          // Let's keep n! in this variable `a`
         (1 |> i)  // Range from [1, n]
         / (*)     // Multiply all the items of that range
                   // `/` is reduce `(*)` is multiplication function
    ) ->
    a ** a         // A to the power of A
) / (+)        // Sum all results

क्या भगवान का शुक्रिया अदा नहीं किया जाता है? : डी
दोष

@flawr ठीक है। फिक्स्ड: पी
डाउनगेट

2
हाहा, बेहतर, शायद बकरी के कुछ कानूनी उपयोगों में से एक जो हमने यहाँ आसपास देखा है :)
दोष


3

PHP, 49 बाइट्स

for($f=1;$i<=$argv[1];$f*=++$i)$s+=$f**$f;echo$s;

INFके लिए n>5एक 64 बिट सिस्टम पर।

बड़ी संख्या के लिए, 70 बाइट्स

while($i<=$argv[1])$s=gmp_add($s,gmp_pow($f=gmp_fac($i++),$f));echo$s;

PHP को संकलित करने की आवश्यकता है --with-gmp


3

माणिक, 64 66 बाइट्स

->n{(o=(1..n).map{|i|a=(1..i).inject(:*);a**a}.inject(:+))?o+1:1}

ऑफ-बाय-वन बगफिक्स के लिए दो वर्ण जोड़े गए (बाद में इंजेक्शन कॉल को छोटा करना होगा)।


मैं रूबी के साथ अच्छा नहीं हूं, लेकिन क्या आप a=(0..i)इसके बजाय इसे ठीक नहीं कर सकते a=(1..i)?
टिक्टेक

@Timtech एक गुणन में शून्य इंजेक्शन लगाने की उम्मीद किसी को भी अच्छा नहीं करता है :(
DepressedDaniel

सही है, मुझे लगता है कि जोड़ना +1सबसे अच्छा समाधान है।
टाइमटेक

@GB लागू = 0 मामले के लिए तुच्छ निर्धारण।
डिप्रेस्डडैनियल


2

हास्केल, 67 56 बाइट्स

ध्यान दें कि यह सबमिशन उन नियमों से पहले किया गया था जिन पर प्रतिबंध लगा दिया गया था।

p=product
a n=sum[p[x|x<-[p[1..i]],_<-[1..x]]|i<-[0..n]]

उदाहरण के लिए:

*Main> a 0
1
*Main> a 1
2
*Main> a 2
6
*Main> a 3
46662
*Main> a 4
1333735776850284124449081472890438
*Main> a 5
3175042373780336892901667920556557182493442088021222004926225128381629943118937129098831435345716937405655305190657814877412786176000000000000000000000000000000000000000000000000000000000000000000000000000000000000001333735776850284124449081472890438

2

पायथन 2, 73 72 बाइट्स

import math
lambda n,f=math.factorial:sum(f(i)**f(i)for i in range(n+1))


2

आर, 42 35 बाइट्स

अब जब मैंने प्रश्न को ठीक से पढ़ लिया है, तो मैंने राशि डाल दी है।

इसके लिए gmp (एकाधिक परिशुद्धता अंकगणित) पुस्तकालय की आवश्यकता होती है। इससे बड़ी संख्या को संभाला जा सकता है। अन्यथा 5 रिटर्न पर कुछ भी INF

यह एक अनाम फ़ंक्शन के रूप में कार्यान्वित किया जाता है जिससे बचने के as.characterलिए STDOUT के माध्यम से आउटपुट की आवश्यकता होगीcat

function(x)sum((i=gmp::factorialZ(0:x))^i)

उदाहरण चलाते हैं

> f <- function(x)sum((i=gmp::factorialZ(0:x))^i)
> f(5)
Big Integer ('bigz') :
[1] 3175042373780336892901667920556557182493442088021222004926225128381629943118937129098831435345716937405655305190657814877412786176000000000000000000000000000000000000000000000000000000000000000000000000000000000000001333735776850284124449081472890438
> f(6)
Big Integer ('bigz') :
[1] 190281878633201797429473437859705759836595323046380462211756876146775419721154680216391116383660154937824558291984804764687140715927099993629348072943551413397410741069111169123658220861477766905534108349401724389611558474171816216027733366046875815097164882588181826712426524007417126023680300953790645455254723360874298622143752208989152655091222094594342956890526202094068774356589887610542642450567071133028553816930267473112879050178461179814798008667622200592591542432361632955904924276854403585221477449385731481108378608652069211835448555831555820393949831627809528917004144455150642180845929102272754394116905511650997561389917179995442329297103257850695109383021080317204810134810158543814178231002423431556657737982683316707709406053569620116083909440177269311235173671447595521339849978144493268530780365729831790064477684808893338190825461650933123545889305523546630119181308584140916288912561260392366609493077363059677222110731132927863243720195975705161197786520981159422881575250362836779593393897664990291828935858671453835924398316498051705698128484688847592380831018330553151156822298060174230201841578757499203145955456593022852288527824268115043999037373974753999860179933517198889966353093307592136928730661270863274130109304971274296438682725017433937245229524959283895094220677649257613358344409711070780405579776000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003175042373780336892901667920556557182493442088021222004926225128381629943118937129098831435345716937405655305190657814877412786176000000000000000000000000000000000000000000000000000000000000000000000000000000000000001333735776850284124449081472890438

f (9) बहुत अच्छी तरह से चलेगा, लेकिन कई पृष्ठों को भरता है। कुछ सौ या तो और 2,017,528 अंक। f (10) मेरी मशीन पर सत्र को मारता है।


मुझे लगता है कि इसका कारण अन्य उत्तरों की तुलना में भिन्न है क्योंकि आप 0 से राशि वापस करने वाले हैं! ^ 0! से एन! ^ एन !. लेकिन इसमें बदलाव करके संशोधन करना आसान है factorialZ(0:x)। क्या base::factorial()फ़ंक्शन का उपयोग नहीं करने का एक विशिष्ट कारण है ?
JAD

1
@JarkoDubbeldam कैच के लिए धन्यवाद। प्रश्नों को बेहतर ढंग से पढ़ने की जरूरत है :)। मैं gmp::factorialZबड़ी संख्या को संभालने के लिए उपयोग कर रहा हूं ।
मिकटी

2

जावास्क्रिप्ट (ईएस 7), 38 बाइट्स

f=(n,a=1,i=0)=>i>n?0:a**a+f(n,a*++i,i)

@ f @n .tɪk क्षमा करें, आदत का बल।
नील

1

पाइके, 11 बाइट्स

hFSBD]1*B)s

यहाँ यह कोशिश करो!

hF          -  for i in range (0, input+1)
  SB        -     product(range(1, i+1)
    D]1*    -    [^]*^
        B   -   product(^)
          s - sum(^)

मजेदार तथ्य: पाइके में SBकेवल 2 बाइट्स होने के कारण निर्मित एक गुंबद नहीं है !


1

हास्केल, 43 बाइट्स

b n|f<-product[1..n]=f^f
a n=sum$b<$>[0..n]

प्रयोग उदाहरण: a 3-> 46662

bएक एकल ultrafactorial गणना करता है और aसभी ultrafactorials से sums करता 0है n


1

जावास्क्रिप्ट (ईएस 7), 44 बाइट्स

g=n=>n?(f=a=>a?a*f(a-1):1)(n)**f(n)+g(n-1):1

1

पायथन 2, 82 बाइट्स

x=input()
s=0
for z in range(x):
 t=1
 for i in range(z+1):t*=i+1
 s+=t**t
print s

क्या आपने सूची समझने की कोशिश की है?
रेकिंग

1
आपने केवल एक बार x का उपयोग किया है, इसलिए आप इसका उपयोग range(input())कुछ बाइट्स को निकाल देंगे
जॉर्ज

1

आश्चर्य है , 33 बाइट्स

@sum(->@^ f\prod rng1#0f)rng0+1#0

उपयोग:

(@sum(->@^ f\prod rng1#0f)rng0+1#0)3

व्याख्या

rng0+1#0

0 से इनपुट तक समावेशी रेंज बनाएँ।

->@^ f\prod rng1#0f

एक फ़ंक्शन के साथ सीमा पर नक्शा जो 1) आइटम के भाज्य की गणना करता है, 2) परिणाम को स्टोर करता है f, और 3) गणना करता है f^f

sum

योग।


1

टीआई-बेसिक, 13 बाइट्स

sum(seq(A!^A!,A,0,Ans

पुनश्च आप बदल सकते हैं sum(seq(के साथ Σ(यदि आप एक नए ऑपरेटिंग सिस्टम (कोई आकार परिवर्तन) है।


1

गेममेकर भाषा, 97 बाइट्स

मुख्य कार्य (52 बाइट्स)

for(a=0;a<=argument0;a++)b+=power(f(a),f(a))return b

समारोह (45 बाइट्स)

a=argument0 if!a return 1else return a*f(a--)

1

रूबी 2, 41 बाइट्स

->n{(1..n).reduce(s=1){|t,i|t+(s*=i)**s}}

बहुत बढ़िया! जिस तरह से इसे कम करने / इंजेक्ट करने के sलिए प्रारंभिक tमूल्य के रूप में गुजरता है, उसी तरह से बहुत चालाक ।
डिप्रेस्डडैनियल

एक और चरित्र golfed किया जा सकता करने के लिए ->n{((t=s=1)..n).map{|i|t+=(s*=i)**s};t}या->n{t=s=1;(1..n).map{|i|t+=(s*=i)**s};t}
DepressedDaniel

1

Dyalog एपीएल, 10 बाइट्स

(+/!*!)0,⍳

कैसे?

इनपुट की सीमा

0, 0 से पहले था

!*! लागू करें x! ^ x!

+/ योग


*और !स्केलर फ़ंक्शन हैं, इसलिए सरणियों का उपयोग करें: +/*⍨!0,⍳⎕या (+/!*!)0,⍳यदि आप वास्तव में एक ट्रेन चाहते हैं।
एडम जूल

0

मैथेमेटिका, 19 बाइट्स

Sum[a!^a!,{a,0,#}]&

अनाम फ़ंक्शन। एक नंबर को इनपुट के रूप में लेता है, और एक नंबर को आउटपुट के रूप में देता है।


1
हम भाज्य या प्रतिपादक बिलिन का उपयोग नहीं कर सकते।
डाउनगेट


0

कंसोल आउटपुट के साथ सी #, 79 बाइट्स

n=>{int i=1,j=1;for(;i<=n;i++)j*=i;System.Console.Write(System.Math.Pow(j,j));}

वापसी के रूप में सी #, 64 बाइट्स

n=>{int i=1,j=1;for(;i<=n;i++)j*=i;return System.Math.Pow(j,j);}

0

दरअसल 11 10 बाइट्स

1+r`!;ⁿ`MΣ

यह काम किस प्रकार करता है

Program takes implicit input, implicit print at EOF
1+          Add one to the input n+1
  r         Create a range (0,1,..,n)
   `   `    Create a function between the two `
    !       Factorialize the current stack item
     ;      Duplicate the current stack item
      ⁿ     Power a,b from the current stack item
         M  Map the function across the stack top item
          Σ Sum the stack together

0

रैकेट 54 बाइट्स

(for/sum((i(+ 1 n)))(let((t(factorial i)))(expt t t)))

Ungolfed:

#lang racket
(require math)

(define (f n)
  (for/sum ((i (+ 1 n)))
    (let ((t (factorial i)))
      (expt t t))))

परिक्षण:

(f -1)
(f 0)
(f 1)
(f 2)
(f 3)

आउटपुट:

0
1
2
6
46662
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.