ভুল ধারণাযুক্ত মনমালিকাগুলি


9

এখানে একটি সমীকরণ রয়েছে, ধরে নেওয়া nএবং xইতিবাচক,

সমীকরণ

এটি দুটি মনোমালিক্যের মধ্যে সম্পর্ককে প্রকাশ করে, একটি হ'ল অন্যটির সাধারণ ভুল ব্যাখ্যা repre অনেকে এগুলির (যেমন 3x^2এবং (3x)^2) সমান করার সহজ ভুল করেন ।

চ্যালেঞ্জ

একটি ধনাত্মক পূর্ণসংখ্যা দেওয়া হয়েছে i, সমাধানটি নির্ধারণ করুন এবং ফিরে আসুন nএবং xএকটি অ্যারের হিসাবে ক্ষুদ্রতম যোগফল সহ [n, x]। টাই করার ক্ষেত্রে যে কোনও সমাধান সেট গ্রহণযোগ্য।

পরীক্ষার কেস

62658722541234765
[15, 11]

202500
[4, 15]

524288
[8, 4]

33044255768277
[13, 9]

আমরা কি [x, n]পরিবর্তে ফিরতে পারি [n, x]?

এছাড়াও, কোন সময় বাধা আছে?
শে

nএবং xপূর্ণসংখ্যার, তাই না?
লুইস মেন্ডো

আউটপুট ফর্মটিতে রয়েছে [n, x]এবং কোনও সময় বাধা নেই @ ফ্যাটালাইজ
জ্যাচ গেটস

হ্যাঁ, nএবং x@ লুইসমেন্দোগুলি পূর্ণসংখ্যায় রয়েছে
জ্যাচ গেটস

উত্তর:


5

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

,[N:X]#>>==L(.rMtT;Lr.rMtT),M^:T*?,

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

ব্যাখ্যা

আমরা একটি তালিকা তৈরি করি [N, X], যেখানে এর N >= Xপরে মান নির্ধারণের পরে, আমরা উভয় [N, X]এবং [X, N]সম্ভাব্য আউটপুট হিসাবে চেষ্টা করি । উদাহরণস্বরূপ, যদি Nনির্ধারিত পরার 3, আমরা মাধ্যমে backtracking পরীক্ষা হবে [3, 1], [1, 3], [3, 2], [2, 3], [3, 3]এবং [3, 3]। এর পরে পরবর্তী ব্যাকট্র্যাকিং পদক্ষেপটি Nযার মান 4ইত্যাদিতে চলে যাবে ইত্যাদি ঘটবে will

,[N:X]     The list [N, X]
#>         Both N and X are strictly positive
>=         N >= X
=L         Assign values to N and X, and L = [N, X]
(          Either...
    .          Output = L
    rM         M is the reverse of the Output
    tT         T is the second element of M
;          ...or...
    Lr.        Output is the reverse of L
    rM         M = L
    tT         T is the last element of M
),
M^         First element of M to the power of the second element of L (T)...
:T*?,      ... times T is equal to the Input

5

গণিত, 61 বাইট

2 বাইট সংরক্ষণের জন্য মাইলগুলি ধন্যবাদ, এবং অকারণে আমি গণনা করা বাইটগুলি পুরো গোছা!

Last@Select[{n,(#/n)^(1/n)}~Table~{n,2Log@#},IntegerQ@*Last]&

জোড়াগুলির একটি সারণি গণনা করে {n, x}, যেখানে x = (i / n) ^ (1 / এন), এন এর সমস্ত সম্ভাব্য মান ব্যবহার করে; কেবলমাত্র সেইগুলি রাখে যার জন্য সংশ্লিষ্ট x একটি পূর্ণসংখ্যা; তারপরে জোড়টিকে এন এর বৃহত্তম মান সহ প্রদান করে।

এখানে, "এন এর সমস্ত সম্ভাব্য মান 1 থেকে 2 * এলএন (i) পর্যন্ত রয়েছে। এটি সমাধানটিকে উপেক্ষা করে {n, x} = {i, 1}, তবে এটি ঠিক আছে কারণ সমাধান x n, x} = {1, i it's এটি সবচেয়ে ভাল পছন্দ হলে যথেষ্ট হবে। সুতরাং x এর জন্য কখনই 2 এর চেয়ে কম ছোট হওয়া দরকার না, যার অর্থ n * 2 ^ n ≤ i, এবং এই জাতীয় সমস্ত n 2 * ln (i) এর চেয়ে কম।

কেউ ক্যালকুলাস ব্যবহার করে দেখাতে পারেন যে এই জোড় {n, x} যা এই প্রসঙ্গে তাদের যোগফলকে হ্রাস করে {n, x largest বৃহত্তম এন সহ (not i, 1 not গণনা করছে না) as এজন্য প্রাথমিক Lastজুটিটি সর্বোত্তম জুটিটি খুঁজে পেতে যথেষ্ট ভাল।


1
আপনি IntegerQ@*Last2 বাইট সংরক্ষণের জন্য পরীক্ষার শর্তটি রচনা করতে পারেন , তবে আমি এই বর্তমান সংস্করণে not 63 নয় not 86 বাইটও গণনা করি।
মাইল

3

এমএটিএল , 22 বাইট

`T@XK:"@K@-@^*G=?3Mb~.

আউটপুট হয় x, nযাতে।

ইনপুটটি এমএটিএল এর ডিফল্ট doubleডেটা টাইপ দ্বারা সীমাবদ্ধ যা সঠিকভাবে 2^53কেবলমাত্র পূর্ণসংখ্যাকে উপস্থাপন করতে পারে । এটি প্রথম পরীক্ষা বাদ দেয় (এখনও, এটি সঠিক ফলাফল দেয়, তবে সাধারণভাবে এত বড় ইনপুটগুলির গ্যারান্টি দেওয়া যায় না)।

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

ব্যাখ্যা

কোডটিতে দুটি নেস্টেড লুপ ব্যবহার করা হয়েছে:

  • বাইরের do...whileলুপটি n+xক্রমবর্ধমান ক্রমে সমস্ত সম্ভাব্য অঙ্কের মধ্য দিয়ে যায় । সমাধানটি পাওয়া মাত্র লুপটি বন্ধ হয়ে যাবে। এটি গ্যারান্টি দেয় যে আমরা ন্যূনতম যোগফলের সাথে সমাধান আউটপুট করি।
  • অভ্যন্তরীণ for eachলুপটি সমস্ত nএবং xসেই পরিমাণের সাথে পরীক্ষা করে । যখন যোগফলটি ইনপুটটির সাথে একত্রিত হয়, তখন অভ্যন্তরীণ লুপটি বের হয় এবং বাহ্যিক লুপের লুপের শর্তটি সেট করা হয় falseযাতে কোনওটি বাইরে বেরিয়ে যায়।

মন্তব্য করা কোড:

`         % Do...while
  T       %   Push "true". Will be used as loop condition (possibly negated to exit loop)
  @       %   Push iteration index, say K, which represents n+x
  XK      %   Copy that into clipboard K
  :       %   Range [1 2 ... K]
  "       %   For each
    @     %     Push loop variable (1, 2, ... K), which represents n
    K@-   %     Compute x as K minus n
    @     %     Push n again
    ^*    %     Power, multiply. This gives n*x^n
    G=    %     Does this equal the input?
    ?     %     If so
      3M  %       Push the inputs of the third-last function, that is, x and n
      b   %       Bubble up the "true" that is at the bottom of the stack
      ~   %       Transform it into "false". This will exit the do...while loop
      .   %       Break the for loop
          %     Implicitly end if
          %   Implicitly end for
          % Implicitly end do...while
          % Implicitly display

2

জেলি , 23 16 বাইট

×*@¥/=³
ṗ2ÇÐfSÞḢ

দেওয়া হয়েছে i, এটি প্রতিস্থাপনের সাথে সমস্ত সংখ্যক জোড় জেনারেট করে [1, i]। এটি নীচে প্রদর্শিত পূর্ববর্তী সমাধানের মতো একই ফিল্টারিং এবং বাছাই করে। যেহেতু কোনও সময়সীমাবদ্ধতা নেই, তাই নিষ্ঠুর শক্তি পর্যাপ্ত সময় দিয়ে কাজ করবে।

এটি অনলাইন চেষ্টা করুন! , তবে অনলাইনে বড় মানগুলি চেষ্টা করে দেখুন না।

আমার পিসিতে i = 2048অকার্যকর সংস্করণটি ব্যবহারের জন্য ফলাফলটি গণনা করতে প্রায় 6 মিনিট সময় লাগে ।

দক্ষ সংস্করণ

এটি 23 বাইটের জন্য পূর্ববর্তী সমাধান যা বৃহত্তর মানগুলি দ্রুত সমাধান করতে সক্ষম।

×*@¥/=³
ÆDµṚ*İ⁸żḞÇÐfSÞḢ

প্রদত্ত i, যেখানে বিভাজক এবং এর iজোড়া তৈরি করার বিভাজকগুলিকে গণনা করে । তারপরে এটি এমন মানের জন্য ফিল্টার করে যেখানে বাকী জোড়াগুলি তাদের যোগফল অনুসারে বাছাই করে এবং প্রথম জোড়াটি ফিরিয়ে দেয়।[n, x]nx = floor( (i/n)^(1/n) )n * x^n == i

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন।

ব্যাখ্যা

×*@¥/=³  Helper link. Input: list [n, x]
    /    Reduce using
   ¥       A dyadic chain
 *@        Compute x^n
×          Multiply by n
      ³  The initial value i
     =   Test if n * x^n == i

ṗ2ÇÐfSÞḢ  Main link (16 byte version). Input: integer i
ṗ2        Generate all pairs of integers in [1, i]
  ÇÐf     Filter for where the helper link is true
     SÞ   Sort them by their sum
       Ḣ  Return the first result

ÆDµṚ*İ⁸żḞÇÐfSÞḢ  Main link (23 byte version). Input: integer i
ÆD               Compute the divisors of i
  µ              Begin a new monadic chain operating on the divisors
   Ṛ             Reverse the divisors
     İ           Reciprocal of each divisors
    *            Raise each in the reversed divisors to the reciprocal of a divisor
      ⁸          Get the divisors
       ż         Interleave the divisors with the previous powers
        Ḟ        Floor each
         ÇÐf     Filter for where the helper link is true
            SÞ   Sort them by their sum
              Ḣ  Return the first result

1

পিএইচপি, 104 বাইট

for(;1<$x=(($i=$argv[1])/++$n)**(1/$n);)!($x==ceil($x))?:$a[$x+$n]="[$x, $n]";ksort($a);echo$a[key($a)];

এটি প্রস্তাবিত ফর্ম্যাট not৩ বাইটে না হয়ে সমস্ত সম্ভাব্য সমাধান আউটপুট করে

for(;1<=$x=(($i=$argv[1])/++$n)**(1/$n);)!($x==ceil($x))?:print"$x,$n\n";

1

পার্ল, 52 বাইট

এর জন্য +2 অন্তর্ভুক্ত -ap

STDIN এ ইনপুট দিন

mono.pl <<< 33044255768277

mono.pl:

#!/usr/bin/perl -ap
$_=("@F"/++$.)**(1/$.)while!/\./?$\="$. $_":$_>2}{

এটি 1খুব কার্যকর করার জন্য কিছু প্রচেষ্টা নিয়েছে । আমার কোনও ধারণা নেই যদি ভাসমান পয়েন্টের ত্রুটিগুলি কিছু ইনপুটগুলির জন্য এটির ভুল উত্তর দেয় make

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