ক্ষুদ্রতম ধনাত্মক সংখ্যা, যার y তম শক্তিটি x দ্বারা বিভাজ্য


15

কার্য

প্রদত্ত পূর্ণসংখ্যা xএবং yযা উভয়ই কমপক্ষে 2, সবচেয়ে ক্ষুদ্রতম ধনাত্মক সংখ্যাটি সন্ধান করুন যার yশক্তিটি বিভাজ্যx

উদাহরণ

প্রদত্ত x=96এবং y=2, আউটপুট হওয়া উচিত 24যেহেতু 24ক্ষুদ্রতম ইতিবাচক nপরিতৃপ্ত n^2 is divisible by 96

Testcases

x  y output
26 2 26
96 2 24
32 3 4
64 9 2
27 3 3

স্কোরিং

এটি । সর্বনিম্ন বাইট-কাউন্ট জয়ের সাথে সমাধান।

তথ্যসূত্র



1
হবে Xসবসময় থেকে বেশি হতে Y?

@ ফ্যাটালাইজ যা এর সাথে কি করতে পেরেছিল?
ফাঁস নুন

এর Xচেয়ে কম এমন কোনও পরীক্ষার কেস নেই Yএবং Xসর্বদা এর চেয়ে বেশি হলে এটি কিছু উত্তরের (কমপক্ষে খনি) দৈর্ঘ্য হ্রাস করতে পারে Y। আমি বরং এটি Xবৃহত্তর বা ছোট হতে পারে চাই, তবে তারপরের জন্য একটি পরীক্ষার কেস দুর্দান্ত হবে।
মারাত্মক রূপ দিন

1
আপনার রেফারেন্সের তালিকাটি হ'ল ওইআইএস এন্ট্রি অর্ডারের হাস্যকর স্বেচ্ছাচারিতা দেখেছি illust
স্পার

উত্তর:


7

ব্র্যাচল্যাগ , 19 17 16 15 12 বাইট

2 বাইট সংরক্ষণ করেছেন @ লিক্যুনকে ধন্যবাদ।

:[I:1]*$r=#>

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

ব্যাখ্যা

               Input = [X, Y]
:[I:1]*        Get a list [X*I, Y] (I being any integer at this point)
       $r=     Get the first integer which is the Yth root of X*I
          #>   This integer must be strictly positive
               This integer is the Output


ধন্যবাদ এটি যদিও অনেক ধীর হবে।

কেন এটি ধীর হবে?
লিকি নুন


4
বিখ্যাত ফ্যাটালাইজটির উদ্ধৃতি দিতে: "জটিলতার বিষয়ে চিন্তা করবেন না"
লিকি নুন

6

জেলি , 6 বাইট

ÆE÷ĊÆẸ

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

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

ÆE÷ĊÆẸ  Main link. Arguments: x, y

ÆE      Yield the exponents of x's prime factorization.
  ÷     Divide them by y.
   Ċ    Ceil; round the quotients up to the nearest integer.
    ÆẸ  Return the integer with that exponents in its prime factorization.

1
R*%⁸i0এছাড়াও 6 বাইট।
লিকি নুন

আমি মনে করি এটি পৃথক উত্তর দেয়।
ডেনিস

6

জাভাস্ক্রিপ্ট (ES7), 32 বাইট

f=(x,y,i=1)=>i**y%x?f(x,y,i+1):i

তুমি সংজ্ঞায়িত f। আমার মনে হয় আপনার এই ফাংশনটি নির্ধারণ করা দরকার f
kamoroso94

1
@ kamoroso94 দুঃখিত, আমি চিরকাল তা করছি doing
নীল


5

পাইথন 3, 60 43 39 বাইট

সহায়তার জন্য @ লিক্যুন এবং @ এসপি 3000 কে ধন্যবাদ

f=lambda x,y,i=1:i**y%x<1or-~f(x,y,i+1)

একটি ফাংশন যা আর্গুমেন্টের মাধ্যমে ইনপুট নেয় এবং আউটপুট দেয়।

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

ফাংশনটি পুনরাবৃত্তিটি বারবার পূর্ণসংখ্যার পরীক্ষা করতে ব্যবহার করে, এটির সাথে iশুরু করে i=1, প্রয়োজনীয় শর্তটি সন্তুষ্ট হওয়া অবধি এখানে i**y%x<1পাওয়া যায়। এটি শর্তটির orযৌক্তিকতা এবং i+1বর্ধিতকরণের জন্য প্রকাশের ফলাফল গ্রহণ করে অর্জন করা হয়েছে, যা এখানে -~f(x,y,i+1)। এই অভিব্যক্তিটি ক্রমাগত মূল্যায়ন করে Falseযতক্ষণ না কোনও সন্তোষজনক মান jপাওয়া যায়, যে সময়ে এটি মূল্যায়ন করে Trueএবং পুনরাবৃত্তি থামে। যেহেতু এগুলি যথাক্রমে পাইথনের সমতুল্য 0এবং 1ফাংশনটি বারবার 1ক্রমবর্ধমান অংশের মাধ্যমে যুক্ত করা হচ্ছে তাই (j-1)*False + True + (j-1)*1 = (j-1)*0 + 1 + (j-1)*1 = 1 + j-1 = jপ্রয়োজনীয় হিসাবে ফাংশনটি ফিরে আসে ।

আইডিয়নে চেষ্টা করে দেখুন


1
def f(x,y,i=1):¶ while i**y%x:i+=1¶ print(i)
লিকি নুন

ধন্যবাদ আমি পুনরাবৃত্তি সহ এটি করার জন্য কিছুটা ছোট্ট উপায় (43 বনাম 44) ভেবেছিলাম।
দ্য বাইকিংভিকিং

2
39:f=lambda x,y,z=1:z**y%x<1or-~f(x,y,z+1)
Sp3000

@ Sp3000 আপনার ফাংশন Trueপরিবর্তে ফিরে আসে না z?
ফাঁস নুন

@LeakyNun তোমাকে মিস করছি -~অংশ, কিন্তু হ্যাঁ এটা ফিরে আসবে Trueযদি x1. ছিল
Sp3000

4

হাস্কেল, 31 বাইট

x#y=[n|n<-[1..],mod(n^y)x<1]!!0

ব্যবহারের উদাহরণ: 96#2-> 24

সরাসরি বাস্তবায়ন: সমস্ত পূর্ণসংখ্যার চেষ্টা করুন n, শর্ত পূরণ করে এমনগুলি রাখুন এবং প্রথমটি বেছে নিন।


2
এছাড়াও 31:x#y=until(\n->mod(n^y)x<1)(+1)0
xnor

4

05AB1E (10 বাইট)

>GN²m¹ÖiNq

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

  • > প্রথম যুক্তি পড়ে, এটি বৃদ্ধি করে এবং স্ট্যাকের উপরে ঠেলা দেয়
  • Gস্ট্যাকটি পপ করে ( a) এবং এমন একটি লুপ শুরু করে যা বাকি প্রোগ্রামটি রাখে যেখানে Nমানটি নেয় 1, 2, ... a - 1
  • N²mNইনপুট ইতিহাস থেকে পুশ করে এবং দ্বিতীয় এন্ট্রি দেয় , তারপরে সেগুলি উভয়কেই পপ করে এবং প্রথমটিকে দ্বিতীয়টির পাওয়ারে ঠেলে দেয়।
  • ¹ স্ট্যাকের উপর ইনপুট ইতিহাস থেকে প্রথম এন্ট্রি পুশ করে।
  • Öআগের দুটি স্ট্যাক এন্ট্রি পপ করে, তারপরে স্ট্যাকের দিকে ঠেলা দেয় a % b == 0
  • iযে স্ট্যাক থেকে পপ। যদি সত্য হয় তবে এটি প্রোগ্রামের বাকী কাজগুলি সম্পাদন করে; অন্যথায়, লুপটি অবিরত থাকে।
  • NNস্ট্যাকের উপর ধাক্কা দেয় ।
  • q প্রোগ্রামটি সমাপ্ত করে।

প্রোগ্রামটি শেষ হয়ে গেলে, স্ট্যাকের শীর্ষ মানটি মুদ্রিত হয়।


এই কোডটি আপনার ভাষার সাথে পরিচিত যারা এনটিওর জন্য কাজ করে তার একটি ব্যাখ্যা পোস্ট করুন, তবে অন্যথায় ভাল কাজ, এবং সুন্দর প্রথম পোস্ট।
রোহান ঝুনঝুনওয়ালা

সেই লিঙ্কটি আকর্ষণীয় বলে মনে হচ্ছে।
লিকি নুন

2
খুব সুন্দর প্রথম উত্তর।
Emigna

3

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

y:w^w\&X<

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

ব্যাখ্যা

y       % Take x and y implicitly. Push x again
        % STACK: x, y, x
:       % Range from 1 to x
        % STACK: x, y, [1, 2, ..., x]
w       % Swap
        % STACK: x, [1, 2, ..., x], y
^       % Power, element-wise
        % STACK: x, [1^y,  2^y, ..., x^y]
w       % Swap
        % STACK: [1^y, 2^y, ..., x^y], x
\       % Modulo, element-wise
        % STACK: [mod(1^y,x), mod(2^y,x), ..., mod(x^y,x)]
        % A 0 at the k-th entry indicates that x^y is divisible by x. The last entry
        % is guaranteed to be 0
&X<     % Arg min: get (1-based) index of the first minimum (the first zero), say n
        % STACK: n
        % Implicitly display

ম্যানিপুলেশন অনেক স্ট্যাক।
লিকি নুন

1
হাঁ। আমি সন্দেহ করি জেলি এখানে একটি বড় সুবিধা পাবে, যেহেতু এটি "কপি" এবং "অদলবদল" এড়িয়ে চলে
লুইস মেন্ডো

তোমার কি নেই find?
ফাঁস নুন

@ লেকিউন হ্যাঁ, fতবে এতে সমস্ত ননজারো সূচক পাওয়া যায়। সুতরাং এটি হতে হবে ~f1): নেগাটভে, সন্ধান, প্রথম এন্ট্রি পেতে
লুইস মেন্ডো

3

আসলে , 12 11 বাইট

লিকি নুনকে তার অনেক পরামর্শের জন্য অনেক ধন্যবাদ। গল্ফিং পরামর্শ স্বাগত জানাই। এটি অনলাইন চেষ্টা করুন!

;)R♀ⁿ♀%0@íu

আসল 12-বাইট পদ্ধতির। এটি অনলাইন চেষ্টা করুন!

1WX│1╖╜ⁿ%WX╜

অন্য 12-বাইট পদ্ধতির। এটি অনলাইন চেষ্টা করুন!

w┬i)♀/♂K@♀ⁿπ

একটি 13 বাইট পদ্ধতির। এটি অনলাইন চেষ্টা করুন!

k╗2`╜iaⁿ%Y`╓N

Ungolfing:

প্রথম অ্যালগরিদম

       Implicitly pushes y, then x.
;      Duplicate x.
)      Rotate duplicate x to bottom of the stack.
R      Range [1, x] (inclusive).
♀ⁿ     Map a**y over the range.
♀%     Map a**y%x over the range.
0@í    new_list.index(0)
u      Increment and print implicitly at the end of the program.

আসল অ্যালগরিদম

       Implicitly pushes x, then y.
1WX    Pushes a truthy value to be immediately discarded 
         (in future loops, we discard a**y%x)
|      Duplicates entire stack.
         Stack: [y x y x]
1╖     Increment register 0.
╜      Push register 0. Call it a.
ⁿ      Take a to the y-th power.
%      Take a**y mod x.
W      If a**y%x == 0, end loop.
X      Discard the modulus.
╜      Push register 0 as output.

তৃতীয় অ্যালগরিদম

       Implicitly pushes y, then x.
w      Pushes the full prime factorization of x.
┬      Transposes the factorization (separating primes from exponents)
i      Flatten (into two separate lists of primes and exponents).
)      Rotate primes to the bottom of the stack.
♀/     Map divide over the exponents.
♂K     Map ceil() over all of the divided exponents.
@      Swap primes and modified exponents.
♀ⁿ     Map each prime ** each exponent.
π      Product of that list. Print implicitly at the end of the program.

চতুর্থ অ্যালগরিদম

     Implicitly pushes x, then y.
k╗   Turns stack [x y] into a list [x, y] and saves to register 0.
2    Pushes 2.
  `    Starts function with a.
  ╜i   Pushes register 0 and flattens. Stack: [x y a]
  a    Inverts the stack. Stack: [a y x]
  ⁿ%   Gets a**y%x.
  Y    Logical negate (if a**y is divisible by x, then 1, else 0)
  `    End function.
╓    Push first (2) values where f(x) is truthy, starting with f(0).
N    As f(0) is always truthy, get the second value.
     Print implicitly at the end of the program.

@ ল্যাকইনুন আপনার বিজয়ী একটি গল্ফ পরামর্শের জন্য অপেক্ষা করছেন: ডি
শারলক 9

@ ল্যাকইনুন আপনি নিজেই পোস্ট করতে না চাইলে আমিও এই পদ্ধতিগুলি পোস্ট করতে পেরে খুশি হব।
শার্লক 9

স্মার্কের জন্য +1;)
ফাঁসী নুন

2

আর, 61 বাইট , 39 বাইট , 37 বাইট , 34 বাইট

আমি এখনও আরআর প্রোগ্রামিংয়ের একজন নবাগত এবং এটি প্রমাণিত হয়েছে যে এটি আমার প্রথম ফাংশন যা আমি আর ( ইয়ে! ) এ তৈরি করি তাই আমি বিশ্বাস করি এখনও উন্নতির অবকাশ আছে।

function(x,y){for(n in 2:x){if(n^y%%x==0){cat(x,y,n);break}}}

অনলাইন পরীক্ষা এখানে চালানো যেতে পারে: রোল অ্যাপে আরস্টুডিও


প্রধান অগ্রগতি:

function(x,y){which.max((1:x)^y%%x==0)}

which.maxকাজ করে কারণ এটি কোনও ভেক্টরে সর্বাধিক মান ফেরত দেয় এবং যদি একাধিক থাকে তবে এটি প্রথমটি ফিরিয়ে দেয়। এই ক্ষেত্রে, আমাদের কাছে অনেকগুলি ফলস (যা 0 সে) এর একটি ভেক্টর এবং কয়েকটি সত্য (যা 1 এস) থাকে তাই এটি প্রথম সত্য ফিরে আসবে।


আরেকটি অগ্রগতি:

function(x,y)which.max((1:x)^y%%x==0)

অবশেষে, এটি পাইথনকে দুটি বাইট ব্যবহার করে উত্তরটি হারাতে পারে। :)

আরেকটি অগ্রগতি: (আবার!)

function(x,y)which.min((1:x)^y%%x)

সহায়তার জন্য অ্যাক্সিম্যান এবং ব্যবহারকারী 57957401 কে অনেক ধন্যবাদ ।


আমি মনে করি আপনার পরীক্ষার লিঙ্কটি মারা গেছে।
দ্য বাইকিংভাইকিং

এটি নির্দেশ করার জন্য @ দ্য বাইকিংভিাইকিং ধন্যবাদ আমি আমার দেরিতে মধ্যাহ্নভোজের পরে এটি সম্পাদনা করব
আনাস্তাসিয়া-রোমানোভা

2
আপনি যদি ব্যবহার করেন তবে আপনি এ থেকে which.minমুক্তি পেতে পারেন ==0
মডুলাসটি

1
@ ব্যবহারকারী5957401 সম্পাদিত.বোলশো স্প্যাসিবো ...
আনাস্তাসিয়া-রোমানোভা 秀

34 বাইটের একই দৈর্ঘ্যের জন্য আপনারও একই রকম ছিল function(x,y)which(!(1:x)^y%%x)[1]
প্ল্যানাপাস

2

ডিসি, 23 22 বাইট

বাইট সংরক্ষণ করে ইনপুট পদ্ধতি সম্পর্কে তার পরামর্শের জন্য ডেলিথকে ধন্যবাদ

sysxz[zdlylx|0<F]dsFxp

স্ট্যাক গভীরতা অপারেটর ব্যবহার zস্ট্যাক সরাসরি পরীক্ষা ক্ষেত্রে বৃদ্ধিশীল জন্য, এবং মডুলার exponentiation অপারেটর |জন্য, ভাল, মডুলার exponentiation। অবশিষ্ট পরীক্ষা শূন্যের চেয়ে বড় না হওয়া পর্যন্ত পুনরাবৃত্তি পরীক্ষা করা।


1
আপনার প্রযুক্তিগতভাবে ?শুরুতে প্রয়োজন হবে না , কিছু জিনিস চালিত করার একটি স্ট্যান্ডার্ড উপায় হিসাবে > echo "x y [program]"|dc, যেখানে xএবং yপ্রশ্ন-এর সমান এবং x এবং y সাধারণভাবে স্ট্যাকের উপর ফেলে দেওয়া হবে।
বিতরণ করুন

@ ডেলিওথ আকর্ষণীয়, ধন্যবাদ! আমি সর্বদা স্রেফ -eঅপশনটি ব্যবহার করেছি, তবে আমি এখন থেকে এটি ব্যবহার করব।
জো

@ ডেলিওথ, আমার জন্য, উদ্ধৃতি ব্যবহার করে ত্রুটিগুলি আমাকে স্মরণ করিয়ে দেয় যা "বাস্তবায়িত হয় না dc, যখন উদ্ধৃতি ব্যবহার না করে অবশ্যই শেল ত্রুটি দেয়। এই সম্পর্কে কিছু করা আছে? আমি জানি stderrউপেক্ষা করা যেতে পারে, তবে এটি এখনও আমাকে বিরক্ত করে।
জো


1

পার্ল 6 ,  26  25 বাইট

{first * **$^y%%$^x,1..$x}
{first * **$^y%%$^x,1..*}

ব্যাখ্যা:

# bare block with two placeholder parameters 「$^y」 and 「$^x」
{
  # find the first value
  first

  # where when it 「*」 is taken to the power
  # of the outer blocks first parameter 「$^y」
  * ** $^y
  # is divisible by the outer blocks second parameter 「$^x」
  %% $^x,

  # out of the values from 1 to Inf
  1 .. *
}


0

ডায়ালগ এপিএল , 11 বাইট

এর অনুবাদ এই

0⍳⍨⊣|(⍳⊣)*⊢

0⍳⍨x এর ক্ষমতায় উত্থিত
⊣|যখন এক্স এর
(⍳⊣)* মাধ্যমে পূর্ণসংখ্যা এককে ভাগ করে দেয় তখন বিভাগের অবশিষ্টদের মধ্যে প্রথম শূন্যটি সন্ধান করুন
Y

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


0

পাওয়ারশেল ভি 2+, 48 বাইট

param($x,$y)(1..$x|?{!(("$_*"*$y+1|iex)%$x)})[0]

ইনপুট নেয় $xএবং $y। থেকে একটি পরিসীমা তৈরি 1করে $x, তারপরে Where-Objectএই সংখ্যাগুলিকে ফিল্টার করতে ব্যবহার করে। ফিল্টারটি স্ট্রিংটি গ্রহণ করে "$_*"(যেমন, একটি নক্ষত্রের সাথে বর্তমান সংখ্যা) এবং সেই $yসময়ের সাথে মিলিত করতে স্ট্রিং-গুণটি ব্যবহার করে , তারপরে একটি ফাইনালে ট্যাক করে1 , তারপরে পাইপগুলি iex(সংক্ষিপ্ত Invoke-Expressionএবং অনুরূপ eval)) এটি জায়গা নেয়[math]::Pow($_,$y) , যেহেতু পাওয়ারশেলের কোনও ক্ষতিকারক অপারেটর নেই এবং এটি দুটি বাইট সংক্ষিপ্ত। এটি এর মডুলো অপারেটরে খাওয়ানো হয়েছে । সুতরাং, এটি বিভাজ্য হলে, এটি এই ফিল্টার দ্বারা অন্তর্ভুক্ত করা হবে, এবং অন্যান্য সমস্ত সংখ্যা বাদ দেওয়া হবে।% সাথে$x এইভাবে, যদি বিভাজ্য, এই হবে - 0, তাই আমরা ডান বন্ধনী যে encapsulate এবং বুলিয়ান-না নিতে!(...)

পরিশেষে, আমরা পেরেনগুলিতে ফলাফলের সংখ্যাগুলি encapsulate করি (...)এবং [0]সূচি গ্রহণ করি । যেহেতু ব্যাপ্তিটি সাজানো হয়েছে1..$x তাই এটি সবচেয়ে ছোট হবে। এটি পাইপলাইনে রেখে গেছে এবং মুদ্রণ নিহিত।

পরীক্ষার মামলা

PS C:\Tools\Scripts\golfing> (26,2),(96,2),(32,3),(64,9),(27,3)|%{($_-join', ')+' -> '+(.\smallest-positive-number-divisor.ps1 $_[0] $_[1])}
26, 2 -> 26
96, 2 -> 24
32, 3 -> 4
64, 9 -> 2
27, 3 -> 3


0

পার্ল, 29 26 বাইট

-pকোড অন্তর্ভুক্ত করার জন্য (+1 নয়) এর জন্য +3 অন্তর্ভুক্ত' )

এসটিডিনে ইনপুট দিয়ে চালান

power.pl <<< "96 2"

power.pl:

#!/usr/bin/perl -p
/ /;1while++$\**$'%$`}{

0

পাইথ, 9 বাইট

AQf!%^THG

একটি প্রোগ্রাম যা [x, y]STDIN এ ফর্মের তালিকার ইনপুট নেয় এবং ফলাফল মুদ্রণ করে।

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

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

AQf!%^THG  Program. Input: Q
AQ         G=Q[0];H=Q[1]
  f        First truthy input T in [1, 2, 3, ...] with function:
     ^TH    T^H
    %   G   %G
   !        Logical not (0 -> True, all other modulus results -> False)
           Implicitly print

-1

পিএইচপি 59 বাইট

দুঃখিত, তবে আমি এটি আমার মোবাইল থেকে পরীক্ষা করতে পারি না। :)

function blahblah($x,$y){
  for($i=0;1;$i++){
    if(!$i^$y%$x){
      return $i;
    }
  }
}

Golfed

function b($x,$y){for($i=0;1;$i++){if(!$i^$y%$x)return $i;}

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