क्या मैं एक ऑटोमोरिक नंबर हूँ?


20

एक ऑटोमोर्फिक नंबर एक संख्या है जो आधार 10 में अपने वर्ग का एक प्रत्यय है। यह OEIS में अनुक्रम A003226 है।

आपका कार्य:

यह निर्धारित करने के लिए एक प्रोग्राम या फ़ंक्शन लिखें कि क्या इनपुट एक ऑटोमैटिक नंबर है।

इनपुट:

0 और 10 ^ 12 (समावेशी) के बीच एक पूर्णांक, जो एक स्वचालित संख्या हो सकती है या नहीं भी हो सकती है।

आउटपुट:

एक सत्य / झूठे मूल्य से संकेत मिलता है कि इनपुट एक स्वचालित संख्या है या नहीं।

उदाहरण:

0           -> truthy
1           -> truthy
2           -> falsy
9376        -> truthy
8212890625  -> truthy

स्कोरिंग:

यह , बाइट्स जीत में सबसे कम स्कोर।


9
1e12 की सीमा Btw का अर्थ है सबमिशन को 1e24 तक की संख्या को संभालने की आवश्यकता होगी, जो कि 80-बिट संख्या है। यदि संख्या को संभालना है जो बड़ी एक कठिन आवश्यकता है, तो बाहर निकलने के कई उत्तर अमान्य हैं।
डेनिस

क्या हमें उन संख्याओं को संभालने की आवश्यकता है जो हमारी चुनी हुई भाषा में सटीक मुद्दों को जन्म देंगी?
झबरा

बशर्ते कि आप उस बारे में मानक खामियों का दुरुपयोग न करें, तो यह ठीक होगा।
ग्रिफ़ॉन -

विशेष रूप से, यह लूपोल
ग्रिफ़ोन -

यह एक लूंग दिन रहा है और मैं बहुत, बहुत थका हुआ हूं लेकिन आपकी टिप्पणियों ने मुझे मेरे जेएस समाधान को मान्य करने के लिए पढ़ा। क्या आप इसकी पुष्टि कर सकते हैं? (कोई मुद्दा नहीं हटाया जा रहा है)
झबरा

जवाबों:


11

ब्रेकीलॉग , 5 बाइट्स

~√a₁?

इसे ऑनलाइन आज़माएं!

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

~√a₁?
~√      the input is the square root of a number
  a₁    whose suffix is
    ?   the input

नहीं, यह कहता है कि यदि x अपने वर्ग का प्रत्यय है।
WGroleau

2
√a₁?क्यों नहीं?
पूरी तरह से

38

पायथन 2 , 24 बाइट्स

lambda n:`n*1L`in`n**2L`

इसे ऑनलाइन आज़माएं!

इतिहास में पहली बार, पायथन 2 Lको लॉन्ग के रिप्रजेंट करने के लिए बग के बजाय एक फीचर है।

यह विचार करना है कि क्या कहना है, यह जाँचने से 76^2=5776समाप्त होता है 76कि 76Lक्या एक विकल्प है 5776LLगैर-विशाल संख्याओं के लिए उपस्थिति बनाने के लिए, हम एक 1Lया 2Lएक लंबे समय के साथ एक लंबे समय के साथ एक अंकगणितीय ऑपरेशन के बाद से घातांक के रूप में गुणा या करते हैं ।


9

पायथन 2 , 31 बाइट्स

एक्सनॉर द्वारा आउट-गोल्फिंग ... (यह हर एक बार होता है)> <लेकिन हे, यह लिए आश्चर्यजनक रूप से पाइथोनिक है ।

लोगों को याद नहीं है कि अजगर ने str.endswith()...

lambda n:str(n*n).endswith(`n`)

इसे ऑनलाइन आज़माएं!


क्या आप `n*n`संख्या को स्ट्रिंग में बदलने के लिए उपयोग नहीं कर सकते ?
डाउनगेट

@Downgoat अधिक संख्याओं पर 'L' को काटता है।
जुआन

@totallyhuman अच्छा बिंदु, मैं इसके उपयोग से चूक गया।
ईसैक

5

6
अगर मैं जानता हूं कि यह कैसे काम करता है, तो मैं बढ़ा दूंगा।
ईसैक

मुझे लगता है, nवर्ग है, .sप्रत्यय ¹है, इनपुट है, और åसदस्यता के लिए परीक्षण @isaacg
कॉनर ओ'ब्रायन

@isaacg कॉनर ने क्या कहा ... स्पष्टीकरण जोड़ने का समय नहीं था।
आउटगोल्फ

5

रेटिना , 44 बाइट्स

$
;918212890625;81787109376;0;1;
^(\d+;).*\1

इसे ऑनलाइन आज़माएं!

10-एडिक समीकरण के बिल्कुल 4 समाधान हैं x*x = x


1
उह? क्या ये सभी नंबर वैध समाधान नहीं हैं?
लियो

@ नहीं, वे नहीं हैं। जाहिर है 5*5 != 5। हालाँकि, आप अपने द्वारा लिंक किए गए नंबरों में कुछ पैटर्न देख सकते हैं। 4 समाधान हैं: 0, 1, ... 59918212890625, ... 40081787109376 (पी-एडिक नंबर असीम रूप से बाईं ओर जाते हैं )। आपके द्वारा लिंक किए गए नंबर 4 संख्याओं के प्रत्यय हैं।
लीक नून

ओह ठीक है, धन्यवाद, मैं पी-एडिक नंबरों के बारे में नहीं जानता था
लियो

4

ऐलिस , 17 बाइट्स

/o.z/#Q/
@in.*.L\

इसे ऑनलाइन आज़माएं!

आउटपुट कुछ भी नहीं है (जो साधारण मोड में मिथ्या है) या Jabberwocky(जो गैर-रिक्त है और इसलिए सामान्य रूप से सत्य है, यह भी विहित सत्य स्ट्रिंग मूल्य है)।

व्याख्या

/.../#./
....*..\

यह रैखिक साधारण मोड कार्यक्रमों के लिए सामान्य ढांचे का एक मामूली संशोधन है। /बीच में बीच में कार्डिनल मोड में एक भी ऑपरेटर के लिए प्रयोग किया जाता है ( *) और फिर हम की जरूरत है #जिस तरह से पीठ पर क्रमवार मोड में इसे छोड़ सकते हैं। रैखिक कार्यक्रम तब है:

i..*.QLzno@

चलो उस के माध्यम से जाना:

i    Read all input as a string and push it to the stack.
..   Make two copies.
*    This is run in Cardinal mode, so it implicitly converts the top two
     copies to their integer value and multiplies them to compute the square.
.    Implicitly convert the square back to a string and make a copy of it.
Q    Reverse the stack to bring the input on top of the two copies of its square.
L    Shortest common supersequence. This pops the input and the square from
     the top of the stack and pushes the shortest string which begins with
     the square and ends with the input. Iff the square already ends with the
     input, this gives us the square, otherwise it gives us some longer string.
z    Drop. Pop the SCS and the square. If the square contains the SCS (which
     would mean they're equal), this removes everything up to the SCS from
     the square. In other words, if the SCS computation left the square
     unchanged, this gives us an empty string. Otherwise, it gives us back
     the square.
n    Logical not. Turns the empty string into "Jabberwocky" and everything
     else into an empty string.
o    Print the result.
@    Terminate the program.


4

पायथन 2, 37 33 30 29 बाइट्स

lambda n:n*~-n%10**len(`n`)<1

@LeakyNun की बदौलत 4 बाइट्स बचाए। 3 बाइट्स को यह देखते हुए सहेजा जाता है कि इनपुट 10 ^ 12 से कम है इसलिए n"L" के साथ समाप्त नहीं होता है। @ बाइट के लिए 1 बाइट का धन्यवाद दिया क्योंकि मैं पहली बार में मिस कर गया।

इसे ऑनलाइन आज़माएं! (@Dennis का TIO लिंक सौजन्य)।


3

सी (जीसीसी) , 57 बाइट्स

f(__int128 n){n=n*n%(long)pow(10,printf("%u",n))==n;}

@ Betseg के उत्तर के आधार पर, यह एक फ़ंक्शन है जो 1 या 0 देता है । यह STDOUT को कचरा उत्पादन करता है, जिसे डिफ़ॉल्ट रूप से अनुमति दी जाती है

संकलक ध्वज के लिए स्कोर में +4 बाइट्स होते हैं -lm

इसे ऑनलाइन आज़माएं!



3

सी # (.NET कोर) , 47 बाइट्स

n=>$"{BigInteger.Multiply(n,n)}".EndsWith(n+"")

इसे ऑनलाइन आज़माएं!


नहीं है परिवर्तन के लिए संभव है $"{n}"करने के लिए n+""? इसके अलावा, क्या आप शायद एक TryItOnline- लिंक जोड़ सकते हैं ? ओह, और यह एक स्निपेट है, फ़ंक्शन / प्रोग्राम नहीं है। इसलिए आपको n=>इसके सामने जोड़ना चाहिए ।
केविन क्रूज़सेन

1
@ केविनक्रूजसेन हो गया! क्या आगे भी सरल करना संभव है? TIL का उपयोग करके आप एक इंट को स्ट्रिंग में बदल सकते हैं n+""। धन्यवाद!
काकरोत

आपको bool f(long n)C #, Java, आदि में लैम्ब्डा उत्तर के लिए अर्ध-बृहदान्त्र की आवश्यकता नहीं है या बस n=>$"{BigInteger.Multiply(n,n)}".EndsWith(n+"")पर्याप्त है। :) और मैं लगभग भूल गया: PPCG में आपका स्वागत है!
केविन क्रूज़सेन

@KevinCruijssen धन्यवाद!
काकरोत

आपका स्वागत है! :) ओह, और यहाँ सिर्फ उपयोग करने के लिए आपका TIO-link कनवर्टर हैn=> , a का उपयोग करके System.Func
केविन क्रूज़सेन

3

चारकोल , 12 11 बाइट्स

I¬⌕⮌IXIθ²⮌θ

इसे ऑनलाइन आज़माएं!

रिटर्न Falseके रूप में falseyऔर Trueके रूप मेंtruthy

  • 1 बाइट ASCII- के लिए धन्यवाद बचा लिया! (मैं Powerफ़ंक्शन को कैसे याद कर सकता हूं ?)

यह रिटर्न 0के लिए 10, 100... 1के लिए 50, 60... 2के लिए 760, 3792...
नील

@ नील अब तय है, धन्यवाद!
चार्ली

2
मुझे लगा कि चारकोल केवल ASCII कला के लिए अच्छा था। ಠ_ಠ
totallyhuman


@totallyhuman यह अभी भी है, सभी सामान्य गोल्फलैंग्स को <6 बाइट समाधानों के साथ देखें
ASCII-only

2

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

n=>`${n*n}`.endsWith(n)

कोशिश करो

मेरे फोन पर इस स्निपेट को लिखा, तो कृपया संपादित करें अगर यह सही ढंग से काम नहीं कर रहा है।

f=
n=>`${n*n}`.endsWith(n)
oninput=_=>o.innerText=f(+i.value);o.innerText=f(i.value=1)
<input id=i type=number><pre id=o>


यह सटीक समस्याओं के कारण 212890625 के लिए विफल रहता है ।
डेनिस

उस ओर इशारा करने के लिए धन्यवाद, @ डेनिस; यह एक त्वरित था जबकि एक धूम्रपान विराम पर इसलिए मैंने (मूर्खतापूर्ण) केवल परीक्षण मामलों की जांच की। सटीक त्रुटियों पर स्पष्टीकरण के लिए कहेंगे और यदि आवश्यक हो, तो कंप्यूटर पर वापस आने पर हटा दूंगा।
झबरा




2

आर, 28 बाइट्स

pryr::f(x^2%%10^nchar(x)==x)

एक समारोह बनाता है:

function (x) 
x^2%%10^nchar(x) == x

x^2इस तरह के मापांक लेता है कि हम अंतिम अंक रखते हैं, जिसकी हम तुलना करते हैं x







1

बैच, 122 बाइट्स

@set/an=%1,t=f=1
:l
@set/at+=t,f*=5,n/=10
@if %n% gtr 0 goto l
@cmd/cset/a"(!(%1%%t)|!(~-%1%%t))&(!(%1%%f)|!(~-%1%%f))

एल्गोरिथ्म केवल चर प्रकार के लिए उपयोग किए जाने वाले पूर्णांक प्रकार द्वारा सीमित है। बैच के मामले में, यह 32-बिट हस्ताक्षरित पूर्णांक है, इसलिए अधिकतम 2147483647 है। कारकों के रूप में 2 और 5 की आवश्यक शक्तियों के लिए n और n-1 दोनों का परीक्षण करके काम करता है। (जब n 0 या 1 को छोड़कर, n और n-1 में प्रत्येक एक कारक होगा।)


1

> <> , 30 बाइट्स

1&0}\{n;
:&(?\:::*&a*:&%={+}:&

इसे ऑनलाइन आज़माएं , या इसे मछली के खेल के मैदान में देखें !

इनपुट संख्या x मान लेता है पहले से ही स्टैक पर है।

स्पष्टीकरण: मछली 10 की बढ़ती शक्तियों द्वारा x 2 के भागफल को लेती है , और गिनती है कि यह x कितनी बार बराबर है । जब 10 की शक्ति x से बड़ी हो जाती है , तो यह गिनती को रोकती है और रोकती है। गणना 1 होगी यदि x ऑटोमैटिक है, और 0 यदि यह नहीं है।



1

अजगर , १० 9 बाइट्स

-1 बाइट इसाचग के लिए धन्यवाद ।

x_`^vz2_z

रिटर्न 0 है, जब संख्या ऑटोमैटिक है, और कुछ भी नहीं अगर यह नहीं है।

इसे ऑनलाइन टेस्ट करें!

स्पष्टीकरण

x_`^vz2_z

   ^vz2      # Evaluate the input to a number, compute the square
  `          # Convert the squared number to a string
 _           # Reverse it
x      _z    # Find the index of the first occurrence of the reversed input in the reversed square. That's basically equivalent of doing an endswith() in Python
             # Implicit input of the index. If 0, then the reversed square starts with the reversed input

1
`स्ट्रिंग में परिवर्तित होता है।
इसहाक



0

क्लोजर, 59 बाइट्स

#(apply = true(map =(reverse(str %))(reverse(str(* % %)))))

यह अत्यधिक क्रिया लगती है।


सिर्फ साथ क्यों नहीं #(.endsWith(str(* % %))(str %))?
क्लिफरॉट

सच है, जावा बिल्ट-इन के बारे में भूलना इतना आसान है।
निकोनिरह

0

MATL , 10 बाइट्स

UUVG36hXXn

यह सटीक सीमाओं के floor(sqrt(2^53))अनुसार संख्याओं के लिए काम करता है double

आउटपुट एक सकारात्मक संख्या है (जो सत्य है) यदि स्वप्रतिरक्षी, या रिक्त (जो मिथ्या है) यदि नहीं।

इसे ऑनलाइन आज़माएं!

व्याख्या

मजेदार है कि यह उत्तर दो अतिभारित संस्करणों का उपयोग करता है U: स्ट्रिंग इनपुट के साथ यह एक संख्या के रूप में मूल्यांकन करता है, और संख्या इनपुट के साथ यह वर्ग की गणना करता है।

U      % Implicitly input a string. Evaluate as a number
U      % Square of number
V      % Convert number to string representation
G      % Push input string again
36h    % Post-pend '$'
XX     % Regexp match. Gives cell array of matching substrings.
n      % Number of elements. Implicitly display
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.