তুচ্ছ শক্তি


15

অ-তুচ্ছ ক্ষমতাগুলি print 2 ^ 12 ক্রমানুসারে প্রিন্ট করতে সংক্ষিপ্ততম প্রোগ্রামটি লিখুন

তুচ্ছ বিদ্যুৎ অর্থ বেস এবং ঘনক্ষেত্র হয়> 1

শীর্ষস্থানীয় হোয়াইটস্পেস alচ্ছিক
যখন একাধিক সমাধান থাকে, ক্রমটি গুরুত্বপূর্ণ নয়, তাই

16 = 4^2, 2^4 ঠিক আছে

নমুনা আউটপুট:

      4 = 2^2
      8 = 2^3
      9 = 3^2
     16 = 2^4, 4^2
     25 = 5^2
     27 = 3^3
     32 = 2^5
     36 = 6^2
     49 = 7^2
     64 = 2^6, 4^3, 8^2
     81 = 3^4, 9^2
    100 = 10^2
    121 = 11^2
    125 = 5^3
    128 = 2^7
    144 = 12^2
    169 = 13^2
    196 = 14^2
    216 = 6^3
    225 = 15^2
    243 = 3^5
    256 = 2^8, 4^4, 16^2
    289 = 17^2
    324 = 18^2
    343 = 7^3
    361 = 19^2
    400 = 20^2
    441 = 21^2
    484 = 22^2
    512 = 2^9, 8^3
    529 = 23^2
    576 = 24^2
    625 = 5^4, 25^2
    676 = 26^2
    729 = 3^6, 9^3, 27^2
    784 = 28^2
    841 = 29^2
    900 = 30^2
    961 = 31^2
   1000 = 10^3
   1024 = 2^10, 4^5, 32^2
   1089 = 33^2
   1156 = 34^2
   1225 = 35^2
   1296 = 6^4, 36^2
   1331 = 11^3
   1369 = 37^2
   1444 = 38^2
   1521 = 39^2
   1600 = 40^2
   1681 = 41^2
   1728 = 12^3
   1764 = 42^2
   1849 = 43^2
   1936 = 44^2
   2025 = 45^2
   2048 = 2^11
   2116 = 46^2
   2187 = 3^7
   2197 = 13^3
   2209 = 47^2
   2304 = 48^2
   2401 = 7^4, 49^2
   2500 = 50^2
   2601 = 51^2
   2704 = 52^2
   2744 = 14^3
   2809 = 53^2
   2916 = 54^2
   3025 = 55^2
   3125 = 5^5
   3136 = 56^2
   3249 = 57^2
   3364 = 58^2
   3375 = 15^3
   3481 = 59^2
   3600 = 60^2
   3721 = 61^2
   3844 = 62^2
   3969 = 63^2
   4096 = 2^12, 4^6, 8^4, 16^3, 64^2

এখানে প্রচুর শক্তি হারিয়েছে; 21 ^ 3 ইত্যাদি সম্পর্কে কি? "অ-তুচ্ছ শক্তি" সম্পর্কে আপনার সংজ্ঞা কী?
হলভাবো

যদি একাধিক সমাধান থাকে তবে বামে একই সংখ্যা দিয়ে একাধিক লাইন মুদ্রণ করাও সম্ভব?
FUZxxl

@ হালভাবো, উফ আজ সকালে কফি পাননি। এখনই এটি স্থির করুন
gnibbler

@ ফুজজেক্সএল, আপনাকে একই লাইনে একাধিক সমাধান দিতে হবে, যদিও আগ্রহের জন্য দয়া করে বিকল্প সংস্করণটিও জমা দিন যদি প্রয়োজনীয়তা আপনার ভাষায় বড় পার্থক্য করে
gnibbler

+1 যখন আমি বেশি ভোট
পাই

উত্তর:


6

রুবি ১.৯, 112 111 99 টি অক্ষর

4097.times{|x|s=[]
2.upto(64){|a|2.upto(12){|b|a**b==x&&s<<[a,b]*?^}}
puts [x,s*", "]*" = "if s[0]}

এটি আমার সিস্টেমে সম্পূর্ণ হতে 0.8 সেকেন্ড সময় নেয়। একটি দ্রুত সমাধান 111 অক্ষর দীর্ঘ:

h={};(2..64).map{|a|(2..12).map{|b|a**b<4097&&(h[a**b]||=[])<<[a,b]*?^}}
puts h.sort.map{|a,b|[a,b*", "]*" = "}

7

পাইথন, 113

আর = পরিসীমা
আর-তে কে (4097):
 v = ',' .join (`i` + '^' +` j`for i in r (2,65) in j in R (2,13) ​​যদি আমি ** j == কে)
 if v: মুদ্রণ কে, '=', ভি

এটি সম্পূর্ণ হতে কয়েক সেকেন্ড সময় নেয়।
বাইরেরতম লুপটি এড়াতে একটি অভিধান ব্যবহার করে একটি দ্রুত (১৪৮ টি অক্ষর) সংস্করণ ~ 0.01 সেকেন্ডে চলে:

আর = পরিসীমা (2,65)
P = {}
আমি আর এর জন্য:
 আর এর জন্য জে:
    যদি আমি ** জ <4097: পি [আমি ** জে] = পি.জেট (আমি ** জে, []) + [`আই` + '^' +` জে]
কে, ভি ইন সাজানো (p.items ()): কে, '=', ',' .জইন (ভি)

আমি বেশ নিশ্চিত যে আউটপুট জন্য সমান চিহ্ন প্রয়োজন, যদিও কোডের আকারটি খুব বেশি পরিবর্তন করা উচিত নয়।
কেভিন ব্রাউন

উফফফফ, আমি (whচ্ছিক) অগ্রণী হোয়াইটস্পেস থেকে মুক্তি পেয়ে ঘটনাক্রমে এটিকে সরিয়েছি। ঠিক কর!
হলভাবো

4

উইন্ডোজ পাওয়ারশেল, ১০২

প্রাথমিক কোডের জন্য ভেন্টোরোর সাহায্যে।

$OFS=', '
4..4KB|%{$x=$_
if($s=2..64|%{$a=$_
2..12|?{[math]::pow($a,$_)-eq$x}|%{"$a^$_"}}){"$x = $s"}}

4

ইন্টারেক্টিভ জে, 118 101 98

3 :0"0 i.4097
if.#l=.":2j2+63(<.@%~j.|)I.y=,^/~2+i.63
do.echo(":y),' = ',l rplc j`^,' ';', 'end.
)

(সর্বশেষ নিউলাইন অপ্রয়োজনীয়)

উপস্থাপনাটির জন্য এখনও প্রচুর কোড ...

নোট: তত্ত্ব পরিবর্তন 63এবং 63করতে yএবং y2 আরও বেশি বাইট সংরক্ষণ কিন্তু যে সংস্করণ মেমরি চরম পরিমাণ ব্যবহার করে।

র্যান্ডম্রা সম্পাদিত।


[স্পেস] জ [ব্যাকটিক] Using, ''; ',' ব্যবহার 'j';'^';' ';', 'করে 3 বাইটের পরিবর্তে সঞ্চয় করা হবে । (এটির ফর্ম্যাট করা ছেড়ে দেওয়া ...)
এলোমেলো

@randomra আপনি সম্পাদনার অধিকার পেয়েছেন; এগিয়ে যান দয়া করে! (আমার বর্তমান সেটআপটি যাচাই করতে আমি জে সহ একটি বাক্স খুঁজে পাচ্ছি না, এবং আমি তাড়াতাড়ি এক ধরণের আছি)। এটি জে প্রদর্শনীর সেরা করে তোলে, এটি প্রদর্শন না করা দুঃখের বিষয় হবে! :-)
জেবি

3

বাশ, ১৩৮ টি চর

i=2;j=1
f(){((v>4096))&&((j=1,++i))
a[$v]+="$i^$j, "
((v=i**++j,i<65))&&f
}
f
f(){
echo $j = ${a[$j]}
((j++<v))&&f
}
f|sed '/=$/d;s/.$//'

সম্পাদনাগুলি

  • (169: 155) 2 forএকটি জন্য while
  • (155: 148) যোগ করুন+=
  • (148: 147) এর সাথে আউটপুট while, পুনরায় ব্যবহার করা হচ্ছে
  • (147: 142) খালি লাইনগুলি সরাতে সেড ব্যবহার করুন
  • (142: 137) করা vমধ্যে (())4096 (শেষ মান) জন্য, ব্যবহার বনাম
  • (137: 134) সেড উদ্ধৃতিগুলি সরান, (())এক্সপ্রেশনগুলিতে যোগ দিন
  • (134: 132) পুনরাবৃত্তি ফাংশন সঙ্গে লুপ প্রতিস্থাপন
  • (132: 142) কমা ভুলে গেছেন ,:(
  • (142: 138) আপডেটগুলি ক্লান্ত: পি

2

পিএইচপি, 138 টি অক্ষর - আউটপুট

<?for($b=1;++$b<65;)for($e=1;++$e<13;)if(4097>$f=pow($b,$e))$p[$f][]="$b^$e";ksort($p);foreach($p as$n=>$c)echo"$n = ".join($c,", ")."\n";

Ungolfed

<?php

// Array of combinations

$powers = array();

// Loop through every base from 2 to 64, as 64 is the highest you can go

for($base = 2; $base < 65; $base++){

    // Loop through all powers from 2 to 12, as 12 is the maximum

    for($power = 2; $power < 13; $power++){

        // Calculate the power

        $end = pow($base, $power);

        // Kill the loop if the result is too high

        if($end > 4096){
            break;
        }

        // Add the combination if the result is within limits

        $powers[$end][] = $base."^".$power;
    }
}

// Sort the powers by the total amount

ksort($powers);

// Output the powers in the correct format

foreach($powers as $number => $combinations){
    echo $number." = ".implode($combinations, ", ")."\n";
}


2

গণিত, 152 বাইট

Print/@Cases[Range@4096,n_/;(2<=##&&##==##&)@@(f=#2&@@@FactorInteger@#&)@n:>{n,Row[{n^(1/#),#}~Row~"^"&/@Reverse@Rest@Divisors@#,", "]&@@f@n}~Row~" = "]

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


1

সি (589 বাইট)

int pow(int a,int b){
   int res = 1;
   while(b>0){
    while(b%2 == 0){
        a *= a; b/=2;
    }
    b--;
    res = res*a;
}
return res;
}
char s[99],t[9];

int main(){
   int N,T,a,i,f,e,n;
  for(n = 2; n <= 1<<12; n++){
      strcpy(s,"");
      T = N = n;
      f = 0;
      int sqt = sqrt(N)+1;
      for(i = 2; i <= sqt; i++){
         for(e=0;0==N%i;e++,N/=i);
           for(a = i; e > 1;e = e%2?(e+1)/2:e/2)
              for(a=i;a<T;pow(a,e)==T?f++?0:printf("%d =",T),sprintf(t,", %d^%d",a,e),strcat(s,t):0,a*=i);
    }
    f?puts(s+1):0;
   }
   return 0;
 }

আমি গল্ফও করি নি এই পদ্ধতিরটি সর্বোত্তম নয় তবে আইডোনে সঠিক 0 টি উত্পাদন করতে এখনও যথেষ্ট দ্রুত ।


1

ওসিএএমএল + ব্যাটারি, 220 206 158 156 টি অক্ষর

সেরা রান করা সমাধানগুলি থেকে একটি ইঙ্গিত নেওয়া:

Printf.(iter(fun x->match
String.join", "[?List:sprintf"%d^%d"b e|b<-2--64;e<-2--12;float
x=float b**float e?]with""->()|s->printf"%5d = %s\n"x s)(4--4096))

(লাইনগুলিকে সংক্ষিপ্ত রাখার জন্য তাৎপর্যপূর্ণ শ্বেত স্পেসে রেখার সমাপ্তি)) একটি দ্রুত কিন্তু দীর্ঘতর সংস্করণ যা পরীক্ষার পরিবর্তে শক্তি উত্পন্ন করে:

Printf.(List.(iter(fun l->printf"%5d = %s\n"(fst(hd l))(String.join", "(map
snd l)))(group(fun(x,_)(y,_)->x-y)[?List:truncate p,sprintf"%d^%d"b
e|b<-2--64;e<-2--12;p<-List:[float b**float e];p<=4096.?])))

1

হাস্কেল, 146 টি অক্ষর

c[a]=a
c(a:z)=a++", "++c z
n#[]=""
n#s=shows n$" = "++c s++"\n"
main=putStr$(\n->n#[shows x$'^':show y|x<-[2..64],y<-[2..12],x^y==n])=<<[4..4096]

1

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

o={}
i=2
s=''
n=4097
for(k=4;k<n;k=++i*i)for(j=2;k<n;k*=i)
{a=i+'^'+j
if(o[k])o[k]+=', '+a
else o[k]=a
j++}for(i=0;i<n;i++)if(o[i])s+='\n'+i+' = '+o[i]
alert(s)

194

o={},i=2,s='',n=4096
for(k=4;k<=n;k=i*i){for(j=2;k<=n;k*=i){o[k]=o[k]||[]
o[k].push(i+'^'+j)
j++}i++}
for(i=0;i<n;i++){if(o[i]){s+='\n'+i+' = '
for(j in o[i])s+=(j==0?'':', ')+o[i][j]}}
alert(s)

2
ফিরে ঘূর্ণিত; মন্তব্য হিসাবে গল্ফিং পরামর্শ পোস্ট করুন, সম্পাদনা নয়।
lirtosiast

1

পাইথ, 39 বাইট

jm++^Fhd" = "j", "jL\^d<.g^Fk^tS64 2 81

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

jm++^Fhd" = "j", "jL\^d<.g^Fk^tS64 2 81
                               S64       [1-64]
                              t          Discard first element
                             ^     2     Cartesian product of the above with itself
                        .g               Group the pairs, as k, using:
                          ^Fk              [a,b] -> a^b
                       <             81  Take the first 81 results of the above (those where exponential <= 4096)
 m                                       Map the remaining groups, as d, using:
                  jL\^d                    Join each pair in d on "^"
             j", "                         Join on ", "
  +     " = "                              Prepend " = "
   +^Fhd                                   Prepend the result of the exponent of one of the pairs
j                                        Join the result of the above on newlines, implicit print

আউটপুট ফরম্যাট স্পেস প্রয়োজনীয়তার মুছে ফেলার জন্য নমনীয় যথেষ্ট হয়, তাহলে -5 প্রতিস্থাপন বাইট " = "সঙ্গে \=এবং ", "সঙ্গে\,


0

হাস্কেল, 131

p[]=return()
p((x,y,z):s)=do print$show x++" = "++show y++"^"++show z;p s
main=p [(x,y,z)|x<-[2..2^12],y<-[2..x],z<-[2..x],x==y^z]

একই মান রয়েছে এমন শক্তিগুলির একই লাইনে থাকার কথা
MtnViewMark

0

জাভাস্ক্রিপ্ট, 148 অক্ষর

s=''
for(i=2;i<4097;i++){q=''
for(a=2;a<65;a++)for(b=2;b<13;b++)if(Math.pow(a,b)==i)q+=a+'^'+b+', '
if(q)s+=i+' = '+q.slice(0,-2)+"\n"}alert(s)

0

সি 184

যে কোনও সি সংকলক সহ সংকেত (সতর্কতা সহ) করা উচিত

char*l[5000],*t=l+4100,*u;
main(b,e,r) 
{
  for(;++b<65;)
    for(e=2,r=b;(r*=b)<4100;l[r]=u)
      t+=1+sprintf(u=t,"%s, %d^%d",l[r]?l[r]:"",b,e++);
  for(r=1;++r<4097;)
    l[r]&&printf("%d =%s\n",r,l[r]+1);
}

0

পাইথ, 55 টি অক্ষর

=Tr2 64V^2 12JYFZTFbTIqN^ZbaJj\^[Zb))))IJjk[Nd\=dj", "J

আমার প্রথমবার পাইথ ব্যবহার করে, তাই এটি সম্ভবত উন্নতি করা যেতে পারে। এটি একটি নিষ্ঠুর শক্তি যা ^৪ ^ to৪ পর্যন্ত যাচাই করে, সুতরাং এটি বেশ ধীর। আপনি কেবলমাত্র ^৪ to 12 পর্যন্ত পরীক্ষা করে সময় সাশ্রয় করতে পারেন তবে এটিতে বাইট লাগবে।


0

জাভাস্ক্রিপ্ট (ES6) 134 127

সম্পাদনা সংশোধিত, বাগফিক্সড এবং সংক্ষিপ্ত সম্পাদনা 2 কিছু গবেষণার পরে, আমি বুঝতে পারি যে উত্তরটি কালানুক্রমিক কারণে অবৈধ। প্রশ্ন arrow functionsবছরের পর বছর ধরে।

যা যা বলেছিল, অন্যান্য জেএস উত্তরগুলি খুব জটিল

/* for TEST:redefine console.log */ console.log=x=>O.innerHTML+=x+'\n';

for(l=[],b=1;++b<65;)for(e=2,r=b;(r*=b)<4197;)(l[r]=l[r]||[]).push(b+'^'+e++);l.some(function(v,i){console.log(i+' = '+v.join(', '))})
<pre id=O></pre>


যদি আপনি '=' ফর্ম্যাটিং সম্পর্কে খুব বেশি যত্ন না পান, তবে আপনি 121 বাইট হ্রাস করতে পারেন: (ই = 2, আর = বি) জন্য (l = [], বি = 1; ++ বি <65;) ; (দ * = খ) <4197;) (ঠ [R] = ঠ [R] || []) ধাক্কা (b + '^' + E ++,);। l.map ((V, ঝ) => কনসোল। লগ (i + '=' + v.join`, `))
মামা ফান রোল

@ মোলারম্যানফুল ফর্ম্যাটিং সম্পর্কে কঠোর প্রয়োজনীয়তা রয়েছে
edc65

ওহ ভাল ... অন্তত v.join অংশ পরিবর্তন করুন। এটি কমপক্ষে বাইট গণনাটি 123 এ নামিয়ে আনতে পারে
মামা ফান রোল

@ মোলারম্যানফুল সময়ে এই চ্যালেঞ্জটি (এবং এই উত্তর!) পোস্ট করা হয়েছিল, কোনও ব্রাউজারে টেমপ্লেট স্ট্রিং প্রয়োগ করা হয়নি: ফায়ারফক্স হ'ল প্রথম - rel 34, ডিসেম্বর প্রথম 2014 - তারপরে ক্রোম, মার্চ 2015. আপনি উপলভ্য এমন বৈশিষ্ট্যটি ব্যবহার করতে পারবেন না প্রশ্নের 3 বছর পরে
edc65

ওহ ভাল ... আমি এটা জানতাম না। আমি মাত্র এক সপ্তাহ আগে ইএস 6 এ intoুকেছি!
মামা ফান রোল

0

05 এ বি 1 ই , 36 বাইট

2žxŸãΣ`m}99£.γ`m}εн`m'=yε'^ý}„, ý)}»

কিছুটা ভিন্ন পদ্ধতির ব্যবহার করে এটিকে কিছুটা উন্নত করা যায় বলে আমার অনুভূতি রয়েছে ..

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

ব্যাখ্যা:

2žxŸ           # Create a list in the range [2,64]
    ã          # Create each possible pair by taking the cartesian product with itself
Σ`m}           # Sort these `a,b`-pairs by their result of `a ** b`
    99£        # Only leave the first 99 pairs
       .γ`m}   # And then group the `a,b`-pairs by their result of `a ** b`
ε              # Now map each list of pairs `y` to:
 н             #  Take the first pair of list `y`
  `m           #  Take the `a ** b` value
 '=           '#  Push character "=" to the stack
 yε            #  Inner map over the pairs of list `y`:
   '^ý        '#   Join each pair with a "^" delimiter
      }„, ý    #  After the inner map: join these strings with a ", " delimiter
 )             #  Wrap all values on the stack into a list
             # After the outer map: join every inner list by spaces,
               # and the outer list by newlines (and output the result implicitly)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.