সংখ্যা-স্কোয়ারে সংখ্যা


13

প্রাকৃতিক সংখ্যার একটি ক্রম বিবেচনা করুন যার জন্য N ^ 2 এ সাবস্ট্রিং হিসাবে উপস্থিত হয়। A018834

nএই অনুক্রমের th তম উপাদান আউটপুট ।

বিধি

প্রোগ্রামটি কেবল nইনপুট হিসাবে গ্রহণ করে এবং কেবল একটি সংখ্যা আউটপুট করে N

ক্রমটি 0-সূচকযুক্ত বা 1-সূচকযুক্ত হতে পারে।

Sequence: 1 5 6 10 25 50 60 76 100 250 376 500 600 625 760 ...
Squares:  1 25 36 100 625 2500 3600 5776 10000 62500 141376 250000 360000 390625 577600 ...

এটি কোড-গল্ফ তাই সংক্ষিপ্ততম কোডের জয়।


1
প্রচুর বাস্তবায়ন সমস্যাগুলির মধ্যে চলে যাবে (আমার জন্য এটি 2 2 32 এর বেশি মানের সাথে অ্যারে তৈরি করতে না পারার কারণে), যা বেশিরভাগ সমাধানগুলিকে ডিফল্টরূপে সর্বাধিক আকারের সাথে আবদ্ধ করে তোলে। এই সমাধানগুলি কি অযোগ্য ঘোষণা করা উচিত?
সর্বোচ্চ

1
@ ম্যাক্সবি আমি মনে করি তাত্ত্বিকভাবে ব্যবহারিকভাবে ব্যবহারিকভাবে প্রয়োজনীয় ছিল না
আর্নল্ড

1
@ ওরিস আমি জানি এটি সত্যিই কম, সে কারণেই আমি আমার সমাধানটি পছন্দ করি না। আমি একটি বাইট যুক্ত করতে এবং এটি আরও বড় ইনপুটগুলির জন্য কাজ করতে পারি, তাই আমি বিকল্প হিসাবে যুক্ত করব
ম্যাক্সবি

1
"এন ^ 2 এ এন প্রদর্শিত হবে" এর মতো আরও ভাল কিছু বলা যেতে পারে যেমন "এন এর দশমিক অঙ্কগুলি এন স্কোয়ারের দশমিক সংখ্যার একটি [ধারাবাহিক] সাবস্ট্রিং" (111 "121" তে উপস্থিত হয় না)। [কঠোরভাবে "সংহত" অপ্রয়োজনীয়, তবে এটি যুক্ত করা স্পষ্ট]]
জোনাথন অ্যালান

উত্তর:


4

05 এ বি 1 ই , 6 বাইট

1-ইন্ডেক্স

µNNnNå

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

ব্যাখ্যা

µ         # loop over increasing N until counter equals input
 N        # push N (for the output)
  Nn      # push N^2
    N     # push N
     å    # push N in N^2
          # if true, increase counter

এই µআদেশটি কেবল ... আমি যদি আমার কাছে থাকতাম
সর্বোচ্চ

@ ম্যাক্সবি: চ্যালেঞ্জগুলির জন্য এটি বেশ ব্যবহারিক যেখানে আপনাকে Nthএকটি নির্দিষ্ট শর্ত পূরণ করে এমন নম্বরটি খুঁজে পাওয়া দরকার ।
এমিগানা

" যদি সত্য হয় , কাউন্টার বাড়িয়ে দিন"?
জোনাথন অ্যালান

@ জোনাথান অ্যালান: যেমন রয়েছে, "N যদি N ^ 2 এ থাকে তবে কাউন্টারটির মান 1 করে বাড়ান"। আমার সম্ভবত "ইনক্রিমেন্ট কাউন্টার" লেখা উচিত ছিল।
এমিগনা

আমি আসলে ব্যাখ্যাটি বুঝতে পারি নি; এটি প্রদর্শিত হয় যদি åফলন সত্য হয় তবে আমাদের Nস্ট্যাকের শীর্ষে বর্তমান রয়েছে (ইনক্রিমেন্ট কাউন্টার এবং ইনক্রিমেন্ট N), তবে তা না হলে আমরা অবিরত (বৃদ্ধি N)। হতে পারে " N" ব্যতীত অন্য কিছু ব্যবহার করুন যেহেতু এটি প্রশ্নবোধের চূড়ান্ত ফলাফল: পি
জোনাথন অ্যালান


3

জাভাস্ক্রিপ্ট (ES6), 43 বাইট

f=(n,k=0)=>n?f(n-!!(++k*k+'').match(k),k):k

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


অ-পুনরাবৃত্ত সংস্করণ, 47 বাইট

n=>eval("for(k=0;n-=!!(++k*k+'').match(k););k")

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


এই n=23শুধু আপ দেয় ?
বেদন্ত কান্দোই

@ ওয়েডেন্টকান্ডোই এটি আপনার জেএস ইঞ্জিনে কল স্ট্যাকের আকারের উপর নির্ভর করে। তবে গণনা করার জন্য একটি ( এন ) পুনরাবৃত্তি প্রয়োজন, যাতে এটি n = 23 এর জন্য 7600 পুনরাবৃত্ত কল । একটি(এন)একটি(এন)7600এন=23
আর্নল্ড

3

ম্যাথগল্ফ , 8 বাইট (তত্ত্বের কোনও ইনপুট জন্য কাজ করে তবে কেবল n<10অনুশীলনের জন্য)

úrgɲï╧§

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

বিকল্প ( n<49অনুশীলন এবং তত্ত্বের জন্য কাজ করে )

►rgɲï╧§

পার্থক্যটি হ'ল 10^(input)মানগুলি সহ একটি তালিকা তৈরি করার পরিবর্তে , আমি 10^6আইটেমগুলির সাথে একটি তালিকা তৈরি করি । এটি চালাতে কিছুটা সময় নেয়, যাতে আপনি এটি পরীক্ষা করে দেখতে অন্য কোনও 1-বাইট আক্ষরিকের কাছে প্রথম বাইটটি বদল করতে পারেন।

ব্যাখ্যা

ú          pop(a), push(10**a)
 r         range(0, n)
  g        filter array by...
   É       start block of length 3
    ²      pop a : push(a*a)
     ï     index of current loop
      ╧    pop a, b, a.contains(b)
           Block ends here
       §   get from array

এই সমাধানটি বড় ইনপুট হ্যান্ডেল না করার কারণটি আমি লক্ষ করেছি যে ক্রমটি তাত্পর্যপূর্ণভাবে কম বেড়েছে, তবে কোনও বহুপদী থেকে বেশি than এজন্য আমি 10**nঅপারেটরটি ব্যবহার করেছি (আমি ব্যবহার করতে চাইছিলাম 2**nতবে এটি ইনপুট 1 এর জন্য ব্যর্থ হয়েছিল)। এর অর্থ হল যে আমি এমনকি ছোট ইনপুটগুলির জন্য খুব বড় অ্যারে তৈরি করেছি, কেবল এর বিশাল অংশটিকে ফিল্টার করতে এবং তারপরে প্রথম উপাদানগুলির একটি গ্রহণ করি of এটি অত্যন্ত অপব্যয়কর, তবে বাইটের গণনা না বাড়িয়ে এটি করার আর কোনও উপায় আমি খুঁজে পাচ্ছি না।




2

জেলি , 6 বাইট

1ẇ²$#Ṫ

1-ইন্ডেক্স।

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

কিভাবে?

nক্রমের প্রথমটি একটি তালিকা হিসাবে সন্ধান করে এবং এরপরে লেজ দেয় N,।

1ẇ²$#Ṫ - Link: integer, n (>0)
1      - initialise x to 1
    #  - collect the first n matches, incrementing x, where:
   $   -   last two links as a monad:
  ²    -     square x
 ẇ     -     is (x) a substring of (x²)?
       -     (implicitly gets digits for both left & right arguments when integers)
     Ṫ - tail

যদি 0প্রাকৃতিক সংখ্যা হিসাবে বিবেচনা করা হয় তবে আমরা ẇ²$#Ṫ5 -র জন্য 1-সূচকযুক্ত পূর্ণ-প্রোগ্রামটি ব্যবহার করতে পারি।




2

জাভা 8, 66 65 63 বাইট

n->{int r=0;for(;!(++r*r+"").contains(r+"")||--n>0;);return r;}

-1 থেকে বাইট ধন্যবাদ @Shaggy
-২ বাইটস @ আরনাউল্ডকে ধন্যবাদ ।

1-ইন্ডেক্স।

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

ব্যাখ্যা:

n->{                // Method with integer as both parameter and return-type
  int r=0;          //  Result-integer, starting at 0
  for(;             //  Loop as long as:
       !(++r*r+"")  //    (increase result `r` by 1 first with `++r`)
                    //    If the square of the result `r` (as String) 
        .contains(  //    does not contain
          r+"")||   //    the result `r` itself (as String):
       --n>0;);     //     (decrease input `n` by 1 first with `--n`)
                    //     And continue looping if input `n` is not 0 yet
  return r;}        //  Return the result `r`


1
@ শেগি আহ, অবশ্যই। ধন্যবাদ!
কেভিন ক্রুইজসেন

1
@ আরনাউল্ড আহ, লুপের সংমিশ্রনের দুর্দান্ত উপায় এবং যদি! ধন্যবাদ।
কেভিন ক্রুইজসেন

2

ক্লোজার , 81 বাইট

(fn[n](nth(filter #(clojure.string/includes?(str(* % %))(str %))(range))n))

এটি অনলাইন চেষ্টা করুন! (দুর্ভাগ্যক্রমে, টিআইও ক্লোজুর স্ট্যান্ডার্ড স্ট্রিং লাইব্রেরিকে সমর্থন করে না বলে মনে হয়)

ক্লোজুরে যদি সংক্ষিপ্ততর আমদানি সংশ্লেষ করে বা includes?কোর লাইব্রেরিতে কোনও পদ্ধতি থাকে তবে এটি আসলে কিছুটা প্রতিযোগিতামূলক হতে পারে। clojure.string/includes?একা এখানে কিছু উত্তরের চেয়ে দীর্ঘ যদিও: /

(defn nth-sq-subs [n]
  (-> ; Filter from an infinite range of numbers the ones where the square of
      ;  the number contains the number itself
    (filter #(clojure.string/includes? (str (* % %)) (str %))
            (range))

    ; Then grab the "nth" result. Inc(rementing) n so 0 is skipped, since apparently
    ;  that isn't in the sequence
    (nth (inc n))))

যেহেতু টিআইও লিঙ্কটি নষ্ট হয়ে গেছে, এখানে একটি পরীক্ষা চালানো হচ্ছে। বাম দিকে নম্বরটি সূচক ( n), এবং ফলাফল ( N) ডানদিকে রয়েছে:

(mapv #(vector % (nth-sq-subs %)) (range 100))
=>
[[0 1]
 [1 5]
 [2 6]
 [3 10]
 [4 25]
 [5 50]
 [6 60]
 [7 76]
 [8 100]
 [9 250]
 [10 376]
 [11 500]
 [12 600]
 [13 625]
 [14 760]
 [15 1000]
 [16 2500]
 [17 3760]
 [18 3792]
 [19 5000]
 [20 6000]
 [21 6250]
 [22 7600]
 [23 9376]
 [24 10000]
 [25 14651]
 [26 25000]
 [27 37600]
 [28 50000]
 [29 60000]
 [30 62500]
 [31 76000]
 [32 90625]
 [33 93760]
 [34 100000]
 [35 109376]
 [36 250000]
 [37 376000]
 [38 495475]
 [39 500000]
 [40 505025]
 [41 600000]
 [42 625000]
 [43 760000]
 [44 890625]
 [45 906250]
 [46 937600]
 [47 971582]
 [48 1000000]
 [49 1093760]
 [50 1713526]
 [51 2500000]
 [52 2890625]
 [53 3760000]
 [54 4115964]
 [55 5000000]
 [56 5050250]
 [57 5133355]
 [58 6000000]
 [59 6250000]
 [60 6933808]
 [61 7109376]
 [62 7600000]
 [63 8906250]
 [64 9062500]
 [65 9376000]
 [66 10000000]
 [67 10050125]
 [68 10937600]
 [69 12890625]
 [70 25000000]
 [71 28906250]
 [72 37600000]
 [73 48588526]
 [74 50000000]
 [75 50050025]
 [76 60000000]
 [77 62500000]
 [78 66952741]
 [79 71093760]
 [80 76000000]
 [81 87109376]
 [82 88027284]
 [83 88819024]
 [84 89062500]
 [85 90625000]
 [86 93760000]
 [87 100000000]
 [88 105124922]
 [89 109376000]
 [90 128906250]
 [91 146509717]
 [92 177656344]
 [93 200500625]
 [94 212890625]
 [95 250000000]
 [96 250050005]
 [97 289062500]
 [98 370156212]
 [99 376000000]]

এটি কোনও মান সমর্থন করতে সক্ষম হওয়া উচিত n; এটি সমাপ্ত হওয়ার জন্য আপনি অপেক্ষা করতে ইচ্ছুক হন (ক্রমানুসারে 50 তম থেকে 100 ম পূর্ণসংখ্যার সন্ধান 15 মিনিটের মতো হয়ে গেছে)। Clojure নির্বিচারে বড় পূর্ণসংখ্যার গাণিতিক সমর্থন করে, সুতরাং একবার সংখ্যাগুলি বিশাল আকার পেতে শুরু করলে এটি BigIntগুলি ব্যবহার শুরু করে ।


1

কাঠকয়লা , 25 বাইট

Nθ≔¹ηWθ«≦⊕η¿№I×ηηIη≦⊖θ»Iη

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। 0-ইন্ডেক্স। ব্যাখ্যা:

Nθ

ইনপুট n

≔¹η

১ থেকে শুরু করুন N(বা, এটি গণনা শুরু করতে পারে 0যা ইনপুটটিকে 1-সূচিযুক্ত করে তোলে))

Wθ«

nক্রমটিতে আমরা সংখ্যা না পাওয়া পর্যন্ত পুনরাবৃত্তি করুন ।

≦⊕η

বৃদ্ধি N

¿№I×ηηIη

যদি N*Nথাকে Nতবে ...

≦⊖θ»

... হ্রাস n

Iη

মুদ্রণ N

এটিকে আরও গল্ফ করার চেষ্টাগুলি চারকোল if..thenকমে গিয়েছিল ক) কোনও ব্লকের শেষে (যার দাম 2 বাইট) ব্যয় না করে খ) Containsঅপারেটর না থাকা (আমি আউটপুটকে রূপান্তর করে Findবা Countবুলিয়ান যা আমি nআবার ব্যয় থেকে বিয়োগ করতে পারি) 2 বাইট)।


1

সম্পাদনা (মন্তব্যের প্রতিক্রিয়া): পাইথন 2, 76 বাইট

একটি পুনরাবৃত্তির পদ্ধতিতে চেষ্টা করতে চেয়েছিল। (গল্ফিংয়ে নতুন, যে কোনও টিপস দুর্দান্ত হবে!)

def f(c,n=0):
    while 1:
        if`n`in`n*n`:
            if c<2:return n
            c-=1
        n+=1

বিএমও এবং বেদক কান্দোই উভয়কে ধন্যবাদ!


2
আপনি print(f(13))কোড গণনা করতে হবে না । এছাড়াও while 1:, if c==1:return n,c==1 can be c<2
Vedant Kandoi

আহ, আমি দেখতে পাইনি যে আপনি একটি নন-রিকার্সিভ ভার্শন, এনভিএম চেয়েছিলেন .. যাইহোক, আমি বর্তমানে not 79 নন 76 76 বাইট গণনা করছি
২৮'১৮

এবং আপনি আরও কিছু সঞ্চয় করতে পারেন: এর আগে ও পরে শূণ্যস্থানগুলি `অপ্রয়োজনীয় এবং c<2:খুব পরে একটি , এর পরে আপনি ইন্ডেন্টেশনের জন্য ট্যাব এবং স্পেসগুলি মিশ্রিত করতে পারেন ( এখানে যেমন দেখানো হয়েছে ): 69 বাইট বিটিডব্লিউ। আপনার পুরানো সংস্করণটি রাখার দরকার নেই (এটি আগ্রহীদের জন্য এটি সম্পাদনা ইতিহাসে রয়েছে) এবং কেন টিআইও (বা অনুরূপ) এর সাথে লিঙ্ক করবেন না / সেখান থেকে টেমপ্লেটটি ব্যবহার করবেন না?
ბიმო

1

হাস্কেল, 60 বাইট

([n^2|n<-[1..],elem(show n)$words=<<mapM(:" ")(show$n^2)]!!)

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

      n<-[1..]              -- loop n through all numbers starting with 1
 [n^2|        ,    ]        -- collect the n^2 in a list where
     elem(show n)           -- the string representation of 'n' is in the list
       words ... (show$n^2) -- which is constructed as follows:

            show$n^2        -- turn n^2 into a string, i.e. a list of characters
          (:" ")            -- a point free functions that appends a space
                            -- to a character, e.g.  (:" ") '1' -> "1 "
        mapM                -- replace each char 'c' in the string (n^2) with
                            -- each char from (:" ") c and make a list of all
                            -- combinations thereof.
                            -- e.g. mapM (:" ") "123" -> ["123","12 ","1 3","1  "," 23"," 2 ","  3","   "]
      words=<<              -- split each element into words and flatten to a single list
                            -- example above -> ["123","12","1","3","1","23","2","3"]

(                      !!)  -- pick the element at the given index

1

পাইথন 2 , 47 43 বাইট

-4 বাইট ডেনিসকে ধন্যবাদ (ফিরে আসার পরিবর্তে পুনরাবৃত্ত কলটিতে 1 যোগ করুন n-1)

f=lambda c,n=1:c and-~f(c-(`n`in`n*n`),n+1)

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

Explantion / Ungolfed

,এনএন1,2,3...এন ভিতরে এন2=0

# Enumerating elements of A018834 in reverse starting with 1
def f(counter, number=1):
    # Stop counting
    if counter == 0:
        return 0
    # Number is in A018834 -> count 1, decrement counter & continue
    elif `number` in `number ** 2`:
        return f(counter-1, number+1) + 1
    # Number is not in A018834 -> count 1, continue
    else:
        return f(counter, number+1) + 1



1

লুয়া , 137 123 79 বাইট

@ ধন্যবাদ জো জো কিং 44 বাইটের জন্য

n=io.read()i=0j=0while(i-n<0)do j=j+1i=i+(n.find(j*j,j)and 1or 0)end
print(j*j)

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


79 বাইট । কিছু জেনেরিক টিপস; false/trueহতে পারে 0>1/ 0<1, বন্ধনীগুলি ifs এবং whiles এর জন্য প্রয়োজনীয় নয় , আপনি সংখ্যার পরেও বেশিরভাগ সাদা স্থান সরিয়ে ফেলতে পারেন (এমনকি নিউলাইনও)।
জো কিং


0

পরিপাটি , 24 বাইট

{x:str(x)in'~.x^2}from N

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

একটি অলস তালিকা প্রদান করে, যখন কোনও ফাংশনের মতো ডাকা হলে nসিরিজের তম উপাদানটি দেয় returns

ব্যাখ্যা

{x:str(x)in'~.x^2}from N
{x:              }from N       select all natural numbers `x` such that
   str(x)                      the string representation of `x`
         in                    is contained in
           '~.x^2              "~" + str(x^2)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.