উত্থানের পুনরায় সেট এবং পুনরায় সেট করার এন-তম শব্দ


37

( কোডিংএমে.কম এ একটি মাল্টিপ্লেয়ার গেম (কোডের সংঘাত) থেকে নেওয়া চ্যালেঞ্জ )

চ্যালেঞ্জ

এই এন নিম্নলিখিত ক্রম -th শব্দ: 1, 1, 2, 1, 2, 3, 1, 2, 3, 4...বা, এটি আরো সুস্পষ্ট করা,{1}, {1,2}, {1,2,3}, {1,2,3,4}...

ক্রমটি 1 থেকে x থেকে শুরু করে, 1 থেকে শুরু করে, অসীমের সমস্ত পথ পর্যন্ত তৈরি হয় ence

বিধি / আইও

ইনপুট এবং আউটপুট যেকোন বিন্যাসে থাকতে পারে, যতক্ষণ না এটি স্বতন্ত্র। ইনপুট যে কোনও উপযুক্ত উত্স থেকে নেওয়া যেতে পারে: এসটিডিএন, ফাইল ইত্যাদি ...

ইনপুট 0- বা 1-ইনডেক্সড হতে পারে এবং নির্বাচিত সূচীটি অবশ্যই পোস্টে উল্লেখ করা উচিত

আপনাকে অন্তত 255 টি ফলাফল সহ হ্যান্ডেল করতে হবে (যার অর্থ 0-সূচকযুক্ত সর্বোচ্চ ইনপুট 32640)। আপনার ভাষা যদি এটি সমর্থন করে তবে তার যে কোনও কিছুই হ্যান্ডল করতে হবে।

এটি code-golfতাই সংক্ষিপ্ততম বাইট গণনা জয়!

পরীক্ষার কেস (0-ভিত্তিক সূচক)

0 -> 1
1 -> 1
5 -> 3
10 -> 1
59 -> 5
100 -> 10
1001 -> 12


4
আপনি সম্ভবত আরো কয়েকটি বড় পরীক্ষার বিষয় (যোগ করা উচিত 59, 100ইত্যাদি)
FlipTack


বিপরীতে এটি চ্যালেঞ্জ। সেই চ্যালেঞ্জের সেরা উত্তরগুলি এমনভাবে কাজ করে যা বিপরীত হতে পারে না। @
জারকো

@ দেবরিচার আমি জানি, এটি কেবল সেখানে রেখে দেওয়া হয়েছে এবং এটি নেতিবাচকভাবে বোঝানো হয়নি। সেখানে আমার নিজের উত্তরটি ছিল আসলে বিপর্যয়কর। সম্পর্কিত! = সদৃশ
জেএডি

উত্তর:


5

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

প্রোগ্রামটি 0-ইনডেক্সড, কোড:

ÌLL¹è

ব্যাখ্যা:

Ì       # Double increment the input
 LL     # List of list on the input
   ¹è   # Get nth element

সিপি -1222 এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!


GNG¹¾¼QiNএটি একটি পুনরাবৃত্তি পদ্ধতির, তবে এটি ছিল স্মার্ট।
ম্যাজিক অক্টোপাস উরান

13

হাস্কেল , 27 26 বাইট

([z|k<-[1..],z<-[1..k]]!!)

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

ধন্যবাদ @ ড্যানড -1 বাইটের জন্য!

এটি একটি বেনামী ফাংশন, অসীম অনুক্রম তৈরি করার সময় একটি মাত্র ফিরে nউহার -th উপাদান: [[1..k]| k<-[1..]]তালিকা অসীম তালিকা উত্পাদন করে: [[1],[1,2],[1,2,3],[1,2,3,4],...]। এগুলি বোঝাতে আমরা লিখতে পারি [z|k<-[1..],z<-[1..k]]যা ফলাফল [1,1,2,1,2,3,1,2,3,4,...]এবং অবশেষে (...!!)ইনপুট গ্রহণ করে n(অর্থহীন স্বরলিপি) এবং nতৃতীয় পদ (0-ভিত্তিক) প্রদান করে।


প্রতিস্থাপন করা হচ্ছে concatআরো ধী সঙ্গে মাত্র 1 বাইট সংরক্ষণ: ([z|k<-[1..],z<-[1..k]]!!)
ড্যান ডি

12

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

-1 বাইট ধন্যবাদ আর্নল্ডকে!

f=(n,m)=>n++<m?n:f(n+~m,-~m)

ওইআইএস-এ পাওয়া 0-সূচিযুক্ত পুনরাবৃত্ত সূত্র ব্যবহার করে।

প্রত্যাশার মতো 1 টি আর্গুমেন্টের সাথে ডাকা হলে, দ্বিতীয়টির ডিফল্ট মান mহবে undefined। তবে, -~undefined1 প্রদান করে, যা আমাদের m = 1আর্গুমেন্ট তালিকায় একটি স্পষ্ট ছাড়াই পুনরাবৃত্তি ঘূর্ণায়মান করতে দেয় (ধন্যবাদ @ আর্নাউল্ড!)

পরীক্ষার স্নিপেট:

f=(n,m)=>n++<m?n:f(n+~m,-~m)

let examples = [0, 1, 5, 10, 15, 1000];

examples.forEach(function log(x) {
    console.log(x, " => ", f(x))
});


বিকল্পভাবে, একই বাইট গণনার জন্য, আমরা এর মতো কারিড ফাংশন রাখতে পারি:

f=n=>m=>n++<m?n:f(n+~m)(-~m)

আপনি f(5)()এটি দিয়ে কল করতে পারেন - এটি একটি ফাংশন দেয়, যা ডাকা হলে ফলাফলটি ফেরত দেয়, যেমনটি এই মেটা পোস্টে বর্ণিত ।


9

জেলি , 5 বাইট, 1-ইনডেক্সড

RRF³ị

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

ব্যাখ্যা:

                                      (Assume N = 4 for the examples)
R      Generate a list of 1 to N      [1, 2, 3, 4]
 R     Generate new lists for each item on the previous list, with that item as N
                                      [[1], [1,2], ...]
  F    Flatten that list              [1, 1, 2, 1, 2, 3 ...]
   ³ị  Use the input number (³) as index (ị) on the list. 
       This is one-based:             [1, 1, 2, 1, 2, 3 ...] 
                                                ^

8

অক্টাভা, 39 বাইট

@(z)z-(n=ceil((8*z+1)^.5/2-.5))*(n-1)/2

1- ভিত্তিক সূচক

ব্যাখ্যা:

এই ক্রমটি বিবেচনা করুন:

1   1   2   1   2   3   1   2   3   4   1   2   3   4   5

যদি আমরা আমাদের উপ-অনুচ্ছেদের উপাদানগুলির সংখ্যা গণনা করি

1   2        3          4               5         

সুতরাং ত্রিভুজাকার সংখ্যার জন্য গাউস সূত্র ব্যবহার করে আমরা z এর জন্য একটি সূত্র তৈরি করতে পারি:

z=n*(n+1)/2

এটি একটি চতুর্ভুজ সমীকরণ যদি আমরা আমাদের n এর জন্য এটি সমাধান করি

n=(sqrt(8*z+1)-1)/2

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


7

হাস্কেল, 25 24 বাইট

(!!)$[1..]>>= \x->[1..x]

ব্যবহারের উদাহরণ: ((!!)$[1..]>>= \x->[1..x]) 10-> 1এটি অনলাইন চেষ্টা করুন!

অজানা তালিকায় 1-থেকে-এক্স ফাংশন \x->[1..x](বিল্ট- enumFromTo 1ইনটি একটি বাইট আরও দীর্ঘ হয়) এর বেনামে মেক-এ-তালিকা-এর মানচিত্র তৈরি করে [1..]এবং ফলাফলগুলি তালিকাগুলিকে একক তালিকায় সংযুক্ত করে। !!নবম উপাদান বাছাই করে।

একটি বাইট জন্য @ ফ্লোয়ার ধন্যবাদ।


আমি মনে করি আপনি এটি ব্যবহার করে সংক্ষিপ্ত করতে পারেন (!!)$[1..]>>= \x->[1..x]। কখনও কখনও আমি সত্যিই ইচ্ছুক লেখার একটি ছোট অর্থহীন উপায় ছিল \x->[1..x]:)
flawr

PS: আপনি অনলাইনে চেষ্টা করে দেখুন না কেন ! লিঙ্ক সরাবেন?
flawr

@ ফ্লোয়ার: ভাল দাগ, ধন্যবাদ! অনলাইনে এটি চেষ্টা করুন জিএইচসি (বা প্রিলিওড) এর একটি পুরানো সংস্করণ এবং বেশিরভাগ উত্তর ব্যবহার করুন <$>যা সুযোগ নেই। আপনি কি কোনও অনলাইন হাস্কেল সংকলক / দোভাষীর সাথে পরিচিত হন যেটি নতুন সংস্করণটি ব্যবহার করে? haskell.org কেবলমাত্র প্রকাশের অনুমতি দেয় এবং আপনি প্রবেশ করা কোডটির লিঙ্ক তৈরি করতে পারবেন না।
নিমি

1
আহ, আমি @ ডেনিসকে এটি আপডেট করতে বলি , তিনি টিআইও এর নির্মাতা :)
ফ্ল্যাওয়ার

6

অক্টাভা , 39 বাইট

@(n){v=1:n,A=triu(v'+0*v),A(A>0)(n)}{3}

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

এটি বিকল্প পদ্ধতির ব্যবহার করে।

যেমন জন্য n=1এই A=triu(v'+0*v)ম্যাট্রিক্স সৃষ্টি

1   1   1   1
0   2   2   2
0   0   3   3
0   0   0   4

সমস্ত শূন্য উপাদানগুলি সরানোর সময় এবং কলামগুলি সংযুক্ত করার পরে A(A>0)আমরা ক্রমটি পাই:

1   1  2  1  2  3  1  2  3  4

তারপরে এটি কেবল nএই অনুক্রমের -১ র্থ পদটি ছড়িয়ে দেওয়ার বিষয় ।


5

পাইথন , 39 36 বাইট

-3 বাইট ধন্যবাদ ডেনিসকে!

একটি পুনরাবৃত্ত ল্যাম্বদা যা 1-ভিত্তিক সূচক ব্যবহার করে।

f=lambda n,m=1:n*(n<=m)or f(n-m,m+1)

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

আমরা ব্যবহার করে বর্তমান "বৃদ্ধি" আকারের উপর নজর রাখি m। যদি এর nচেয়ে ছোট বা সমান হয় mতবে এটি বর্তমান "উত্থানের" মধ্যে ফিট করে এবং তাই আমরা এটিকে ফিরিয়ে দিই। যাইহোক, যদি এটি এর চেয়ে বড় হয় তবে mআমরা m1 টি যোগ করার চেয়ে mফাংশনটিকে পুনরাবৃত্তভাবে কল করার চেয়ে (পরবর্তী উত্থানে এগিয়ে যাচ্ছি) তার থেকে দূরে সরে যাই ।


5

আর, 25 বাইট

i=scan();sequence(1:i)[i]

সূচকটি 1-ভিত্তিক।


আমি আজ হোমপেজে এটি দেখতে পেয়েছি, কেউ sequenceউত্তর জমা দিয়েছিল কিনা তা ভেবে অবাক হয়েছিল এবং এটি দেখে খুশি হয়েছিল।
জিউসেপ

4

পাইথ , 6 5 বাইট

1 বাইট সংরক্ষিত @ দ্য বাইকিংভিकिंगকে ধন্যবাদ !

@s._S

এটি 0-ভিত্তিক সূচক ব্যবহার করে।

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

ব্যাখ্যা

@          Index with implicit input into
   ._      all prefixes of
     S     1-based range of implicit input
 s         concatenated into an un-nested list

নিস! আপনি প্রতিস্থাপন করতে পারেন .nসঙ্গে s
দ্য বাইকিংভিাইকিং

@ দ্য বাইকিংভাইকিং ধন্যবাদ!
লুইস মেন্ডো

4

গণিত, 27 24 বাইট

তিনটি বাইটের জন্য @ মার্টিনইেন্ডারকে ধন্যবাদ!

((r=Range)@r@#<>1)[[#]]&

1-ইন্ডেক্স। এটি ত্রুটিগুলি ছুঁড়ে দেয় যা উপেক্ষা করা নিরাপদ।

ব্যাখ্যা

((r=Range)@r@#<>1)[[#]]&
  r=Range                 (* Store Range function in r *)
           r@#            (* Create list {1..n} *)
 (r      )@               (* For each element, generate {1..n} *)
              <>1         (* Join the lists and append a 1; throws errors *)
(                )[[#]]&  (* Take the nth element *)

2
Join@@((r=Range)@r@#<>1)[[#]]&
মার্টিন এন্ডার

@ মার্টিনএেন্ডার ওওহ, সত্য যে StringJoinমূল্যায়ন করা হয় না তা অপব্যবহার ... আমি এটি পছন্দ করি
JWHwan মিন

4

brainf * ck, 78 বাইট

,>+<[>[->>+>+<<<]>>>[-<<<+>>>]<<+[->->+<<]>[<<->>>[-<<+>>]<[-]]>[-]<<<+<-]>>+.

বর্ধনের মান হিসাবে ইনপুট (0-ভিত্তিক) এবং আউটপুট নেয়।

আপনি এটি এখানে পরীক্ষা করতে পারেন

ইনপুটটির \দশমিক সংখ্যা পূর্বে প্রয়োজন (যেমন \1010 এর জন্য)। যদি আউটপুট মুদ্রণযোগ্য ASCII অক্ষর হয় তবে আপনার এটি দেখা উচিত। অন্যথায়, ভিউ মেমরি হিট করুন -> চূড়ান্ত ডাম্প। যে মুদ্রণটি মুদ্রিত হয়েছিল তা তৃতীয় কক্ষে (ঘর সংখ্যা 2) রয়েছে।

ব্যাখ্যা:

সেল 0 (ইনপুট): ইনপুট এবং লুপের মাধ্যমে প্রতিবার আমার 1 হ্রাস করা হয়।

সেল 1 (রিসেট): প্রতিবার 1 টি দ্বারা বৃদ্ধি যখন এটি TERM এর সমান। এটি করার জন্য, লুপের মাধ্যমে প্রতিবার আমরা 1 যুক্ত করি এবং সেগুলি সমান না হলে আমরা 1 টি বিয়োগ করি।

সেল 2 (টিআরএম): প্রতিটি লুপে 1 দ্বারা বৃদ্ধি হয় এবং এটি রিসেটের সাথে মেলে যদি 0 তে সেট করা থাকে। এটি করার জন্য, আমি কেবল তখনই হোল্ড থেকে মানটি অনুলিপি করি যদি এই ঘরটি RESET এর সমান না হয়।

রিসেট এবং টিআরএম সমান কিনা তা পরীক্ষা করার জন্য সেল 3 (ইক্যুয়াল): ব্যবহার করা হয়।

সেল 4 (হোল্ড): সমান পরীক্ষার পরে রিসেট এবং টিআরএম এর মানগুলি অনুলিপি করতে ব্যবহৃত হয়।

,>+<              # get input and put a 1 in RESET
[                 # for INPUT to 0
  >[->>+>+<<<]    # copy RESET to EQUAL and HOLD
  >>>[-<<<+>>>]   # copy HOLD back into RESET
  <<+             # add 1 to TERM
  [->->+<<]       # subtract TERM from EQUAL and copy it to HOLD
  >[              # if RESET and TERM were not equal
    <<-           # subtract 1 from RESET
    >>>[-<<+>>]   # copy HOLD back to TERM
    <[-]          # zero out EQUAL
  ]               # end if
  >[-]            # zero out HOLD
  <<<+            # add 1 to RESET (this cancels out the subtraction if
                  #     RESET did not equal TERM)
  <-              # subtract 1 from INPUT
]>>+.             # end for and add 1 because the sequence resets to 1 not 0

ভাল করেছ! আমি এটি পরীক্ষা করব এবং ঠিক পরে فضلটি প্রদান করব। কোন ব্যাখ্যা যুক্ত করছ? :)
ইয়াতসি

@ টুকুএক্সএক্স আমি এতে কাজ করছিলাম :) আজ রাতে সময় পেলে আমি আরও কিছু যুক্ত করার চেষ্টা করব।
রিলে

কাজ মনে হচ্ছে :) অনুগ্রহ 20 ঘন্টা পাওয়া যায়।
ইয়াতসি

@ টুকুএক্সএক্স মনে রাখবেন যে অনুগ্রহটি মনোযোগ আকর্ষণ করার জন্য সমস্ত 7 দিনের জন্য উপলব্ধ রেখে দেওয়া উচিত, তারপরে শেষ দিনে পুরষ্কার দেওয়া হয়েছিল।
mbomb007

@ mbomb007 হুঁ। আমি ঘোষণা দিয়েছিলাম যে আমি প্রথম ব্রেইনফ * সিকে সমাধান জমা দেওয়ার জন্য অনুগ্রহটি পুরষ্কার দেব, যার অর্থ অনুগ্রহের প্রতিযোগিতা শেষ হয়েছে। যাইহোক, অন্যান্য ব্যক্তিরা আপনার উল্লিখিত একই কাজ করছেন, এবং আমি যে পয়েন্টগুলি হারিয়েছি তার ক্ষতিপূরণ দেওয়ার এটি একটি ভাল উপায়। ধন্যবাদ :)
Yytsi


3

আর, 43 41 বাইট

সম্পাদনা করুন: A002262 + 1 (0 সূচকযুক্ত ) ব্যবহার করে একটি সংক্ষিপ্ত পুনরাবৃত্তির পদ্ধতির সন্ধান পেয়েছে :

f=function(n,m=1)`if`(n<m,n+1,f(n-m,m+1))

পুরনো সংস্করণ:

n=scan();n-choose(floor((1+sqrt(8*n))/2),2)

ওইআইএসের 1-সূচক সূত্র।


এটি অনলাইন চেষ্টা করুন! এটা ঠিক কাজ করে মনে হচ্ছে। :)
আর কাপ,

আপনার সমাধানের তুলনায় আমি কয়েকটি বাইট সংরক্ষণ করতে পেরেছি। আমার উত্তর দেখুন।
জেএডি

3

পার্ল 6 , 21 বাইট

{map(|^*,^∞)[$_]+1}

0-ইন্ডেক্স। এটি অনলাইন চেষ্টা করুন!

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

{                 }  # A lambda.
         ^∞          # Range from 0 to Inf-1. (Same byte count as 0..*, but cooler.)
 map( ^*,  )         # Map each number n to the range 0..(n-1),
     |               # And slip each range into the outer list.
            [$_]     # Index the sequence with the lambda argument.
                +1   # Add 1.

পার্ল 6 , 21 বাইট

{[\,](1..*).flat[$_]}

0-ইন্ডেক্স। এটি অনলাইন চেষ্টা করুন!

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

{                   }  # A lambda.
      1..*             # Range from 1 to infinity.
 [ ,](    )            # Fold it with the comma operator,
  \                    # and return all intermediate results, e.g. (1), (1,2), (1,2,3)...
           .flat       # Flatten the sequence.
                [$_]   # Index it with the lambda argument.

2

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

গণিত, 30 বাইট

-#^2-#&@⌈√(2#)-3/2⌉/2+#&

এই ফাংশনের জন্য একটি আসল গাণিতিক সূত্র! (3 বাইট অক্ষর অনুবাদ অংশে আরো পাঠযোগ্য মেড , এবং ):

# - ((#^2 + #) / 2 &)[Ceiling[Sqrt[2 * #] - 3/2]] &

Ceiling[Sqrt[2 * #] - 1/2]ইনপুটটি কোন সাবলিস্টটিকে বোঝায়, সেখান থেকে ইনপুটটিতে পৌঁছানোর আগে কোন সাবলিস্টটি শেষ হয় তা আমাদের জানানোর জন্য আমরা একটি বিয়োগ করি; তারপরে ((#^2 + #) / 2 &)সমস্ত সাবলিস্টে আমাদের যত্নশীল হওয়ার আগে কতগুলি উপাদান ঘটে তা গণনা করে, যা আমরা #আমাদের উত্তর পেতে ইনপুট থেকে বিয়োগ করি । (কিছু কিছু ত্রিভুজাকার সংখ্যার (#^2 + #) / 2জন্য পরিচিত সূত্রটি লক্ষ্য করবে #; Ceiling[Sqrt[2 * #] - 1/2]মূলত বিপরীত কার্যটি।)

গণিত, 32 বাইট

If[#2<=#,#2,#0[#+1,#2-#]]&[1,#]&

পুনরাবৃত্তির সমাধান, মূলত বিলিউব এর উত্তর এবং অন্যদের মতো।


2

ব্রেন-ফ্লাক , 46 বাইট

জিরো ইনডেক্সড

(<>()){(({}())[()]){({}[()])<>}{}}<>([{}()]{})

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

স্ট্যাক ক্লিন, 48 বাইট

(<>()){(({}())[()]){({}[()])<>}{}}{}<>([{}()]{})

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

ব্যাখ্যা

এটি মডিউল ফাংশনের একটি পরিবর্তিত সংস্করণ । বিভাজক হিসাবে ধ্রুবক সংখ্যা ব্যবহার না করে এটি বিভাজককে প্রতিটি সময় থেকে বিয়োগ করে (একবারে বাইরের লুপ পুনরাবৃত্তির জন্য একবার) বিভাজনকে বাড়িয়ে তোলে।

টীকাবিহীন কোড

(<>())       # Switch to the opposite stack and push 1 (the initial divisor)
{            # (outside loop) While top of stack is not 0...
  (          # Push...
    ({}())   # Push the divisor plus 1
  [()])      # ...minus one (ie push a copy of the original divisor
  {          # (inner loop) While the top of stack does not equal zero
    ({}[()]) # Decrement the top of the active stack
    <>       # Switch stacks
  }{}        # (inside loop) End loop and pop zero off the top of stack)
}            # (outside loop) End loop
<>           # Switch stacks (to the one with the divisor)
([{}()]{})   # Calculate the result

2

জাভা 8, 85 73 55 বাইট

n->f(n,1)+1int f(int n,int m){return n<m?n:f(n-m,m+1);}

ওইআইএসে প্রদত্ত সূত্রের সাথে 0-সূচকযুক্ত পুনরাবৃত্ত পদ্ধতির :

a(n) = 1 + A002262(n)
A002262 : a(n)=f(n,1)সহ f(n,m) = if n<m then n else f(n-m,m+1)

এখানে চেষ্টা করুন।


পুরানো উত্তর ( 85 56 বাইট):

n->{int m=~-(int)Math.sqrt(8*n+1)/2;return n-m*-~m/2+1;}

ওইআইএসে প্রদত্ত অন্যান্য 0-সূচী সূত্রটি ব্যবহার করেছেন :

n-th শব্দটি n - m*(m+1)/2 + 1, যেখানে m = floor((sqrt(8*n+1) - 1) / 2)

এখানে চেষ্টা করুন।



1

এমএটিএল, 8 বাইট

:"@:]vG)

এই সমাধানটি 1-ভিত্তিক সূচক ব্যবহার করে

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

ব্যাখ্যা

        Implicitly grab input (N)
:       Create an array from [1...N]
"       For each element (A) in this array...
  @:    Create an array from [1....A]
]       End for loop
v       Vertically concatenate everything on the stack
G       Explicitly grab the input again
)       And use it to index into the vertically concatenated array
        Implicitly display the result

1
এটি যে খুব বেশি গুরুত্বপূর্ণ তা নয়, তবে কোডটি যদি আপনি vএরপরে চলে যান তবে আরও দ্রুত]
লুইস মেন্ডো

1
@ লুইস মেন্ডো আহ ভালো পয়েন্ট! আমি সংক্ষিপ্ত এবং দ্রুত চাই !
স্যুভার

তবে এটি একটি সংক্ষিপ্তসার্কিটেড এবং অবশ্যই! :-)
লুইস মেন্ডো

1

কিউবিআইসি , 21 বাইট, 1-ইনডেক্সড

:[a|[b|~q=a|_Xc\q=q+1

ব্যাখ্যা:

:      Get 'a' from the cmd line
[a|    FOR (b = 1; b <= a; b++) This creates an outer loop from 1 to N
[b|    FOR (c = 1; c <= b; c++) This creates an iteration, yielding the 1, 12, 123 pattern
       'q' stores how many terms we've seen. It starts at 1 b default.
~q=a   if we are at the desired term (q == a)
|_Xc   Then quit, and print 'c' (the current number in the sequence)
\q=q+1 Else, increase 'q' and run again.

সামান্য আরও আকর্ষণীয় পদ্ধতির, তবে 10 বাইট দীর্ঘ:

:{~b+q>=a|_xa-b|\b=b+q┘q=q+1

এই প্রোগ্রামটি অবিচ্ছিন্নভাবে এই বন্ধনী এবং পূর্ববর্তী সমস্তগুলি ( 1 at loop 1, 3 at loop 2, 6 at loop 3 ...) এর মোট সংখ্যার গণনা করে । যখন এই কাউন্টারটি চাওয়া-পাওয়া সূচক এন ছাড়িয়ে যায়, তারপরে বর্তমান বন্ধনী থেকে এক্স ফিরিয়ে নিন, যেখানে কাউন্টারটির আগের পরিমাণটি এক্স বিয়োগফল হয়।



1

আর, 37 বাইট

n=scan();for(i in 2:n)T=c(T,1:i);T[n]

ইনপুট নেয় nএবং প্রথম nসিকোয়েন্সগুলির জন্য ক্রম তৈরি করে । এটি উচ্চতর ইনপুটগুলিতে কিছুটা অকার্যকর করে তোলে তবে এটি ঠিক করা উচিত। এরপরে এটি n1-ইনডেক্সযুক্ত-তম এন্ট্রি প্রদান করে।

ব্যবহার সঙ্গে ক্রম বন্ধ শুরু দ্বারা একটি চমৎকার সামান্য কৌতুক T, যা TRUEবা 1ডিফল্টরূপে।



1

ব্রেনফাক, 141 বাইট

আমি জানি আমি অনুগ্রহের জন্য অনেক দেরি করে ফেলেছি, তবে আমি কেবল দেখতে চেয়েছিলাম যে অ্যালগরিদমটি সম্পর্কে আমার মনে হয়েছিল যে কতগুলি বাইট শেষ হবে।

এই প্রোগ্রামটি শূন্য-সূচকযুক্ত।

,>+<[[->>+>+<<<]>>[-<<+>>]<[->+>>+<<<]>[-<+>]>>+[[-<->>+<]>[-<+>]<<<<]>>[>>>]>[.[<<<]]<<<<<<<[[-]>>>[-<+<<+>>>]<[->+<]<<<<<]>>>[>>>]<<<]>[.>]

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

  • ডায়নামিক (অসীম) মেমরি নির্বাচন করুন , বা এটি কাজ করবে না
  • পরীক্ষা ইনপুট মান> 255, পরিবর্তন সেল আকার (বিট) থেকে 16 বা 32
  • ইন্টারপ্রেটার কীভাবে ইনপুট দিতে হয় তা ব্যাখ্যা করে। ইনপুট জন্য দশমিক ইনপুট ব্যবহারের \5জন্য 5
    • আপনি যে দশমিক মানটির সাথে ইনপুট পরীক্ষা করতে পারবেন তা \999
    • হেক্স ইনপুটটি সেল-আকারের বেশি যেতে পারে।

ব্যাখ্যা:

এটি প্রোগ্রামটি ধাপে ধাপে বিভক্ত হয়ে ইনপুটটির জন্য কী ঘটে তা দেখায় 5#দোভাষীর জন্য আদর্শ মেমরি ডাম্পের স্থানে স্থাপন করা হয়।

আপনি সম্ভবত চেকবক্স ডাম্প মেমোরিটি চরে# ব্যবহার করতে চাইবেন : যদি এই সংস্করণটি চালানো হয়। এটি আঘাতের পরে স্মৃতিটিকে ডুবিয়ে দেবে #, আপনাকে টেপটির কোনও মূল্যচিহ্নহীন চরিত্রের ইভেন্টের মূল্য দেখতে দেয় বা আপনি যে কোনও পদক্ষেপে কী চান তা দেখার জন্য। পয়েন্টারটি যে ঘরে চলছে সেগুলি সাহসী হবে।

,>+<                       (5) 1
[[->>+>+<<<]>>[-<<+>>]       5 1 (0) 5
<[->+>>+<<<]>[-<+>]>>+       5 1 0 5 (2)
[[-<->>+<]>[-<+>]<<<<] (0) 0 4 1 0 3 2 0 0
>>[>>>]                      4 1 0 3 2 0 (0) 0
                             1 1 0 (0) 2 0
>[.#[<<<]]<<<<                4 1 0 (3) 2 0 0 0
<<<[[-]>>>[-<+<<+>>>]<[->+<]<<<<<]>>> (3) 1 0 3 2 0 0 0
[>>>]<<<]>[.#>]

Tape structure:
    (cell_1 cell_2 temp), (cell_1 cell_2 temp), ...

Take Input;
If not zero:
  copy last pair to the right and add one to its cell_2
  subtract each cell_2 from each cell_1 (leaving each cell_2 intact)
  move checking from left to right: 
    If cell_1 is zero and cell_2 isn't:
      print cell_2
    Else:
      copy last cell_1 back, overwriting each previous cell_1
Else:
  right one and print result

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

  • ডায়নামিক (অসীম) মেমরি নির্বাচন করুন , বা এটি কাজ করবে না
  • চরে স্মৃতি ডাম্প: #

নোট:

  • আর কোনও দোভাষীকে এটি চালনার জন্য যা শুরু কক্ষের বাম দিকে যেতে দেয় না (সেই কারণেই আমি ডায়নামিক মেমোরি ব্যবহার করি), >শুরুতে একটি গুচ্ছ রেখে । প্রয়োজনীয় সংখ্যা ইনপুট মানের উপর নির্ভর করে পরিবর্তিত হতে পারে, তবে এটি ও (1)।

1

টিনাইলিস্প (repl), 90 বাইট (0- সূচকযুক্ত )

(d r(q((n j x)(i n(i(e j x)(r(s n 1)1(s x(s 0 1)))(r(s n 1)(s j(s 0 1))x))j
(q((n)(r n 1 1

অথবা, অ-প্রতিযোগিতামূলক (এই চ্যালেঞ্জ পোস্ট হওয়ার পরে প্রতিশ্রুতিবদ্ধ এমন কোনও বৈশিষ্ট্য ব্যবহার করে), 80 বাইট :

(d r(q((n j x)(i n(i(e j x)(r(s n 1)1(a x 1))(r(s n 1)(a j 1)x))j
(q((n)(r n 1 1

প্রথম লাইনটি একটি সহায়ক ফাংশন সংজ্ঞায়িত করে rএবং দ্বিতীয় লাইনটি একটি নামহীন ফাংশন যা nক্রমের নবম পদটি গ্রহণ করে এবং প্রদান করে। আমি এটিকে একটি প্রতিবেদন জমা হিসাবে উল্লেখ করেছি কারণ প্রতিবেদনের প্রোগ্রামের শেষের দিকে নয়, প্রতিটি লাইনের শেষে বন্ধুত্বগুলি স্বয়ংক্রিয়ভাবে পূর্ণ হয়। এই সতর্কতাগুলির সাথে , এটি অনলাইনে ব্যবহার করে দেখার জন্য এখানে একটি সংস্করণ সংশোধন করা হয়েছে এবং এখানে 0 থেকে 54 এর ইনপুটগুলির বিপরীতে চালিত একটি অসমাপ্ত সংস্করণ রয়েছে

ব্যাখ্যা

আমি এখানে নন-কেপটিং সংস্করণটি ব্যবহার করব। পার্থক্যটি হ'ল সরকারী সংস্করণটিতে দুটি বিয়োগ হিসাবে সংযোজন প্রয়োগ করতে হবে।

(d r           Define r to be:
 (q(           A lambda function (= a list of two elements, quoted to prevent evaluation):
  (n j x)       Arguments n, j (the range counter), and x (the range limit)
  (i n          If n is truthy, i.e. nonzero:
   (i(e j x)     If counter equals limit:
    (r            Call r recursively on:
     (s n 1)       n-1
     1             counter reset to 1
     (a x 1))      limit increased by 1
    (r           Else, call r recursively on:
     (s n 1)       n-1
     (a j 1)       counter increased by 1
     x))           same limit
   j))))        Else, we're done; return the counter value

(q(            Lambda function:
 (n)            Argument n
 (r n 1 1)))    Call r with n, counter = 1, range limit = 1

1

সি, 54 বাইট

সবচেয়ে সংক্ষিপ্ত সি সমাধান নয়, তবে এটিতে ধ্রুব সময়ে চলার যোগ্যতা রয়েছে (কোনও লুপ নেই, কেবল গণিত নয়)। এটি শূন্য-ভিত্তিক সূচক ব্যবহার করে:

x;f(n){x=floor(sqrt(8*n+1)-1)/2;return 1+n-x*(x+1)/2;}

Ungolfed:

int f(int n) {
    int x = floor(sqrt(8*n+1)-1)/2; //calculate the number of the current subsequence (zero based)
    return 1+n-x*(x+1)/2;   //x*(x+1)/2 is the zero based index of the `1` starting the subsequence
}

এর সাথে পরীক্ষা করুন:

#include <math.h>
#include <assert.h>
#include <stdio.h>

x;f(n){x=floor(sqrt(8*n+1)-1)/2;return 1+n-x*(x+1)/2;}

int main(){
    int i;
    for(i = 0; i < 10; i++) printf("%d ", f(i));
    printf("\n");

    assert(f(0) == 1);
    assert(f(1) == 1);
    assert(f(5) == 3);
    assert(f(10) == 1);
    assert(f(59) == 5);
    assert(f(100) == 10);
    assert(f(1001) == 12);
}

1

সি, 103 বাইট

একজন ভিক্ষুকের জন্য এটা ঠিক আছে, আমি মনে করি :)।

int main(){int n,c,i,j;scanf("%d",&n);while(c<n){for(i=1;i<=j;i++){c++;if(c==n)printf("%d",i);}j++;}}

বা বিন্যাসিত উপায়

#include <stdio.h>

int main() {
    int n,c,i,j;
    scanf("%d",&n);
    while(c<n) 
    {
        for(i=1;i<=j;i++)
        {
            c++;
            if(c==n) printf("%d",i);
        }
        j++;
    }
}

1
যদি আপনি n,c,i,jগ্লোবাল হিসাবে ঘোষণা করেন তবে এটির গ্যারান্টি রয়েছে যে সেগুলি 0 থেকে শুরু করা হয়েছে, যা স্থানীয়দের ক্ষেত্রে সত্য নয়।
feersum

আমি জানতাম এটিতে এ জাতীয় অনভিজ্ঞ ভুল রয়েছে। nঅনুক্রমের ইনপুট বা এন-থিং নম্বর, cএকটি পাল্টা iএবং jলুপ উপাদান; j1 তারপর 2 তারপর 3 iহবে যখন 1 হবে 1,2 তারপর 1,2,3 এবং আরও। @ কিউয়ার্প-ডের্প
মোহাম্মদ মদখানাহ

আমি নিশ্চিত নই যে আপনি কী বোঝাতে চেয়েছিলেন আমি ঠিক বুঝতে পেরেছিলাম কিন্তু প্রাথমিক মানগুলি এই কোডটিতে 0 হবে আমি তাদের বিশ্বব্যাপী বা স্থানীয় হিসাবে ঘোষণা করেছি কিনা। দয়া করে আমাকে সংশোধন করুন - আমি ভুল হলে 0 =)। @ ফেয়ারসাম
মোহাম্মদ মদখানাহ

না, uninitialized স্থানীয় ভেরিয়েবল থেকে 0. সেট নেই stackoverflow.com/questions/15268799/...
feersum

1

ডিসি , 21 বাইট, 0 ভিত্তিক সূচক

?d8*1+v1-2/d1+*2/-1+p

অনলাইন ডিসি প্রোগ্রাম চেষ্টা করুন!

ব্যাখ্যা:

?      Push input number n.
d      Duplicate n at the top of the stack.
8*1+   Replace n at the top of the stack with 8n+1.
v      Replace 8n+1 at the top of the stack with the floor of its square root.
1-2/   Subtract 1, and divide by 2 (ignoring any fractional part).

স্ট্যাকের শীর্ষে এখন বৃহত্তম ত্রিভুজাকার সংখ্যার সূচক কে ধরে যা <= n।

d1+*2/ Compute k(k+1)/2, which is the greatest triangular number <= n.
-      Subtract n-(the greatest triangular number <= n). The first n is on the stack in position 2, because the input number n was duplicated at the top of the stack at the very beginning of the program, and only one of the values was popped and used (until now).
1+     Add 1 because the desired sequence starts over again at 1 (not 0) at every triangular number.
p      Print the answer.

এই ডিসি প্রোগ্রামটি একটি প্রতিযোগিতামূলক আকারের বাশ স্ক্রিপ্টে রূপান্তরিত হতে পারে:

বাশ + ইউনিক্স ইউটিলিটিস, 28 বাইট, 0-ভিত্তিক সূচক

dc -e"?d8*1+v1-2/d1+*2/-1+p"

অনলাইনে বাশ প্রোগ্রাম চেষ্টা করুন!


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