পূর্বে লিখুন, পরিশেষে যোগ-সিকোয়েন্স


14

কার্য

প্রিপেন্ড, অ্যাপেন্ড-সিকোয়েন্সটি পুনরাবৃত্তভাবে সংজ্ঞায়িত করা হয়, এটির মতো

  • a (1) = 1
  • a (n) = a (n-1) .n, যদি n হয় হয়
  • a (n) = na (n-1), যদি n বিজোড় হয়

যেখানে। একটি পূর্ণসংখ্যার সংমিশ্রণ উপস্থাপন করে।

সুতরাং প্রথম কয়েকটি শর্তাবলী: 1,12,312,3124,53124,531246,7531246,...এটি A053064

আপনার কাজ, পূর্ণসংখ্যা একটি দেওয়া হয় একটি> 0 ফিরতে এন , যেমন যে এন শুরুতে যোগ ম উপাদান পরিশেষে যোগ-সিকোয়েন্স সমান একটি এবং এই ধরনের কোন যদি এন রিটার্ন 0, একটি ঋণাত্মক সংখ্যা বা ত্রুটি খুঁজে ইত্যাদি বিদ্যমান

বিধি

  • ইনপুটটিকে পূর্ণসংখ্যা, স্ট্রিং, অক্ষরের তালিকা / অঙ্কগুলির তালিকা হিসাবে নেওয়া যেতে পারে etc.
  • আউটপুট STDOUT এ প্রিন্ট করা যায় বা ফিরে পাওয়া যায় (পূর্ণসংখ্যা, স্ট্রিং ইত্যাদি ভাল)
  • অবৈধ ইনপুট উপর & ঘটনা এ ধরনের কোন এন আপনার প্রোগ্রাম কিছু করতে কিন্তু একটি ধনাত্মক পূর্ণসংখ্যা ফেরত দিতে পারেন বিদ্যমান (যেমন। লুপ চিরকাল ফিরে 0 ইত্যাদি)
  • আপনি 0-সূচি ব্যবহার করতে বেছে নিতে পারেন, তবে তারপরে এন-এর উপস্থিতি না থাকলে 0 হতে পারে না

পরীক্ষার মামলা

1 -> 1
12 -> 2
21 -> 0
123 -> 0
312 -> 3
213 -> 0
211917151311975312468101214161820 -> 21
2119171513119753102468101214161820 -> 0
333129272523211917151311975312468101214161820222426283031 -> 0
999795939189878583817977757371696765636159575553514947454341393735333129272523211917151311975312468101214161820222426283032343638404244464850525456586062646668707274767880828486889092949698100 -> 100

আরও আনুষ্ঠানিক: a(n-1)*(int(log(n))+1)+nএবং n*(int(log(n))+1)+a(n-1)?
মিস্টার এক্সকোডার 16

1
@ মিঃ এক্সকোডার আমি এটিকে কম আনুষ্ঠানিক বলব : পি
পোস্ট রক গার্ফ হান্টার

@ জোনাথান অ্যালান এটি ইতিমধ্যে 10 মিনিটের জন্য প্রশ্নে রয়েছে।
মিঃ এক্সকোডার

2
আমি অবৈধ ইনপুটগুলির জন্য ত্রুটিগুলি অনুমোদনের পরামর্শ দিই।
ব্যবহারকারী 41805

আমি অবৈধ ইনপুটগুলির জন্য অপরিজ্ঞাত আচরণের অনুমতি দেওয়ার পরামর্শ দিই।
মিঃ এক্সকোডার

উত্তর:


6

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

স্ট্রিং হিসাবে ইনপুট নেয়। কোনও সূচক না পাওয়া গেলে পুনরাবৃত্তি ত্রুটি ছুড়ে দেয়।

f=(n,s=k='1')=>n==s?k:f(n,++k&1?k+s:s+k)

ডেমো


আমি মনে করি আপনি এটি দিয়ে একটি বাইট সংরক্ষণ করতে পারেন: f=(n,s=k='1')=>n-s?f(n,++k&1?k+s:s+k):k
রিক হিচকক

@ রিকহিচকক দুর্ভাগ্যক্রমে, এটি সংখ্যাকে তুলনা করতে বাধ্য করবে এবং নির্ভুলতার ক্ষতি হওয়ার কারণে বড় ইনপুটগুলিতে মিথ্যা ইতিবাচক ভূমিকা রাখবে।
আর্নল্ড

Gotcha। এটি পরীক্ষার ক্ষেত্রে কাজ করে তবে এটি অন্যান্য পরিস্থিতি কীভাবে পরিচালনা করবে তা নিয়ে অনিশ্চিত ছিল।
রিক হিচকক

6

সি # (.নেট কোর) , 83, 80, 60 59 বাইট

n=>{int i=0;for(var t="";t!=n;)t=++i%2<1?t+i:i+t;return i;}

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

ল্যাম্বদা ফাংশনে স্ট্রিং হিসাবে ইনপুট নেয়। 1-ইন্ডেক্স। সত্যের জন্য মানের সূচক ফেরত দেয় বা একটি "ভুয়া" জন্য অসীমভাবে লুপ করে


6

পাইথন 2 , 63 বাইট

-1 বাইট @ ইরিকথ আউটগল্ফারকে ধন্যবাদ ।

f=lambda x,i='1',j=2:i!=`x`and f(x,[i+`j`,`j`+i][j%2],j+1)or~-j

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

পাইথন 2 , 64 বাইট

-Ffeialaimm এর জন্য -18 বাইট ধন্যবাদ , কারণ আমি খেয়াল করি না যে ভ্রান্তির বাইরে যাওয়ার অনুমতি দেওয়া হয়েছিল!

x,i,j=input(),'1',1
while i!=x:j+=1;i=[i+`j`,`j`+i][j%2]
print j

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

পাইথন 2 , 82 বাইট (চিরকাল লুপ হয় না)

এইটি 0অবৈধ ইনপুটগুলির জন্য ফেরত দেয় ।

def f(n,t="",i=1):
 while len(t)<len(n):t=[t+`i`,`i`+t][i%2];i+=1
 print(n==t)*~-i

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



@officialaimm অনেক ধন্যবাদ! আমি ভুল করে আউট / লুপটি চিরতরে অনুমোদিত বলে খেয়াল করিনি।
মিঃ এক্সকোডার

একটি ল্যাম্বডা সহ একটি বাইট সংরক্ষণ করুন:f=lambda x,i='1',j=2:i!=`x`and f(x,[i+`j`,`j`+i][j%2],j+1)or~-j
এরিক দি আউটগল্ফার

@EriktheOutgolfer অপেক্ষা করুন, সবকিছু জন্য recursion ত্রুটি ছোঁড়া, যদিও আমি সেট sys.setrecursionlimit()। আপনি একটি টিও প্রদান করতে পারেন?
মিঃ এক্সকোডার 18

@ মিঃ এক্সকোডার এটির জন্য কোনও ত্রুটি ফেলে x=1? নাকি x=12? আমি ভেবেছিলাম এটি কেবল কমপক্ষে x=151311975312468101214বা কোনও কিছুর জন্য এ জাতীয় ত্রুটি ফেলেছিল ।
এরিক দ্য আউটগল্ফার


3

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

$vDNÌNFs}«})Ik

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

ব্যাখ্যা

0-সূচকযুক্ত
রিটার্নস -1 যদি ইনপুট ক্রম নেই।

$                 # push 1 and input
 v                # for each y,N (element, index) in input do:
  D               # duplicate top of stack
   NÌ             # push N+2
     NF }         # N times do:
       s          # swap the top 2 elements on the stack
         «        # concatenate the top 2 elements on the stack
          })      # end loop and wrap in a list
            Ik    # get the index of the input in this list

হাহা, এটি মূলত আমার সমাধানটি gমুছে ফেলা এবং সংযোজন / প্রিপেন্ড জিনিসটি সংক্ষিপ্ত করে দেওয়া with আমি আমার উত্তরটি মুছে দেব
Okx

@ ওক্স: ওহ হ্যাঁ, আমি দেখতে পাচ্ছি যে আপনি আমার পোস্টের ঠিক কয়েক মিনিটের পরেই আপনার দিকে ঝাঁপিয়ে পড়েছেন। দুর্দান্ত মন;)
এমিগানা

2

আর , 73 বাইট

p=paste0;n=scan(,'');l='';while(l!=n){F=F+1;l="if"(F%%2,p(F,l),p(l,F))};F

স্টিডিনের কাছ থেকে পড়ে এবং সূচকের মান দেয় (স্পষ্টভাবে মুদ্রিত)। যখন মান ক্রমানুসারে না থাকে তখন অসীম লুপ হয়। Fডিফল্ট হয়FALSE যা 0গাণিতিক ক্ষেত্রে ব্যবহৃত হয় cast

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


1

গণিত, 135 বাইট

s=t={};x=1;While[x<5!,{s~AppendTo~#&,s~PrependTo~#&}[[x~Mod~2+1]]@x;AppendTo[t,FromDigits@Flatten[IntegerDigits/@s]];x++];t~Position~#&

1

জেলি ,  19 18  15 বাইট

+ḂḶṚm2;RḤ$ṁµ€Vi

পূর্ণসংখ্যার গ্রহণ ও ফেরত দেওয়ার জন্য একটি মোনাডিক লিঙ্ক।

এটি অনলাইন চেষ্টা করুন! (খুব ধীর - শুধু যে নিশ্চিত করতে ~ Tio উপর 50s লাগে3124সূচিতে নেই4)

একটি দ্রুত সংস্করণ জন্য ব্যবহার করুন পূর্ববর্তী 18 বাইটার (কেবলমাত্র ইনপুটটির দৈর্ঘ্য পর্যন্ত চেক করা হবে)।

কিভাবে?

+ḂḶṚm2;RḤ$ṁµ€Vi - Link: number, v
           µ€   - perform the monadic link to the left for €ach k in [1,2,3,...v]
                -                 (v can be big, lots of k values makes it slow!)
 Ḃ              -   modulo k by 2  = 1 if odd 0 if even
+               -   add to k = k+isOdd(k)
  Ḷ             -   lowered range = [0,1,2,...,k+isOdd(k)]
   Ṛ            -   reverse = [k+isOdd(k),...,2,1,0])
    m2          -   modulo slice by 2 = [k+isOdd(k),k+isOdd(k)-2,...,3,1]
         $      - last two links as a monad:
       R        -   range(k) = [1,2,3,...,k]
        Ḥ       -   double = [2,4,6,...,2k]
     ;          - concatenate = [k+isOdd(k),k+isOdd(k)-2,...,3,1,2,4,6,...,2k]
         ṁ      - mould like range(k) = [k+isOdd(k),k+isOdd(k)-2,...,3,1,2,4,6,...,k-isOdd(k)]
                -   (this is a list of the integers to be concatenated for index k)
             V  - evaluate as Jelly code (yields a list of the concatenated integers)
              i - first index of v in that (or 0 if not found)

গণনা করতে কত সময় লাগবে 211917151311975312468101214161820?
Okx

একটি দীর্ঘ, দীর্ঘ সময়: পি
জোনাথন অ্যালান

হ্যাঁ, তবে আর কত দিন?
Okx

দেখতে দেখে মনে হচ্ছে এটি v স্কোয়ারের অর্ডার যেখানে v ইনপুট পূর্ণসংখ্যা।
জোনাথন অ্যালান

@JonathanAllan টেকনিক্যালি আপনি যে কল পি:
এরিক Outgolfer

1

সুইফট 4 , 92 বাইট

এটি অবৈধ মামলাগুলির জন্য অসীমভাবে লুপ করে, তাই আমি এগুলি পরীক্ষার লিঙ্কে অন্তর্ভুক্ত করি না।

func f(x:String){var i="1",j=1;while i != x{j+=1;i=[i+String(j),String(j)+i][j%2]};print(j)}

পরীক্ষা স্যুট.

মজাদারভাবে, এটি বন্ধের সাথে আরও দীর্ঘ:

var f:(String)->Int={var i="1",j=1;while i != $0{j+=1;i=[i+String(j),String(j)+i][j%2]};return j}

পরীক্ষা স্যুট.


1

হাস্কেল , 115 85 বাইট

s=read.(show=<<)
f 1=1
f x|odd x=s[x,f$x-1]
f x=s[f$x-1,x]
g x=[n|n<-[1..],x==f n]!!0

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


@ ব্রুসফোর্ট আমি আপনার পরামর্শের জন্য 30 টি ধন্যবাদ সংরক্ষণ করতে পেরেছি।
পোস্ট রক গার্ফ হান্টার


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