পুরো সংখ্যা শক্তি


19

কিছু সংখ্যার মতো 64একাধিক উপায়ে পুরো সংখ্যার শক্তি হিসাবে প্রকাশ করা যেতে পারে:

64 ^ 1
 8 ^ 2
 4 ^ 3
 2 ^ 6

[1,2,3,6]যতটা সম্ভব কম বাইটে এই জাতীয় সম্ভাব্য সমস্ত শক্তির (এখানে, ) সাজানো অ্যারে আউটপুট করুন ।


ইনপুট

একটি ইতিবাচক পুরো সংখ্যা যা 1 এর চেয়ে বেশি এবং 10000 এরও কম।


আউটপুট

পুরো সংখ্যা সংখ্যাগুলির একটি অ্যারে p(সহ 1) যার জন্য ইনপুট a^pপুরো সংখ্যা হিসাবে প্রকাশ করা যেতে পারে a। আউটপুটগুলি দশমিক হতে পারে, যতক্ষণ তারা ক্রমে থাকে।

যে কোনও ভাসমান পয়েন্ট ইস্যু অবশ্যই প্রোগ্রামটি দ্বারা পরিচালনা করা উচিত।


উদাহরণ

Input: 3
Output: [1]

Input: 9
Output: [1, 2]

Input: 81
Output: [1, 2, 4]

Input: 729
Output: [1, 2, 3, 6]

স্কোরবোর্ড

আপনার স্কোর বোর্ডে উপস্থিত হওয়ার জন্য, এটি এই ফর্ম্যাটে হওয়া উচিত:

# Language, Bytes

স্ট্রাইকথ্রুগুলি কোনও সমস্যার কারণ হবে না।


1
[1 2 3 6]সর্বশেষ পরীক্ষার মামলার জন্য আমার উত্তর ছাপে । এটিও মুদ্রণ করতে পারে [6 3 2 1], [1.0 2.0 3.0 6.0]বা [6.0 3.0 2.0 1.0]?
ডেনিস

2
ইনপুট মাপ এবং ভাসমান-পয়েন্ট পাটিগণিত সম্পর্কে আমরা কী ধরে নিতে পারি? আপনি যেখানে সংখ্যার শিকড় নেওয়ার চেষ্টা করছেন ফলাফলটি এটি পূর্ণ সংখ্যার সাথে সংঘটিত হয় inte
xnor

4
আমি মনে করি শিকড়গুলির উল্লেখগুলি সবাইকে বিভ্রান্ত করেছিল, তাই আমি এটিকে ক্ষমতার দিক দিয়ে আবার লিখেছি। ফিরে জিনিস নির্দ্বিধায়।
xnor

1
আমি সম্পাদনা প্রশংসা করি! পরামর্শ এবং সংশোধনগুলি সর্বদা স্বাগত, যদি তারা আমার প্রশ্নের মান উন্নত করে (যা আমি বিশ্বাস করি যে আপনি করেছেন)। আমি সম্প্রতি এই নির্দিষ্ট নেটওয়ার্কটিতে প্রশ্ন জিজ্ঞাসা শুরু করেছি এবং সম্প্রদায়টি সাধারণত স্বাগত জানায়। সমালোচনা ও সংশোধন অনেক প্রশংসিত! @ এক্সনোর
জ্যাচ গেটস

1
কেবলমাত্র বৃহত্তম বৈধ শক্তিটি সন্ধান করুন এবং তারপরে এর কারণগুলি তালিকাবদ্ধ করুন!
সুপারজেডি ২৪

উত্তর:


10

পাইথ, 10 বাইট

f}Q^RTSQSQ

প্রদর্শন

প্রতিটি পাওয়ারের জন্য, এটি সেই পাওয়ারটিতে নেওয়া ইনপুট পর্যন্ত সমস্ত সংখ্যার তালিকা তৈরি করে এবং তারপরে তালিকায় ইনপুট রয়েছে কিনা তা পরীক্ষা করে।


10

হাস্কেল, 38

f n=[b|b<-[1..n],n`elem`map(^b)[1..n]]

অনেকটাই অকপট. তালিকার বোধগম্যর মানগুলি খুঁজে পায় bযার জন্য ইনপুটটি nউপস্থিত হয় [1^b, 2^b, ..., n^b]। এটি bপরিসীমাটিতে পরীক্ষা করা যথেষ্ট [1..n]


9

পাইথন 2, 53

lambda n:[i/n for i in range(n*n)if(i%n+1)**(i/n)==n]

ব্রুট [0, n-1] এবং [1, n] এর ঘাঁটিতে ঘাঁটিগুলির সমস্ত সংযোগকে বাধ্য করে।


8

পাইথন 3, 56 বাইট

lambda n:[i for i in range(1,n)if round(n**(1/i))**i==n]

এটা আসলে আনাড়ি। প্রতিটি সম্ভাব্য- iমূলটি এটির বৃত্তাকার করে, এটির শক্তি গ্রহণ করে iএবং এটি আসলটির সাথে সমান হয় কিনা তা পরীক্ষা করে কোনও পূর্ণসংখ্যা দেয় ests

রুটটি একটি সম্পূর্ণ সংখ্যা এটি সরাসরি যাচাই করা জটিল কারণ কারণ ভাসমান পয়েন্টগুলি জিনিস দেয় 64**(1/3) == 3.9999999999999996। একটি পূর্ণসংখ্যার সাথে এটির বৃত্তাকারে আসুন বিদ্যুতটি আসল মানটিতে ফিরে আসে কিনা তা পরীক্ষা করে দেখি। এই পরামর্শ দেওয়ার জন্য ypercube ধন্যবাদ, 1 বাইট সংরক্ষণ করুন।

Feersum একটি সংক্ষিপ্ত এবং আরও চতুর সমাধান আছে । আপনার সবার সত্যই উজ্জীবিত হওয়া উচিত।


আপনি যদি চেক করেন তবে এটি সঠিক হবে না round(n**(1/i),0)**i==n?
ypercubeᵀᴹ

0রাউন্ডের জন্য ডিফল্ট নির্ভুলতা হিসাবে একসাথে @ ইপারকিউব শুভ কল, এটি একটি বাইট সংরক্ষণ করে।
xnor

7

পাইথ, 11 10 12 বাইট

fsmqQ^dTSQSQ

সমস্ত সম্ভাবনার সংমিশ্রণগুলি পরীক্ষা করে। খুব ধীর.


5

সিজেম, 23 বাইট

rimF{1=:E){E\d%!},}%:&p

এটি n এর প্রধান গুণক গ্রহণ করে এবং সমস্ত বিভক্তির বিভাজকের ছেদকে গণনা করে কাজ করে ।

এটি আমার অন্যান্য সমাধানের চেয়ে কিছুটা দীর্ঘ , তবে আমি এটি 2 থেকে 2 63 - 1 এর মধ্যে সমস্ত পূর্ণসংখ্যার জন্য কাজ করার (এবং তাত্ক্ষণিকভাবে শেষ করার) প্রত্যাশা করি ।

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

কিভাবে এটা কাজ করে

ri                       Read an integer from STDIN.
  mF                     Push its prime factorization.
    {             }%     For each [prime exponent]:
     1=:E                  Retrieve the exponent and save it in E.
         ){     },         Filter; for each I in [0 ... E]:
           E\d%              Compute E % Double(I).
                             (Casting to Double is required to divide by 0.)
               !             Push the logical NOT of the modulus.
                           Keep I if the result is truhty, i.e., if I divides E.
                    :&   Intersect all resulting arrays of integers.
                      p  Print the resulting array.

5

এপিএল, 17 বাইট

(X=⌊X←N*÷⍳N)/⍳N←⎕

আমার প্রথম এপিএল প্রোগ্রাম; গল্ফিং পরামর্শ প্রশংসা করা হয়।

              N←⎕  ⍝ Store input into N
             ⍳     ⍝ The list [1 2 ... N]
            /      ⍝ Select the elements A for which
      N*÷⍳N)       ⍝ N^(1/A)
(X=⌊X←             ⍝ equals its floor (that is, is an integer)

সিউডোকোড / ব্যাখ্যা যোগ করুন। তবে এপিএল ব্যবহারের জন্য +1 (এখনই ভোট দিতে পারবেন না) - ( এটি শীতল হওয়ার আগেই
সংশ্লেষ

এছাড়াও +1, এপিএলের প্রতি অনেক ভালবাসা। চূড়ান্ত গল্ফিং যান।

সিউডোকোডের ভিত্তিতে এটি কাজ করার সম্ভাবনা নেই (যদি এপিএল আনুমানিক ভাসমান-পয়েন্ট সমতা পরীক্ষা না করে)। উদাহরণস্বরূপ, pow(pow(7,3),1./3))আমি 6.99999999999999সি বা পাইথন পেতে । এটি কারণ 1 / এ গণনা করার সময় নির্ভুলতা হারিয়ে যায়।
শুক্রবার

@ ফেয়ারসাম আমি অফলাইন দোভাষীদের সম্পর্কে জানি না, তবে 3 টির সমস্ত শক্তি ট্রাইপল.আর.গ্রেসে সঠিকভাবে কাজ করে।
lirtosiast

@ থমাসকওয়া মনে হয় একটি আনুমানিক সমতা পরীক্ষা সত্যই ব্যবহৃত হয়েছে। ডায়ালগ.com
আপলোডস /

3

জাভাস্ক্রিপ্ট (ইএস 5), 73 বাইট 81 বাইট 79 বাইট 75 বাইট

for(n=+prompt(),p=Math.pow,i=0;i++<n;)p(.5+p(n,1/i)|0,i)==n&&console.log(i)

সম্ভাব্য মূলের নিকটতম পূর্ণসংখ্যা শক্তি সমান কিনা তা পরীক্ষা করে দেখুন n। পূর্ণসংখ্যা পরিসীমা (0 থেকে 2 ^ 31 - 1) এর মধ্যে প্রকাশের জন্য ~~(.5+...)সমান Math.round(...)

সম্পাদনা: 2 বাইট শেভ করার &&পরিবর্তে অলস যুক্তি ব্যবহার করা ifহয়েছে এবং প্রশ্নটির ব্যাখ্যা ছাড়াই ইনপুটটির জন্য প্রম্পট যুক্ত করা হয়েছে। আগে ধরে নেওয়া হয়েছিল ইনপুটটি সঞ্চিত ছিল n

সম্পাদনা 2: গ্রুপিং এড়িয়ে দুটি বাইট সংরক্ষণ ~~(.5+...)করতে পরিবর্তন করা .5+...|0হয়েছে।

সম্পাদনা 3:var 4 বাইট সংরক্ষণ করতে সরানো হয়েছে। অ-কঠোর মোডে, এটি গ্রহণযোগ্য।


জাগল এক্সপ্রেশন দিয়ে আপনি কয়েকটি দম্পতি শেভ করতে পারেন: (var p = ম্যাথ.পাউ, i = 1; i ++ <n; পি (~~ (.5 + পি (এন, 1 / i))), i) == n && কনসোল .log (ঝ));

@ আলহাদিস আপনার ইনপুটটির জন্য ধন্যবাদ, আমি কিছুটা সম্পাদনা করব
প্যাট্রিক রবার্টস

@ পেট্রিকরোবার্টস আপনি p=Math.powপ্রম্পট সাশ্রয় 1 বাইট
ডাউনগোট

@ভিহান, এটি একটি অবৈধ ঘোষণা হবে, যেহেতু varপ্রয়োজনীয়
প্যাট্রিক রবার্টস

forপরিবর্তে আপনি বোঝাতে prompt
প্যাট্রিক রবার্টস

3

ব্র্যাচল্যাগ , 8 বাইট

≥^↙.?≥ℕ≜

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

তার ইনপুট ভেরিয়েবলের মাধ্যমে ইনপুট নেয় এবং প্রতিটি আউটপুট ভেরিয়েবলের মাধ্যমে প্রতিটি পাওয়ার জেনারেট করে যেমন প্রয়োজনীয় হিসাবে আরোহণের ক্রমে, পুরানো সমাধানের বিপরীতে ≥ℕ≜^↙.?∧যা ঠিক একই দৈর্ঘ্যের সাথে ঘটে।

≥           Some number which is less than or equal to
            the input,
 ^          when raised to the power of
  ↙.        the output,
    ?       is the input.
       ≜    Label
            the output
      ℕ     as a whole number
     ≥      which is less than or equal to
    ?       the input.

আমার প্রতি দৃ exp়তা প্রমাণ করার পক্ষে কোন দৃ jus় সমর্থনযোগ্যতা নেই যে প্রতিটি অভিজাত ইনপুটের চেয়ে বড় নয়, তবে প্রোগ্রামটি আসলে বন্ধ করার জন্য এটি আবদ্ধ হওয়া দরকার।

ḋḅlᵛfপ্রদত্ত সমস্ত পরীক্ষার ক্ষেত্রে একটি দীর্ঘ সংক্ষিপ্ত (জেনারেটর না দেওয়া) সমাধান, তবে ইনপুটটি পৃথক প্রাইমগুলির কোনও পণ্যের শক্তি না হলে এটি ব্যর্থ হয়। (এটি ভাবার জন্য আসুন, যেহেতু পরীক্ষার সবগুলি কেসই প্রাইমসের ক্ষমতা, ḋlfএছাড়াও কাজ করে ...) ধারণাটি উদ্ধার করার জন্য আমি যে সেরাটি নিয়ে এসেছি ḋḅlᵐḋˢ⊇ᵛ×f, তা 10 বাইটে প্রকাশিত হয়েছে।




2

জাভাস্ক্রিপ্ট ES7, 66 বাইট

পরীক্ষামূলক অ্যারে বোঝার সুবিধা গ্রহণ করে। শুধুমাত্র ফায়ারফক্সে কাজ করে।

n=>[for(i of Array(n).keys(m=Math.pow))if(m(0|.5+m(n,1/i),i)==n)i]

সম্ভাব্য গল্ফিং আমি সম্ভবত এক্সপ্রেশনগুলিকে কিছুটা খাটো করার চেষ্টা করব এবং আশা করি দীর্ঘ Array(n).keys()বাক্য গঠনের বিকল্প খুঁজে পাব ।

আরও ছোট হতে পারে তবে জাভাস্ক্রিপ্টে ভাসমান পয়েন্টের যথার্থতা রয়েছে।


আহ, নতুন কিছু শিখলাম ... দুর্দান্ত।
প্যাট্রিক রবার্টস

2

সিজেম, 20 বাইট

ri_,1df+\1$fmL9fmO&p

ইনপুট এন এর জন্য, সমস্ত বি কম n বা তার সমান লগ বি এন এর গণনা করে এবং ফলাফলগুলি পূর্ণসংখ্যা রাখে।

এটি 2 এবং 9,999 এর মধ্যে সমস্ত পূর্ণসংখ্যার জন্য কাজ করা উচিত । রান সময় মোটামুটিভাবে O (n)

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

কিভাবে এটা কাজ করে

ri                   e# Read an integer N from STDIN.
  _,                 e# Copy N and transform it into [0 ... N-1].
    1df+             e# Add 1.0 to each, resulting in [1.0 ... Nd].
        \1$          e# Swap the array with N and copy the array.
           fmL       e# Mapped log base N: N [1.0 ... Nd] -> [log1(N) ... logN(N)]
              9fmO   e# Round each logarithm to 9 decimals.
                  &  e# Intersect this array with [1.0 ... Nd].
                   p e# Print the result.

15,625 একমাত্র ইনপুট যার উপর এটি ব্যর্থ হয় বা এটিই কেবলমাত্র আপনি পরীক্ষায় ব্যর্থ হন?
বিটা ক্ষয়

অন্যদের অবশ্যই আছে। প্রকৃতপক্ষে, আমি কেবল এটি খুঁজে পেয়েছি যে এটি 4913 তেও ব্যর্থ হয়েছে , যা আমার আগের সংশোধনটিকে অবৈধ করে তুলেছে।
ডেনিস

2

রুবি, 50

->n{(1..n).map{|i|(n**(1.0/i)+1e-9)%1>1e-8||p(i)}}

স্ক্রিনে মুদ্রণ।

রুবি, 57

->n{a=[]
(1..n).map{|i|(n**(1.0/i)+1e-9)%1>1e-8||a<<i}
a}

একটি অ্যারে প্রদান করে।

পরীক্ষার প্রোগ্রামে:

f=->n{(1..n).map{|i|(n**(1.0/i)+1e-9)%1>1e-8||puts(i)}}

g=->n{a=[]
(1..n).map{|i|(n**(1.0/i)+1e-9)%1>1e-8||a<<i}
a}

f.call(4096)
puts g.call(4096)

প্রতিটি রুট গণনা করে এবং বাকিগুলি 1e-8 এর চেয়ে কম কিনা তা দেখতে তাদের মডিউল 1 পরীক্ষা করে। সীমিত নির্ভুলতার কারণে কিছু বৈধ পূর্ণসংখ্যার শিকড় 0.9999 ফর্ম হিসাবে গণনা করা হয় .. সুতরাং তাদের সাথে 1e-9 যুক্ত করার প্রয়োজন।

N এর n তম মূল পর্যন্ত গণনা করা হয়, যা মোট ওভারকিল, তবে একটি অসীম লুপ লেখার সবচেয়ে সংক্ষিপ্ততম উপায় বলে মনে হয়েছিল।



2

ডিসি, 104 বাইট

ইনপুট টার্মিনাল থেকে নেওয়া হয়, আউটপুট মুদ্রিত হয় এবং স্ট্যাকের মধ্যেও।

কারণ এটি ব্যবহার করে? অপারেটর, আপনার ব্যবহার করতে হবে dc -e "<solution>"বা dc <file with solution in it>

কেউ কখনও আমার উত্তরগুলি দেখে না, তাদের পক্ষে একাই ভোট দিন, তবে আমি সত্যিই কেবল ডিসি-র সমস্যার সমাধান উপভোগ করি। এটি এখনও পর্যন্ত এই থ্রেডের সবচেয়ে কম দক্ষ সমাধান, তবে আমি ভেবেছিলাম যে আমি এটি যাইহোক পোস্ট করব।

1sb?sn[lesi]ss[lble1+dse^dln=sln>c]sc[liSflq1+sq]sm[Lfplq1-dsq0<p]dsp[lb1+sb0si0selcxli0!=mlbln!=h]dshxx

স্টার্টার স্টাফ

1sb           Store 1 in register b
?sn           Store user input in register n
[lesi]ss      A macro to copy the e to the i register, stored in the s register

ফলাফল লক্ষ্যের চেয়ে বড় বা লক্ষ্যের সমান না হওয়া পর্যন্ত সমস্ত ক্ষমতায় একটি বেস বাড়ানোর জন্য ম্যাক্রো

[lble1+dse^dln=sln>c]sc
[lb                 ]   load our base num (register b)
[  le               ]   load our exponent (register e)
[    1+dse          ]   add 1 to the exponent, copy and store in the e register
[         ^d        ]   raise the base to the exponent and copy it
[           ln=s    ]   load the user input, if that is equal to the power result run the macro in register s
[               ln>c]   load the user input, if it's greater than the power result run the macro in register c (this one)
[                   ]sc save this macro in register c

উপরের এক্সপোজন ম্যাক্রোগুলি থেকে অন্য স্ট্যাকের মতো পাওয়া যায় এমন বৈধ এক্সপোঞ্জার মান সংরক্ষণ করতে ম্যাক্রো

[liSflq1+sq]sm
[liSf      ]     copy the i register to the top of the stack in register f
[    lq1+sq]     add 1 to the q register
[          ]sm   save this macro in the m register

ম্যাক্রো 2 থেকে আমাদের লক্ষ্য সংখ্যায় সমস্ত ঘাঁটি দিয়ে ম্যাক্রো (ম্যাক্রো সি) এর উপরে 2x চালানোর জন্য

[lb1+sb0si0selcxli0!=mlbln!=h]dsh
[lb1+sb                      ]     add 1 to the base number
[      0si0se                ]     reset the i and e registers (previously found value and exponent
[            lcx             ]     load and run the c macro
[               li0!=m       ]     load the result of the c macro and if it's not 0, run m to save it to the f stack
[                     lbln!=h]     if our base number is not equal to our target number, run macro h (this macro)
[                            ]dsh  duplicate this macro and save one copy, so that one is left on the stack to run later

ম্যাক্রো f স্ট্যাক থেকে মান মুদ্রণ করতে

[Lfplq1-dsq0<p]dsp
[Lfp          ]      load the top value from the f register and print it
[   lq1-dsq   ]      load the q register and subtract one from it and save it
[          0<p]      if the q register is greater than 0, run macro p (this macro) again
[             ]dsp   duplicate this macro and save one copy, so that one is left on the stack to run later

xx finally run the two macros on the stack (h and then p)


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

ধন্যবাদ! উত্তরগুলি এগিয়ে যাওয়ার জন্য আমি অবশ্যই এটি ব্যবহার করব!
ফ্লেক্সএস্ট



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