একাধিক উপায়ে নিখুঁত ক্ষমতা?


13

চ্যালেঞ্জ

আপনার কাজটি এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা ইতিবাচক পূর্ণসংখ্যা N দেওয়া হয় , সমস্ত ধনাত্মক পূর্ণসংখ্যা N এর চেয়ে কম বা সমান খুঁজে পায় যা একাধিক উপায়ে নিখুঁত শক্তি হিসাবে প্রকাশ করা যায়।

সংজ্ঞা

একটি নিখুঁত শক্তি আমি এম ^ কে দ্বারা পাওয়া একটি নম্বর হিসাবে সংজ্ঞায়িত করা হয় , যেখানে:

  • মি এবং আমি ধনাত্মক পূর্ণসংখ্যা
  • মি! = কে

পরীক্ষার কেস

ইনপুট -> আউটপুট
1000 -> 16, 64, 81, 256, 512, 625, 729
56 -> 16
999 -> 16, 64, 81, 256, 512, 625, 729
81 -> 16, 64, 81
1500 -> 16, 64, 81, 256, 512, 625, 729, 1024, 1296

দয়া করে একটি পাঠযোগ্য, মন্তব্যযুক্ত সংস্করণ সরবরাহ করুন।


আপনার শেষ বাক্যটির অর্থ হ'ল হোয়াইটস্পেসে চরিত্রের গণনাটি আসে না?
sepp2k

@ sepp2k হ্যাঁ! আমাদের সাদা জায়গাগুলি গণনা করা উচিত নয়।
fR0DDY

4
@ fR0DDY ভাষার সাদা অংশ সম্পর্কে কী ? হোয়াইটস্পেস অক্ষর উপেক্ষা করা এই ভাষাটিকে সর্বদা জিতিয়ে তুলবে।
মoinনুদিন

4
আমি মনে করি না যে সাদাটে উত্তর দিয়ে জেতা যায় এমন বিজোড় প্রশ্নটি পেয়ে ব্যথা হয়। কেউ তা করতে উদ্বিগ্ন হওয়ার আগে আমরা কতক্ষণ সময় নেব তা আমরা দেখব।
gnibbler

1
এন এর কোন সীমা আছে?
ডগবার্ট

উত্তর:


3

গণিত: 103 অক্ষর

স্থানগুলি সরানো যেতে পারে

Select[Flatten@
       Table[
        Solve[Log@#/Log@b == k, k, Integers] /. k -> #, {b, 2, #}] & /@ Range@#, 
Length@# > 2 &][[All, 1, 1]] &  

ব্যবহার:

%[81]
{16, 64, 81}

3

জেলি , 11 অর্থবহ বাইট, ভাষা পোস্টডেটস চ্যালেঞ্জ

ḊḟÆR *@þ Ḋ  F  fḊ

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

এখানে সম্পূর্ণ ভিন্ন সমাধান। এটি দক্ষ ও অদক্ষের একটি কৌতূহলযুক্ত হাইব্রিড, খুব অদক্ষ র‍্যাপারে দক্ষ কোর অ্যালগরিদম ব্যবহার করে (এত বেশি পরিমাণে এটি পরিচালনা করতে পারে না)। আগের মতো, সমস্ত সাদা স্থান অর্থহীন।

এখানে কিভাবে এটা কাজ করে. (যা বেশ কয়েকবার প্রদর্শিত হয়) হ'ল 2 থেকে ইনপুট সমেত সংখ্যার একটি তালিকা:

ḊḟÆR *@þ Ḋ  F  fḊ
ḊḟÆR                Ḋ, with all primes between 2 and the input removed
                    (i.e. all composite numbers from 4 to the input)
     *@þ Ḋ          Exponentiate all Ḋ elements with all ḊḟÆR elements
            F       Flatten the result (it had a nested structure)
               fḊ   Keep only elements in Ḋ

এখানে মূল পর্যবেক্ষণটি হ'ল সংখ্যার একাধিক উপায়ে একটি নিখুঁত শক্তি, কেবলমাত্র যদি এটি কোনও সংমিশ্রণকারী (যেটি 1 নয়) এর সাথে নিখুঁত শক্তি হয়। আমরা যেখানে বেস 2 থেকে ইনপুট পর্যন্ত তাদের একটি তালিকা তৈরি করি এবং এক্সপোনেন্ট 4 থেকে ইনপুট পর্যন্ত একটি সংমিশ্রণ সংখ্যা; এটি সত্যিই ধীর কারণ এটি কিছু সত্যই বড় সংখ্যা জেনারেট করে, এগুলি সবই প্রশ্নের উত্তর। তারপরে আমরা কেবল উত্তরগুলি সীমার মধ্যে রাখি।

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


1

পার্ল: 68 টি অক্ষর

সর্বাধিক (1000) পান $Nএবং উত্তরটি ফেরত দেয় @a

for $x ( 2..$N ) {
    $c{$x**$_}++ for 2..log($N)/log$x
}
@a = grep { $c{$_} > 1 } keys %c

পুরো প্রোগ্রামের জন্য আমার আরও 18 টি অক্ষর দরকার:

$m = shift;
for $x ( 2..$m ) {
    $c{$x**$_}++ for 2..log($m)/log$x
}
print join ' ', grep { $c{$_} > 1 } keys %c

এটি ক্রমে মুদ্রণ করে না। codepad.org/H0Zyau3z
Dogbert

@ ডগবার্ট: অর্ডার মুদ্রণ করা চ্যালেঞ্জের অংশ নয়। যদি এটি হয়, আপনি sort আগে যোগ cculd grep। আমি আগে কোডেপ্যাড দেখিনি, উপায় দ্বারা। ধন্যবাদ।

0

রুবি - 101 টি অক্ষর (সাদা স্থান ছাড়াই)

f=->l{c=Hash.new{0}
2.upto(1E4){|i|2.upto(20){|j|c[i**j]+=1}}
c.map{|k,v|v>1&&k<=l&&k||p}.compact.sort}

1 <= limit <= 100,000,0005 সেকেন্ডের মধ্যে কাজ করে ।

পরীক্ষা

> f[10000]
[16, 64, 81, 256, 512, 625, 729, 1024, 1296, 2401, 4096, 6561, 10000]

0

জেলি , 13 অর্থবহ অক্ষর, ভাষা পোস্টডেটস চ্যালেঞ্জ

R  µ  ọḊ *@Ḋ ċ >2  µ  Ðf

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

এখানে সমস্ত সাদা স্থান তুচ্ছ। আমি এটি আমার উত্তরটির কাঠামোটি প্রদর্শন করতে ব্যবহার করেছি, যেমন প্রশ্ন জিজ্ঞাসা করে।

এখানে কিভাবে এটা কাজ করে:

R  µ  ọḊ *@Ḋ ċ >2  µ  Ðf
R                     Ðf    Find all numbers n from 1 to the input, such that:
   µ               µ          (grouping marks, like {} in C)
       Ḋ   Ḋ                  Take the range from 2 to n
      ọ                       Find the number of times each divides n
         *@                   Raise the range from 2 to n to these powers
             ċ                Count the number of times n appears
               >2             and the result must be greater than 2

সুতরাং উদাহরণস্বরূপ, এন = 256 পরীক্ষা করার সময়, আমরা প্রতিটি সংখ্যা 2 থেকে 256 থেকে 256 তে বিভক্ত হয়ে যায় এমন সংখ্যাটি পরীক্ষা করি once বার), 8 (যা দ্বিগুণ ভাগ করে) এবং 16 (যা দ্বিগুণ ভাগ করে)। সুতরাং যখন আমরা সেখানে নির্ধারিত শক্তিতে বিভাজনের সংখ্যা বাড়িয়ে তুলি, তখন আমরা পাই:

2⁸, 3, 4⁴, 5, 6, 7, 8², 9, 10, 11, 12, 13, 14, 15, 16², 17, ..., 255, 256

এটি 256 একটি সঠিক শক্তি হিসাবে 256 সমান সংখ্যক বারের মূল মূল্য উত্পাদন করে, এক (শেষ উপাদানটি 256 কারণ 256 = 256¹ উত্পাদন করে)। সুতরাং যদি আমরা অ্যারেতে 256 বারের চেয়ে বেশি দেখি (এবং আমরা এই ক্ষেত্রে করি; 8² 64 হয় তবে অন্যান্য "আকর্ষণীয়" উপাদানগুলি সমস্ত 256 উত্পাদন করে), এটি অবশ্যই একটি নিখুঁত শক্তি হবে।

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