অদেখা সংখ্যা তৈরি করুন


15

আমাদের বলুন একটি স্ট্রস্ট্রিং মূল স্ট্রিংয়ের যে কোনও ধারাবাহিক বিভাগ। উদাহরণস্বরূপ catএকটি সাবস্ট্রিং concatenate। আমরা বলব যে একটি যথাযথ সাবস্ট্রিং হ'ল একটি স্ট্রিং যা মূল স্ট্রিংয়ের সমান নয়। উদাহরণস্বরূপ concatenateএকটি সাবস্ট্রিংconcatenate কিন্তু সঠিক সাবস্ট্রিং নয়। (একক অক্ষরের স্ট্রিংগুলিতে কোনও সঠিক সাবস্ট্রিং নেই)

আমরা এখন এই পদগুলি ব্যবহার করে একটি ক্রম সংজ্ঞায়িত করব। এন ম মেয়াদ এই ক্রম ক্ষুদ্রতম সংখ্যাকে বাইনারি প্রতিনিধিত্ব যথাযথ সাবস্ট্রিং যে ক্রম যে কোন আগেই মেয়াদ একটি সাবস্ট্রিং নয় যেমন যে থাকবে। প্রথম পদটি হয় 10

অনুশীলন হিসাবে প্রথম 5 পদ উত্পন্ন করতে দেয়। জিনিসগুলি সহজ করার জন্য আমি বাইনারিটিতে কাজ করব।

প্রথম পদটি হয় 10। যেহেতু 11, পরবর্তী সবচেয়ে ছোট সংখ্যা, শুধুমাত্র এক সঠিক সাবস্ট্রিং রয়েছে 1যা একটি সাবস্ট্রিং 10, 11ক্রমানুসারে নয়। 100তবে সঠিক সাবস্ট্রিং রয়েছে 00যার একটি সাবস্ট্রিং নয় 10তাই 100আমাদের পরবর্তী শব্দ। এরপরে 101এটি অনন্য যথাযথ 01স্তরটিকে ক্রমটিতে যুক্ত করে, তারপরে 110যথাযথ সাবস্ট্রিং রয়েছে 11যা এটি ক্রমটিতে নতুন যুক্ত করছে।

এখন আমাদের আছে

10, 100, 101, 110

111পরবর্তী আপ হয় কিন্তু এটি শুধুমাত্র সাবস্ট্রিং রয়েছে 1এবং 11এটি তৈরি একটি শব্দ নয়। 1000তবে 000এটি ক্রমের সাথে যুক্ত করে।

দশমিক দশমিক প্রথম দম্পতি এখানে

2, 4, 5, 6, 8, 9, 10, 11, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50, 54, 56, 58

কার্য

উভয় ক্ষেত্রেই

  • নিন এন ইনপুট হিসাবে এবং উৎপন্ন এন ম মেয়াদ এই ক্রমানুসারে (হয় 0 বা 1 সূচীবদ্ধ)

  • ক্রমাগত আউটপুট শর্তাবলী

এটি উত্তরগুলি কম বাইট ভাল হওয়ার সাথে বাইটে স্কোর হয়।


আউটপুট দশমিক বা বাইনারি হওয়ার কথা? কিংবা?
অ্যাডমবর্কবার্ক

@ অ্যাডমবার্কবার্ক আমার মনে হয় এটি পূর্ণসংখ্যা হওয়ার কথা।
এরিক আউটগল্ফার

100 তম শব্দটি (বা অন্য কোনও বৃহত n) যুক্ত করতে পারবেন?
রড

@ অ্যাডমবর্কবার্ক আপনার যে কোনও স্ট্যান্ডার্ড অনুমোদিত বিন্যাসে আউটপুট করা উচিত।
পোস্ট রক গার্ফ হান্টার

@ রড 36 কি যথেষ্ট বড়? a(36)47 (1 ইনডেক্সড)।
পোস্ট রক গার্ফ হান্টার

উত্তর:


5

পাইথন 3 , 88 80 78 75 বাইট


-উইট উইজার্ড -২ বাইট ধন্যবাদ রুট টো
-৩ বাইট ধন্যবাদ নটজাগানকে

s={0}
n=1
while 1:n+=1;b=f"{n:b}";p={b[1:],b[:-1]};s|=p-s and{b,print(n)}|p

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




@ হোয়াইট উইজার্ড নিনজা'ড
রড

পাইথন ৩.6-এ, প্রতিস্থাপন করে আপনি আরও 2 টি সঞ্চয় করতে পারেন bin(n)[2:] সঙ্গে f"{n:b}"
রুটটো দুই

কিছু সত্যই অদ্ভুত পরিবর্তন সহ -3 বাইট
notjagan


1

গণিত, 116 110 বাইট tes

x={};f=Subsequences[#~IntegerDigits~2]&;Do[MemberQ[Most@f@n,s_/;FreeQ[f/@x,s,2]]&&x~AppendTo~Echo@n,{n,2,∞}]

অসীমভাবে ক্রমের শর্তাবলী আউটপুট করে।

ব্যাখ্যা

x={};

x এখন পর্যন্ত ক্রমের শর্তগুলির তালিকা।

f=Subsequences[#~IntegerDigits~2]&

fএটি একটি Functionযা পূর্ণসংখ্যা নেয় এবং এর সমস্ত Subsequencesবেস 2উপস্থাপনা (খালি তালিকা {}এবং সম্পূর্ণ তালিকা সহ) প্রদান করেIntegerDigits ) করে।

Do[...,{n,2,∞}]

মূল্যনির্ধারণ ...মূল্য জন্য nথেকে 2থেকে

...&&x~AppendTo~Echo@n

যদি ...হয় False, তবে And( &&) এর দ্বিতীয় যুক্তিটি কখনই মূল্যায়ন হয় না। যদি ...তা হয় True, তবে Echo@nমুদ্রণ করে এবং ফিরে আসে n, যা আমরা তারপরে AppendToতালিকাটিx

MemberQ[Most@f@n,s_/;FreeQ[f/@x,s,2]]

আমরা যাচাই করতে চাই যে কিছু যথাযথ সাবস্ট্রিং nক্রমানুসারে কোনও পূর্বের পদটির একটি স্ট্রিং নয়। Most@f@nযথাযথ সাবস্ট্রিং তালিকা n, তারপর আমরা পরীক্ষা কোনো সাবস্ট্রিং আছে কিনা s_যা হয় MemberQযে তালিকার যেমন যে তালিকা f/@xক্রম-এর পূর্ববর্তী পদ সাবস্ট্রিং তালিকা রয়েছে FreeQএর sপর্যায়ে 2


1

গণিত, 109 94 বাইট

s={};Do[!SubsetQ[s,(t=Subsequences@IntegerDigits[i,2])[[2;;-2]]]&&(s=s~Join~t;Echo@i),{i,∞}]


ক্রমাগত আউটপুট শর্তাবলী

-15 বাইটের জন্য @ এনজেনিসিসের বিশেষ থেক্স


গণিত, 123 বাইট tes

(s=r={};For[i=2,i<2#,i++,If[!ContainsAll[s,(t=Subsequences@IntegerDigits[i,2])[[2;;-2]]],s=s~Join~t;r~AppendTo~i]];r[[#]])&


এনটিকে ইনপুট হিসাবে ধরুন এবং এই ক্রমটিতে নবম পদটি উত্পন্ন করুন (1 ইনডেক্সড)

ইনপুট

[1000]

আউটপুট

1342


এতক্ষণে যে সাবস্ট্রিংগুলি প্রদর্শিত হয়েছে তার উপর নজর রাখা ভাল ধারণা! আমি 15যেতে পারে এমন কমপক্ষে বাইটগুলি গুপ্তচর করি : এর SubsetQচেয়ে ছোট এবং সমান ContainsAll, আপনি তার Andপরিবর্তে ব্যবহার করতে পারেন If, এটি Unionঅপ্রয়োজনীয়, এবং Doপ্রায় সর্বদা সংক্ষিপ্ত For:s={};Do[!SubsetQ[s,(t=Subsequences@IntegerDigits[i,2])[[2;;-2]]]&&(s=s~Join~t;Echo@i),{i,∞}]
নেজেনিসিস

3আরও বাইট ব্যবহার করে Most:s={};Do[!SubsetQ[s,Most[t=Subsequences@IntegerDigits[i,2]]]&&(s=s~Join~t;Echo@i),{i,2,∞}]
নেজেনিসিস

0

পাইথ , 20 বাইট

u+G
fP-Fm.:.Bd)+TG1Y

এটি সীমাকে অসীমভাবে মুদ্রণ করে। এটি কেবল ফলাফল হিসাবে অফলাইনে ব্যবহার করা যেতে পারে।

ব্যাখ্যা (স্থানটি একটি নতুন লাইন):

u+G fP-Fm.:.Bd)+TG1Y
u                  Y    Apply the following function to the previous output
                        until it stops changing (or forever, in this case),
                        starting with the empty list
    f             1     Find the first positive integer where
               +TG      The integer prepended to the current list
        m               Map to
           .Bd          Convert to binary
         .:   )         Form all subsequences
      -F                Fold the filter-out function over the list
                        This iteratively removes all subsequences already seen
                        from the candidate
     P                  Remove the last subsequence which is the whole number.
   (newline)            Print that first integer
 +G                     Prepend that first integer to the list


0

Haskell,, 172 বাইট

import Data.List
b 0=""
b n=b(n`div`2)++(show$n`mod`2)
s=nub.(tails=<<).inits
p x=s x\\[x]
n(_,l)x|(p.b)x\\l/=[]=(x,l++(s.b)x)|1<2=(0,l)
filter(>1)$fst<$>scanl n(1,[])[1..]

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

ব্যাখ্যা

কোড ক্রমাগত ক্রম উত্পন্ন করে।

  • bএকটি Intহিসাবে বাইনারি উপস্থাপনা প্রদান করেString
  • s একটি স্ট্রিংয়ের সমস্ত সাবস্ট্রিংগুলি প্রদান করে
  • p স্ট্রিংয়ের সমস্ত যথাযথ সাবস্ট্রিংগুলি প্রদান করে
  • n এটি এমন একটি ফাংশন যা পুনরাবৃত্তভাবে প্রয়োগ করা হয় এবং এতে একটি টিউপল থাকে:
    • বর্তমান উপাদান, যদি এটি ক্রমের সদস্য হয়, অন্যথায় 0
    • নিম্নলিখিত সমস্ত সংখ্যার জন্য চেক করতে সমস্ত সাবস্ট্রিংয়ের একটি তালিকা
  • অবশেষে, বারবার scanlকল করতে ব্যবহৃত nহয় এবং এর আউটপুটটি কেবল 1 টিরও বেশি উপাদানগুলিতে ফিল্টার করা হয়

গল্ফ করার আগে এখানে আরও কিছু পাঠযোগ্য সংস্করণ:

import Data.List

binary :: Int -> String
binary 0=""
binary n|(d,r)<-divMod n 2=binary d++["01"!!r]

substrings :: String -> [String]
substrings xs = nub$inits xs>>=tails

properSubstrings :: String -> [String]
properSubstrings xs = substrings xs\\[xs]

sb  = substrings.binary
psb = properSubstrings.binary

g = scanl step (1,[]) [1..]
  where step (_,l) x | psb x \\ l /= [] = (x,l++sb x)
                     | otherwise        = (0,l)

f=filter(>1)$fst<$>g

0

জাভাস্ক্রিপ্ট, 57 বাইট

for(x=1;;x++)/^10|10(00)*$/.test(x.toString(2))&&alert(x)

আমরা প্রদত্ত সংখ্যার লিখতে শুরু করা যাক এন বাইনারি ফর্ম, তারপর:

  • সংখ্যা দিয়ে শুরু হয় হয়, তাহলে 10, এন ক্রমানুসারে আবশ্যক:
    • এর মধ্যে প্রথমটি সরিয়ে ফেলুন 1, বাকি বাইনারি স্ট্রিংটি অবশ্যই দেখা উচিত নয়, যেহেতু n হ'ল সংক্ষিপ্ত সংখ্যা যেখানে এর মধ্যে স্ট্রিং থাকতে পারে
  • যদি নম্বরটি শুরু হয় 11:
    • এর মধ্যে প্রথমটি সরিয়ে 1, অবশিষ্ট বাইনারি স্ট্রিং ( 1xযেহেতু এটি অবশ্যই দেখা উচিত হিসাবে এটি দান করি :
      • সংখ্যাটি 1xক্রম হয়, বা
      • সংখ্যাটি 1x0ক্রমযুক্ত, যেহেতু এটিতে অনন্য সাব স্ট্রিং রয়েছে1x
    • যদি এটি বিজোড় হয় (1 দিয়ে শেষ হয়) তবে এটি অবশ্যই ক্রমযুক্ত হবে না:
      • ( এন - 1) / 2 ক্রমানুসারে, বা
      • ( n - 1) অনুক্রমের, যেহেতু এটিতে অনন্য সাব স্ট্রিং রয়েছে ( এন - 1) / 2
    • এটি যদি সমান হয় (0 দিয়ে শেষ হয়) তবে এটি অনুক্রমের মধ্যে থাকলে if / n / 2 ক্রমিকায় নেই
      • একই ধারণা সঙ্গে, এন / 2 হয় না ক্রমানুসারে iff এন / 2 বিজোড় হয়, অথবা এন / 4 ক্রম হয়

উপসংহার:

সংখ্যার বাইনারি ফর্মটি বিজোড় সংখ্যার দ্বারা শুরু হয় 10বা শেষ হয় । অথবা রেজেক্সে বর্ণিত: এক্স ম্যাচ ।10/^10|10(00)*$/

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