सबसे छोटी धनात्मक संख्या जिसकी y-th शक्ति x से विभाज्य है


15

कार्य

पूर्णांकों को देखते हुए xऔर yजो दोनों कम से कम हैं 2, सबसे छोटी धनात्मक संख्या yज्ञात करते हैं, जिनकी -शक्ति द्वारा विभाज्य हैx

उदाहरण

दिया x=96और y=2, उत्पादन होना चाहिए 24क्योंकि 24सबसे छोटा सकारात्मक nसंतोषजनक है n^2 is divisible by 96

परीक्षण के मामलों

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
आपकी संदर्भ सूची सबसे अच्छा चित्रण है जिसे मैंने OEIS प्रविष्टि आदेश की हास्यास्पद मनमानी के रूप में देखा है।
शुक्राणु

जवाबों:


7

ब्रेकीलॉग , 19 17 16 15 12 बाइट्स

2 बाइट्स @LeakyNun की बदौलत बच गए।

:[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


@LeakyNun धन्यवाद। यह हालांकि बहुत धीमी होगी।
घातक

यह धीमा क्यों होगा?
लीक नून


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*%⁸i06 बाइट्स भी है।
लीक

मुझे लगता है कि एक अलग जवाब वारंट।
डेनिस

6

जावास्क्रिप्ट (ईएस 7), 32 बाइट्स

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

आपने कभी परिभाषित नहीं किया f। मुझे लगता है कि आपको फ़ंक्शन को असाइन करने की आवश्यकता है f
kamoroso94

1
@ kamoroso94 क्षमा करें, मैं हमेशा ऐसा कर रहा हूं।
नील

5

जेली , 6 बाइट्स

R*%⁸i0

इसे ऑनलाइन आज़माएं! या सभी परीक्षण मामलों को सत्यापित करें

यह काम किस प्रकार करता है

R*%⁸i0  Main link. Arguments: x, y

R       Yield range from 1 to x inclusive.
 *      Raise each to power y.
  %⁸    Take modulo of each with base x.
    i0  Find the 1-based index of the first
        occurence of zero, returns.

5

पायथन 3, 60 43 39 बाइट्स

मदद के लिए @LeakyNun और @ Sp3000 को धन्यवाद

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 आवश्यक रूप से है।

Ideone पर इसे आज़माएं


1
def f(x,y,i=1):¶ while i**y%x:i+=1¶ print(i)
लीक नन

@LeakyNun धन्यवाद। मैंने इसे पुनरावृत्ति के साथ (43 बनाम 44) करने के लिए थोड़ा कम तरीका सोचा।
TheBikingViking

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

@ Sp3000 के Trueबजाय आपका फ़ंक्शन वापस नहीं आता है z?
लीक

@ लीक आप -~हिस्सा याद कर रहे हैं , लेकिन हाँ 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
बहुत अच्छा पहला जवाब।
एमिग्ना

3

MATL , 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?
लीकी नून

@LeakyNun हां, 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.

@LeakyNun आपके एक जीतने वाले गोल्फ सुझाव की प्रतीक्षा कर रहा है: D
शर्लक 9

@LeakyNun मुझे उन दृष्टिकोणों को पोस्ट करने में खुशी होगी, जब तक कि आप उन्हें स्वयं पोस्ट नहीं करना चाहते।
शर्लक 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काम करता है क्योंकि यह एक सदिश में सबसे अधिक मूल्य देता है और यदि कई हैं तो यह पहले लौटेगा। इस मामले में, हमारे पास कई FALSEs (जो कि 0s हैं) और कुछ TRUE (जो 1s हैं) का वेक्टर है, इसलिए यह पहला TRUE लौटाएगा।


एक और प्रगति:

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

अंत में, यह दो बाइट्स द्वारा पायथन का उपयोग करके उत्तर को हरा देता है। :)

एक और प्रगति: (फिर से!)

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

करने के लिए बहुत-बहुत धन्यवाद Axeman और user5957401 मदद के लिए।


मुझे लगता है कि आपका परीक्षण लिंक मृत है।
TheBikingViking

@ TheBikingViking कि बाहर इशारा करने के लिए धन्यवाद। मैं अपने देर से दोपहर के भोजन के बाद इसे संपादित करूँगा
अनास्तासिया-रोमानोवा '

2
यदि आप उपयोग करते हैं which.min, तो आप छुटकारा पा सकते हैं ==0। मापांक एक संख्या लौटाएगा, जो
0.31

1
@ user5957401 संपादित। बोल्शोई स्पैसिबो ...
अनास्तासिया-

34 बाइट्स की समान लंबाई के लिए भी आपके पास समान था function(x,y)which(!(1:x)^y%%x)[1]
प्लेनैपस

2

डीसी, 23 22 बाइट्स

एक बाइट को बचाने के लिए इनपुट विधियों के बारे में उनकी टिप के लिए डेलीथ को धन्यवाद

sysxz[zdlylx|0<F]dsFxp

स्टैक zपर सीधे परीक्षण के मामले को बढ़ाने के लिए स्टैक डेप्थ ऑपरेटर का उपयोग करता है , और |अच्छी तरह से मॉड्यूलर एक्सपेंनेरेशन के लिए मॉड्यूलर एक्सपेंनेशन ऑपरेटर । शेष जब तक परीक्षण शून्य से अधिक नहीं है।


1
आपको तकनीकी ?रूप से शुरुआत में ज़रूरत नहीं है > echo "x y [program]"|dc, कुछ चीजों को लागू करने के लिए एक मानक तरीके के रूप में , जहां xऔर yजैसे ही हैं प्रश्न- x और y सामान्य रूप में स्टैक पर गिरा दिए जाएंगे।
21

@ डेलियोथ दिलचस्प, धन्यवाद! मैंने हमेशा सिर्फ -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
(⍳⊣)* पूर्णांक को x के माध्यम से विभाजित करता है , y की शक्ति तक बढ़ा दिया जाता है

TryAPL ऑनलाइन!


0

PowerShell v2 +, 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, इसलिए हम कोष्ठक में है कि संपुटित और बूलियन-नहीं ले!(...)उसके। इस प्रकार, यदि इसका विभाज्य है, तो इसे इस फ़िल्टर द्वारा शामिल किया जाएगा, और अन्य सभी संख्याओं को बाहर रखा जाएगा।

अंत में, हम परिणामी संख्याओं को परिच्छेदों में संलग्न करते हैं (...)और [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 बाइट्स

+3 के लिए -p(कोड शामिल नहीं है क्योंकि +1 ')

STDIN पर इनपुट के साथ चलाएँ

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

PHP 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 का उपयोग करना चाहिए का उपयोग कर रहे हैं और मुझे नहीं लगता कि आप पाश में $ मैं incrementing रहे हैं
theLambGoat
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.