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


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.