নিকটতম দ্বিঘাতীয় সংখ্যাটি সন্ধান করুন


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


আকর্ষণীয় লক্ষণীয় যে এটি কখনই টাই করবে না, কারণ ক্রমটি বিজোড় এবং এমনকি সংখ্যার বিকল্প করে।
Okx

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

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

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

মান এন যেখানে আউটপুট ( কে - 1) 4 থেকে কে 4 সন্তুষ্ট হয় √ (--n - 3/4) + 1/2 = কে , বা এন = ((কে - 1/2) 2 + 3 / 4) 2 = ( 2 - + 1 টি) 2 = (( - 1) 4 + + 4 + 1 টি) / 2, যা ঠিক প্রথম পূর্ণসংখ্যা কাছাকাছি এর যে k 4

(সকল n এর জন্য কাজ করে ≤ 4504699340341245 = (8192 4 + 8193 4 - 7) / 2> 2 52 , এর পরে ভাসমান-পয়েন্ট রাউন্ডঅফ এটি ভাঙ্গতে শুরু করে, যদিও এটি সমস্ত এন এর জন্য গাণিতিকভাবে কাজ করে ))


আপনি roundপাইথন 2 এ স্যুইচ করলে আপনি একটি বাইট সংরক্ষণ করতে পারেন যা সমস্ত .5 এর চারপাশে আসে।
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একদম ছাড়িয়ে গেছে । পরিশেষে, ফলাফল উত্সর্গ করতে এটি উত্থাপন ,।20.5^4416


2
এটা এমনকি গল্ফিয়ার!
flawr

7

হাস্কেল , 51 49 বাইট

ফাংশন মনড এফটিডব্লিউ!

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

এমএটিএল , 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
এই প্রোগ্রামিংয়ের ভাষাটি ইউনিকোড অক্ষর ("𝕎" এবং "𝕔") ব্যবহার করে বলে মনে হচ্ছে। এই জাতীয় অক্ষরের সাধারণত একাধিক বাইট প্রয়োজন require আপনি কি নিশ্চিত যে কেবলমাত্র 5 টি বাইট ব্যবহার করে 5 টি অক্ষর সংরক্ষণ করা যেতে পারে?
মার্টিন রোজেনা


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
@ টেলরস্কট, এটি নির্দেশ করার জন্য ধন্যবাদ। আপডেট হয়েছে।
ওয়ার্নিশ



3

জাভাস্ক্রিপ্ট (ES7), 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 :(
flawr

1
@flawr নেই এই করতে তোমার ভালো লাগছে?
লুইস মেন্ডো

1
এটা খুব তাই করে!
flawr


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= পরীক্ষার জন্য টিআইও লিঙ্কের শিরোনামে রেখে দিতে পারেন :)
জিউসেপ্প

1
@ জিউসেপ ওহ, মোটেও সংজ্ঞা xদেওয়ার দরকার নেই । ধন্যবাদ!
ম্যাক্সিম মিখায়লভ

আহ, তারপরে কেবল অন্য উন্নতিটি স্টিডিনের কাছ থেকে ইনপুট নিচ্ছে এবং ইনপুটটি n=scan();which.min(((1:n)^4-n)^2)^4টিআইও-র ফুটার বিভাগে যায়।
জিউসেপে

@ জিউসেপ্পে আবারও ধন্যবাদ! আর ভবিষ্যতে উত্তরের জন্য জানতে দরকারী
ম্যাক্সিম মিখায়লভ

1

পাইথ , 9 বাইট

.maQb^R4S

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


Pyth , 17 বাইট

একটি সম্পূর্ণ প্রোগ্রাম যা @ অ্যান্ডারস ক্যাসরগের উত্তরের মতো একই পাটিগণিত পদ্ধতির ব্যবহার করে :

K.5^s+^-^QK.75KK4

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



0

কিউবিআইসি , 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}

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


এটি নিকটতম দ্বিঘাতীয় দেবে না। যেমন তার জন্য 151. 256 ফিরে আসবে
P.Péter
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.