इनपुट और अगले उच्चतम वर्ग के बीच मूल्यों की संख्या


9

इनपुट के रूप में एक सकारात्मक वर्ग संख्या दी गई। इनपुट और अगले उच्चतम वर्ग के बीच मूल्यों की संख्या को आउटपुट करें।

उदाहरण

इनपुट: १

आउटपुट: २

कारण: 2 और 3 संख्याएँ 1 और 4 के बीच हैं, अगला उच्चतम वर्ग

इनपुट: ४

आउटपुट: ४

कारण: संख्या 5, 6, 7, 8 4 और 9 के बीच हैं


1
हमें किस प्रकार के इनपुट मानों का समर्थन करना है?
मार्टिन एंडर

16
मुझे लगता है कि अगर इनपुट चौकोर नहीं होता तो यह और अधिक दिलचस्प होता।
xnor

1
@ एक्सनॉर हिंडाइट, मैं निश्चित रूप से सहमत हूं।
Shayne03

जवाबों:


8

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

½Ḥ

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

मेरे गणितज्ञ उत्तर का पोर्ट (वर्गमूल लें, फिर दोहराएं)। यह उन आदानों तक सीमित है जिन्हें एक फ्लोटिंग-पॉइंट नंबर के रूप में दर्शाया जा सकता है। यदि यह समस्या है, तो तीन-बाइट समाधान ƽḤमनमाने वर्गों के लिए काम करता है (जो डेनिस ने पहले पोस्ट किया था लेकिन फिर हटा दिया गया था)।


1
ओह, मैं पूरा याद किया "इनपुट एक वर्ग होगा" उफ़।
जोनाथन एलन

1
@JonathanAllan Me भी। अजीब कल्पना आईएमओ।
डिजिटल ट्रॉमा

क्या ऐसे कोई वर्ग हैं जो फ्लोटिंग पॉइंट में बिल्कुल प्रतिनिधित्व नहीं कर सकते हैं?
बिखेरना

@Christian ज़रूर, फ़्लोटिंग-पॉइंट नंबर आकार में तय किए गए हैं, इसलिए केवल उन मूल्यों की एक सीमित संख्या है जो वे प्रतिनिधित्व कर सकते हैं।
मार्टिन एंडर

@MartinEnder उस मामले में, मनमाने ढंग से सटीक पूर्णांक के लिए जेली का समर्थन और एक ऊपरी बाध्य की कल्पना की कमी को देखते हुए, मैं वोट देता हूं कि इसे सभी वैध इनपुट का समर्थन करना चाहिए।
तितर बितर

12

ब्रेन-फ्लैक , 38 , 22 बाइट्स

{([[]](({})))}{}([]<>)

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

मुझे इस जवाब पर बहुत गर्व है। IMO, मेरे सबसे अच्छे ब्रेन-फ्लैक गोल्फ में से एक है।

यह कैसे काम करता है?

जैसा कि कई अन्य उपयोगकर्ताओं ने बताया है, उत्तर बस sqrt (n) * 2 है । हालांकि, मस्तिष्क-चपटी में वर्गमूल की गणना बहुत ही गैर-जरूरी है। चूंकि हम जानते हैं कि इनपुट हमेशा एक वर्ग होगा, हम अनुकूलन कर सकते हैं। तो हम एक लूप लिखते हैं जो घटता है

1, 3, 5, 7, 9...

इनपुट से, और ट्रैक करें कि यह कितनी बार चलता है। एक बार जब यह 0 से टकराता है, तो उत्तर केवल अंतिम संख्या है जिसे हमने घटाकर घटा दिया है।

मूल रूप से, मैंने एक काउंटर को दूसरे स्टैक पर धकेल दिया था। हालांकि, हम स्टैक की ऊँचाई बढ़ाकर, मुख्य स्टैक को काउंटर के रूप में उपयोग कर सकते हैं।

#While TOS (top of stack, e.g. input) != 0:
{

    #Push:
    (

      #The negative of the height of the stack (since we're subtracting)
      [[]]

      #Plus the TOS pushed twice. This is like incrementing a counter by two
      (({}))
    )

#Endwhile
}

#Pop one value off the main stack (or in other words, decrement our stack-counter)
{}

#And push the height of the stack onto the alternate stack
([]<>)

अजगर-y छद्मकोड में, यह मूल रूप से निम्नलिखित एल्गोरिथ्म है:

l = [input]
while l[-1] != 0:   #While the back of the list is nonzero
    old_len = len(l)
    l.append(l[-1])
    l.append(l[-1] - old_len)

l.pop()

print(len(l))

2
मेरा दिमाग वस्तुतः इसी से बना है, अच्छी नौकरी।
मैजिक ऑक्टोपस Urn

9

गणितज्ञ, 8 बाइट्स

2Sqrt@#&

इसे ऑनलाइन आज़माएं! (गणित का उपयोग करना।)

N 2 और (n + 1) 2 के बीच का अंतर हमेशा 2n + 1 होता है, लेकिन हम चाहते हैं कि दोनों के बीच का मान दोनों सिरों को छोड़कर हो, जो 2n है

यह संभावित 2#^.5&आवश्यकताओं के आधार पर संभावित रूप से छोटा किया जा सकता है ।


1
कैसे 2 & # के बारे में?
३37 पर


2

डीसी, ५

?2*vp

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


पहले मैंने सवाल को गलत बताया। यह संस्करण किसी भी सकारात्मक पूर्णांक इनपुट के लिए काम करता है, न कि केवल सही वर्ग:

डीसी, १२

?dv1+d*1-r-p

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


2

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

मुझे याद आया "इनपुट चौकोर होगा" चेतावनी, लेकिन यह सभी गैर-नकारात्मक पूर्णांक के लिए काम करेगा ... मार्टिन एंडर ने पहले से ही 2 बाइट समाधान दिया था

½‘Ḟ²’_

गिनती को लौटाने वाला एक विचित्र लिंक।

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



2

ब्रेन-फ्लैक , 20 बाइट्स

DJMcMayhem के अद्भुत (यद्यपि थोड़ा लंबा) जवाब देने के लिए प्रोत्साहित करें यहाँ

{({}()[({}()())])}{}

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

व्याख्या

यह कोड विषम संख्याओं द्वारा वर्ग संख्या से नीचे की गणना करके काम करता है। चूंकि प्रत्येक वर्ग लगातार विषम संख्याओं का योग है, यह n 1/2 चरणों में 0 तक पहुंच जाएगा । यहाँ ट्रिक यह है कि हम वास्तव में एक समान संख्या में अपने कदमों का ट्रैक रखते हैं और ()इसे उचित विषम संख्या में ऑफसेट करने के लिए एक स्टेटिक का उपयोग करते हैं । चूंकि उत्तर 2n 1/2 है , इसलिए यह संख्या भी हमारा उत्तर होगी। इसलिए जब हम 0 पर पहुंचते हैं तो हम शून्य को हटा देते हैं और हमारा उत्तर स्टैक पर बैठ जाता है।



1

ऑक्टेव , 25 10 बाइट्स

@(n)2*n^.5

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

मार्टिन के बेहतर दृष्टिकोण का उपयोग करके 15 बाइट्स बचाए। सीमा में 2*sqrt(n)तत्व होते हैं। फ़ंक्शन ठीक यही करता है: 2इनपुट की जड़ से गुणा करता है ।


1

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

½‘R²Ṫ_‘

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

स्पष्टीकरण:

½‘R²Ṫ_    Input:              40
½         Square root         6.32455532...
 ‘        Increment           7.32455532...
  R       Range               [1, 2, 3, 4, 5, 6, 7]
   ²      Square              [1, 4, 9, 16, 25, 36, 49]
    Ṫ     Tail                49
     _‘   Subtract input+1    8

Btw, इनपुट हमेशा एक वर्ग ही होगा।
मार्टिन एंडर

1
@ जोनाथनअल्लन फिक्स्ड
तितर बितर

@MartinEnder मैंने चुनौती को पूरी तरह से गलत कर दिया, फिर ... आपके उत्तर को कॉपी न करने के हित में (क्योंकि यह स्पष्ट है कि अब वह काम क्यों करता है) मैं इसे छोड़ दूँगा।
तितर बितर




1

टीआई-बेसिक, 3 बाइट्स

2√(Ans

सबसे सरल दृष्टिकोण ...



1

++ , 22 20 बाइट्स जोड़ें

+?
_
S
+1
^2
-1
-G
O

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

क्या आप जानना चाहते हैं कि यह कैसे काम करता है? खैर, डर नहीं! मैं आपको शिक्षित करने के लिए यहाँ हूँ!

+?   Add the input to x (the accumulator)
_    Store the input in the input list
S    Square root
+1   Add 1
^2   Square
-1   Subtract 1
-G   Subtract the input
O    Output as number

मेरे मूल QBIC उत्तर के लिए मेरे पास एक ही तर्क था, लेकिन एक छोटा तरीका है
स्टेनबेरग

1

MATL ( 8 7 बाइट्स)

मुझे यकीन है कि इसे काफी कम किया जा सकता है (संपादित करें: धन्यवाद लुइस), लेकिन एक भोली समाधान है:

X^QUG-q

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

स्पष्टीकरण:

X^   % Take the square root of the input (an integer)
QU  % Square the next integer to find the next square
G-   % Subtract the input to find the difference
q    % Decrement solution by 1 to count only "in between" values.

1
आप की जगह ले सकता 2^ से U(और इस संस्करण 20.1.1 में काम किया है, जो चुनौती के समय में सबसे हाल ही में था, तो इस सवाल का जवाब तो यह और भी हमारे पुराने मानक द्वारा पात्र होंगे)
लुइस Mendo

1
धन्यवाद लुइस! मुझे आश्चर्य है कि मेरे भोले दृष्टिकोण ने MATL मास्टर के सापेक्ष केवल 1 चरित्र को बर्बाद कर दिया। :)
DrQuarius



0

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

2/*<ER
o@i

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

व्याख्या

फिर से, 2 sqrt (n) की गणना करता है । मानक समाधान पर लेआउट दो बाइट्स बचाता है:

/o
\i@/2RE2*

कोड का टूटना, आईपी के पुनर्निर्देशन को छोड़कर:

2    Push 2 for later.
i    Read all input.
i    Try reading more input, pushes "".
2    Push 2.
R    Negate to get -2.
E    Implicitly discard the empty string and convert the input to an integer.
     Then take the square root of the input. E is usually exponentiation, but
     negative exponents are fairly useless in a language that only understands
     integers, so negative exponents are interpreted as roots instead.
*    Multiply the square root by 2.
o    Output the result.
@    Terminate the program.


0

QBIC , 19 9 बाइट्स

?sqr(:)*2

@ मार्टिनएंडर के दृष्टिकोण की नकल करके एक गुच्छा बचाया।

दुर्भाग्य से, QBIC के लिए कोई TIO लिंक नहीं है।

व्याख्या

?          PRINT
 sqr( )    The square root of
     :     the input
        *2 doubled



0

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

.+
$*
(^1?|11\1)+
$1

इसे ऑनलाइन आज़माएं! स्पष्टीकरण: @ मार्टिनएंडर के त्रिकोणीय संख्या सॉल्वर के आधार पर संख्या का वर्गमूल लेने से काम करता है। वर्ग संख्या के मिलान के बाद, $1वर्ग संख्या और पिछले वर्ग संख्या के बीच का अंतर, एकतरफा होता है। हम अगला अंतर चाहते हैं, लेकिन अनन्य, जो सिर्फ 1 और है। इसे प्राप्त करने के लिए, हम शून्य स्ट्रिंग्स की संख्या की गणना करते हैं $1



0

Java (OpenJDK 9) / JShell, 17 बाइट्स

n->2*Math.sqrt(n)

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

नोट: इसके import java.util.function.*;लिए IntFunction<T>जावा to या जावा ९ में आने की आवश्यकता होगी , लेकिन java.util.functionपैकेज को जेएसहेल में डिफ़ॉल्ट रूप से आयात किया जाता है।



हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.