निकटतम द्विवार्षिक संख्या ज्ञात करें


18

एक द्विभाजित संख्या एक संख्या है जो किसी अन्य पूर्णांक की चौथी शक्ति है, उदाहरण के लिए: 3^4 = 3*3*3*3 = 81

एक पूर्णांक को इनपुट के रूप में देखते हुए, निकटतम द्विआयामी संख्या का उत्पादन करता है।

यहाँ पहले 15 डबल-वर्ग हैं:

1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000, 14641, 20736, 28561, 38416, 50625

यह प्रत्येक भाषा की जीत में इतनी कम बाइट्स है

यह OEIS A000583 है


यह ध्यान रखना दिलचस्प है कि यह कभी टाई नहीं होगा, क्योंकि अनुक्रम विषम और यहां तक ​​कि संख्याओं को वैकल्पिक करता है।
ओकेक्स

5
आप नाम बदलकर "निकटतम ज़ेंज़ीज़ेनिक खोजें" कर सकते हैं। en.wiktionary.org/wiki/zenzizenzic
विनाशकारी नींबू

1
@ माय्यूब यह आवश्यक रूप से करता है, क्योंकि अनुक्रम बस है n^4और nसाइन इन करता है।
मार्टिन एंडर

2
द्विअर्थी का वह नामकरण भ्रमित कर रहा है: प्रश्न सामग्री देखने से पहले, मैंने सोचा था कि यह 2 x n²संख्याएँ थीं : 2, 8, 18, 32, 50, 72, 98, ...
सेर्गिओल

2
जिसे "क्वार्टिक" नहीं कहा जाता है? ( मेरियम-वेबस्टर , विक्षनरी )
ओलिवियर ग्राएगोइरे

जवाबों:


15

पायथन 3 , 35 बाइट्स

lambda n:int((n**.5-.75)**.5+.5)**4

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

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

मूल्य n , जिस पर निर्गम (से स्विच कश्मीर - 1) 4 के लिए k 4 - + 1/2 = संतुष्ट √ (3/4 √n) कश्मीर , या एन = ((कश्मीर - 1/2) 2 + 3 / 4) 2 = ( k 2 - k + 1) 2 = (( k - 1) 4 + k 4 + 1) / 2, जो कि वास्तव में पहला पूर्णांक है जो k 4 के करीब है ।

(सभी n 46 4504699340341245 = (8192 4 + 8193 4 - 7) / 2> 2 52 के लिए काम करता है, जिसके बाद फ्लोटिंग-पॉइंट राउंडऑफ़ इसे तोड़ने लगता है, भले ही यह सभी n के लिए गणितीय रूप से काम करता हो ।)


roundयदि आप पायथन 2 पर जाते हैं, तो आप बाइट को बचा सकते हैं ।
xnor

8

ऑक्टेव , 35 बाइट्स

इस चुनौती के लिए एक दृढ़ विश्वास-आधारित दृष्टिकोण की आवश्यकता थी।

@(n)sum(n>conv((1:n).^4,[1 1]/2))^4

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

व्याख्या

अभिव्यक्ति (1:n).^4पंक्ति वेक्टर का उत्पादन करती है [1 16 81 256 ... n^4]

इसके बाद इस वेक्टर को सजाया जाता है [1 1]/2, जो आकार के ब्लॉकों के फिसलने के औसत की गणना करने के बराबर है 2। यह स्पष्ट रूप से मानता है कि सदिश छोड़ दिया गया है- और दायें-बायें 0। तो परिणाम में पहला मूल्य है 0.5(औसत का औसत 0और 1), दूसरा है 8.5(का औसत 1और 16), आदि।

एक उदाहरण के रूप में, n = 9के परिणाम के लिए conv((1:n).^4,[1 1]/2)है

0.5 8.5 48.5 168.5 440.5 960.5 1848.5 3248.5 5328.5 3280.5

n>...फिर तुलना पैदावार

1 1 0 0 0 0 0 0 0 0 0

और आवेदन sum(...)देता है 2। इसका मतलब यह है कि बिल्ट-इन मिड-पॉइंट nसे अधिक है 2द्विअर्थी संख्या (अतिरिक्त मिड-पॉइंट सहित 0.5)। अंत में, ^4यह करने के लिए उठाती 4परिणाम उपज के लिए, 16


2
यह गोल्फ खिलाड़ी भी है!
11

7

हास्केल , 51 49 बाइट्स

फंक्शन मोनड ftw!

f n=snd.minimum$(abs.(n-)<$>)>>=zip$(^4)<$>[1..n]

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

स्पष्टीकरण:

                                (^4)<$>[1..n] -- creates a list of fourth powers
            (abs.(n-)<$>)>>=zip               -- creates a list of |n-(4th powers)| and
                                              -- zips it with the 4th powers list
    minimum                                   -- finds the minimum
                                              -- (only first tuple entry matters)
snd                                           -- exctracts the second entry (the 4th power)

6

MATL , 6 बाइट्स

t:4^Yk

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

व्याख्या

9उदाहरण के रूप में इनपुट पर विचार करें ।

t    % Implicitly input n. Duplicate         
     % STACK: 9, 9
:    % Range [1 2 ... n]
     % STACK: 9, [1 2 3 4 5 6 7 8 9]
4^   % Raise to 4, element-wise
     % STACK: 9, [1 16 81 256 625 1296 2401 4096 6561]
Yk   % Closest element. Implicitly display
     % STACK: 16

5

नीम , 5 बाइट्स

𝐈4𝕎S𝕔

स्पष्टीकरण:

𝐈       Inclusive range [1 .. input]
  𝕎    Raise to the  v  power
 4                   4th
     𝕔  Select the value closest to
    S   the input

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


2
यह प्रोग्रामिंग भाषा यूनिकोड वर्णों ("and" और ")") का उपयोग करती प्रतीत होती है। ऐसे पात्रों को आम तौर पर एक से अधिक बाइट की आवश्यकता होती है। क्या आप सुनिश्चित हैं कि केवल 5 बाइट्स का उपयोग करके 5 वर्णों को संग्रहीत किया जा सकता है?
मार्टिन रोसेनौ

3
@MartinRosenau Neim
Okx

5

एक्सेल, 25 बाइट्स

=INT((A1^.5-3/4)^.5+.5)^4

एक्सेल इसे अद्यतन करता है =INT((A1^0.5-3/4)^0.5+0.5)^4


1
एक्सेल के लिए कन्वेंशन पर बस एक नोट: यह डी वास्तविक मानक है कि एक्सेल और एक्सेल वीबीए फ़ंक्शन जो Excel.ActiveSheetऑब्जेक्ट से इनपुट लेते हैं, उन्हें सेल से लेते हैंA1
टेलर स्कॉट

1
@TaylorScott, जो इंगित करने के लिए धन्यवाद। अपडेट किया है।
वेर्निस्क



3

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

x=>(n=x**.25|0,x-(k=n**4)<++n**4-x?k:n**4)

पुनरावर्ती संस्करण, 44 बाइट्स

f=(x,k,b)=>(a=k**4)>x?a-x>x-b?b:a:f(x,-~k,a)

डेमो


3

ऑक्टेव , 37 बाइट्स

@(n)interp1(t=(1:n).^4,t,n,'nearest')

अनाम फ़ंक्शन जो निकटतम-पड़ोसी प्रक्षेप का उपयोग करता है।

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


2
-1 नं conv :(
दोष जूल

1
@flawr क्या यह आपको बेहतर महसूस कराता है?
लुइस मेंडू

1
यह बहुत कुछ करता है!
त्रुटिपूर्ण


2

एपीएल, 22 बाइट्स

{o/⍨p=⌊/p←|⍵-⍨o←4*⍨⍳⍵}

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

कैसे?

o←4*⍨⍳⍵- o= श्रेणी ( ) 4 [वेक्टर करें]

p←|⍵-⍨o- p= एब्स ( o- ) [वेक्टर करें]

o/⍨ - ले लो o तत्व को इंडेक्स पर जहां ...

p=⌊/p- pन्यूनतम तत्व है


2

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

R*4ạÐṂ

एक मुद्रीकृत लिंक एक आइटम की एक सूची, या एक पूर्ण प्रोग्राम लौटाता है जो परिणाम प्रिंट करता है (एक अक्षम विधि का उपयोग करके)।

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

कैसे?

R*4ạÐṂ - Link: number, n
R      - range(n) -> [1,2,3,...,n]
 *4    - raise to the fourth power -> [1,16,81,...,n**4]
    ÐṂ - filter keep those (only ever one) minimal:
   ạ   -   absolute difference (with n)
       - if a full program: implicit print (one item lists print their content).




1

आर , 47 44 37 35 बाइट्स

n=scan();which.min(((1:n)^4-n)^2)^4

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


आप एक अनाम फ़ंक्शन (हटाने f=) और x[which.min((x-n)^2)]उपयोग के बजाय वापस कर सकते हैं which.min((x-n)^2)^4, और फिर यहाँf= परीक्षण के लिए TIO लिंक के शीर्षलेख में डाल सकते हैं :)
Giuseppe

1
@Giuseppe ओह, परिभाषित करने की कोई आवश्यकता नहीं है x। धन्यवाद!
मैक्सिम मिखायलोव

आह, तब केवल अन्य सुधार स्टड से इनपुट ले रहा है, n=scan();which.min(((1:n)^4-n)^2)^4और इनपुट टीआईओ पर पाद लेख अनुभाग में जाता है।
Giuseppe

@Giuseppe फिर से धन्यवाद! आर। में भविष्य के उत्तर जानने के लिए उपयोगी है
मैक्सिम मिखायलोव



0

QBIC , 38 बाइट्स

{p=q^4~p>:|~p-a>a-o|_Xo\_Xp]\o=p┘q=q+1

व्याख्या

{           DO infinitely
p=q^4       Set p to q quad (q starts out as 1)
~p>:|       IF p exceeds the input THEN
~p-a>a-o    check the distance to p and to o (the last quad) and
|_Xo        PRINT o, or
\_Xp        PRINT p accordingly
]           END IF
\o=p        ELSE  ( p <= input) store p in o to keep track of this quad
┘q=q+1      and raise q for the next iteration



0

सी #, 95 बाइट्स

namespace System.Linq{n=>new int[940].Select((_,i)=>i*i*i*i).OrderBy(i=>Math.Abs(i-n)).First()}

हम 940 को एक निर्धारित मूल्य के रूप में उपयोग करते हैं क्योंकि कोई भी बड़ा मूल्य इंट ओवरफ़्लो करेगा।

पूर्ण / स्वरूपित संस्करण:

namespace System.Linq
{
    class P
    {
        static void Main()
        {
            Func<int, int> f = n => new int[940].Select((_, i) => i * i * i * i).OrderBy(i => Math.Abs(i - n)).First();

            for (int i = 1; i <= Int32.MaxValue; ++i)
                Console.WriteLine($"{i} = {f(i)}");

            Console.ReadLine();
        }
    }
}

0

रूबी , 23 34 बाइट्स

मुझे नहीं पता कि इसके 0.75लिए इतनी महत्वपूर्ण संख्या क्यों है, लेकिन हे, जो भी काम करता है।

->n{((n**0.5-0.75)**0.5).round**4}

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


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