নতুন আদেশ # 4: বিশ্ব


17

ভূমিকা (উপেক্ষা করা হতে পারে)

সমস্ত ধনাত্মক সংখ্যাটিকে নিয়মিত ক্রম (1, 2, 3, ...) স্থাপন করা কিছুটা বিরক্তিকর, তাই না? সুতরাং এখানে সমস্ত ধনাত্মক সংখ্যার ক্রমবিন্যাস (রদবদল) চারপাশে চ্যালেঞ্জগুলির একটি সিরিজ রয়েছে। এটি এই সিরিজের চতুর্থ চ্যালেঞ্জ ( প্রথম , দ্বিতীয় এবং তৃতীয় চ্যালেঞ্জের লিঙ্ক)।

এই চ্যালেঞ্জের মধ্যে আমরা প্রাকৃতিক সংখ্যার এক ক্রমায়ন নয় , পুরো ক্রমশক্তি বিশ্বকে আবিষ্কার করব !

2000 সালে, ক্লার্ক কিমবারলিং কানাডিয়ান ম্যাথমেটিকাল সোসাইটি দ্বারা প্রকাশিত গণিতের একটি বৈজ্ঞানিক জার্নাল ক্রাক্স ম্যাথমেটেমেরামের 26 তম সংখ্যায় একটি সমস্যা তৈরি করেছিলেন । সমস্যাটি ছিল:

Sequence a={a1=1an=an12 if an12{0,a1,...,an1}an=3an1 otherwise

প্রত্যেকটি ধনাত্মক পূর্ণসংখ্যাটি এই ক্রমটিতে ঠিক একবারে ঘটে?

2004 সালে Mateusz Kwasnicki একই জার্নালে ইতিবাচক প্রমাণ প্রদান এবং 2008 সালে তিনি প্রকাশিত আরো একটি প্রথাগত এবং (মূল প্রশ্ন তুলনায়) একটি সাধারণ প্রমাণ। তিনি প্যারামিটার p এবং দিয়ে ক্রমটি তৈরি করেছিলেন :q

{a1=1an=an1q if an1q{0,a1,...,an1}an=pan1 otherwise

তিনি প্রমাণ কোন যেমন যে পি ( কুই ) অযৌক্তিক হয়, ক্রম প্রাকৃতিক সংখ্যার একটি বিন্যাস করা হয়। যেহেতু পি এবং কিউ মানগুলির অসীম সংখ্যা রয়েছে যার জন্য এটি সত্য, এটি সত্যই প্রাকৃতিক সংখ্যার ক্রমবিন্যাসের একটি সম্পূর্ণ বিশ্ব । আমরা আসল ( পি , কিউ ) = ( 3 , 2 ) দিয়ে থাকব এবং এই পরামিতিগুলির জন্য, ক্রমটি ওআইআইএস-A050000 হিসাবে পাওয়া যাবে । এর প্রথম 20 উপাদানগুলি হ'ল:p,q>1logp(q)pq(p,q)=(3,2)

1, 3, 9, 4, 2, 6, 18, 54, 27, 13, 39, 19, 57, 28, 14, 7, 21, 10, 5, 15

যেহেতু এই একটি "বিশুদ্ধ ক্রম" চ্যালেঞ্জ, কাজের আউটপুট হয় a(n) জন্য একটি প্রদত্ত n ইনপুট, যেখানে যেমন a(n) হয় A050000

কার্য

একটি পূর্ণসংখ্যা ইনপুট দেওয়া n , আউটপুট a(n) পূর্ণসংখ্যা ফরম্যাট, যেখানে:

{a(1)=1a(n)=a(n1)2 if a(n1)2{0,a1,...,a(n1)}a(n)=3a(n1) otherwise

দ্রষ্টব্য: 1-ভিত্তিক সূচীকরণ এখানে ধরে নেওয়া হয়; আপনি 0-ভিত্তিক সূচক ব্যবহার করতে পারেন, সুতরাং a(0)=1;a(1)=3 , ইত্যাদি ইত্যাদি যদি আপনি এটি ব্যবহার করতে চান তবে আপনার উত্তরে এটি উল্লেখ করুন mention

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

Input | Output
---------------
1     |  1
5     |  2
20    |  15
50    |  165
78    |  207
123   |  94
1234  |  3537
3000  |  2245
9999  |  4065
29890 |  149853

বিধি

  • ইনপুট এবং আউটপুটটি পূর্ণসংখ্যা হয় (আপনার প্রোগ্রামটি কমপক্ষে 1 অবধি 32767 এ ইনপুট এবং আউটপুট সমর্থন করে)
  • অবৈধ ইনপুট (0, ফ্লোটস, স্ট্রিং, নেতিবাচক মানগুলি ইত্যাদি) অনির্দেশিত আউটপুট, ত্রুটি বা (আন) সংজ্ঞায়িত আচরণের দিকে পরিচালিত করতে পারে।
  • ডিফল্ট আই / ও বিধি প্রযোজ্য।
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • এটি , তাই বাইটে সংক্ষিপ্ত উত্তরগুলি জিতে

আমি টিআই-বেসিক ব্যবহার করে এর জবাব দেব, তবে ইনপুটটি এর মধ্যে সীমাবদ্ধ থাকবে যেহেতু তালিকাগুলি 999 টি উপাদানগুলির মধ্যে সীমাবদ্ধ। তবুও বড় চ্যালেঞ্জ! 0<এন<1000
তাউ

@ টাউ: যদিও অনুমানযোগ্য (এবং এই অ-প্রতিযোগিতামূলক), আমি আপনার সমাধানে আগ্রহী interested আপনি পোস্ট করতে পারেন একটি আছে?
এখন

1
আমি প্রোগ্রামটি মুছে ফেলেছি, তবে আমার এটি পুনরায় তৈরি করতে সক্ষম হওয়া উচিত। আমি একবার এটি পুনরায় করার পরে আমি এটি প্রতিদ্বন্দ্বী হিসাবে পোস্ট করব ।
তাউ

@ আগত, "অ-প্রতিদ্বন্দ্বী" অবৈধ সমাধানগুলিকে আবরণ করে না; এটি ভাষা বা ভাষার বৈশিষ্ট্যগুলি ব্যবহার করে সমাধানের জন্য যা একটি চ্যালেঞ্জ পোস্ট হওয়ার পরে তৈরি হয়েছিল।
শেগি

পিপিএন্ডসিজি মেটা এটিতে খুব স্পষ্ট। আমি "অ-প্রতিদ্বন্দ্বী" এর এইরকম কঠোর ব্যাখ্যার পুরষ্কার পাইনি ... @ টাউ: মনে হচ্ছে আপনি এই বিধিগুলির অধীনে আপনার টিআই-বেসিক সমাধান পোস্ট করতে পারবেন না। দুঃখিত।
19

উত্তর:


3

জাপট , 15 14 বাইট

1-ইন্ডেক্স।

@[X*3Xz]kZ Ì}g

চেষ্টা করে দেখুন

@[X*3Xz]kZ Ì}g     :Implicit input of integer U
             g     :Starting with the array [0,1] do the following U times, pushing the result to the array each time
@                  :  Pass the last element X in the array Z through the following function
 [                 :    Build an array containing
  X*3              :      X multiplied by 3
     Xz            :      X floor divided by 2
       ]           :    Close array
        kZ         :    Remove all elements contained in Z
           Ì       :    Get the last element
            }      :  End function
                   :Implicit output of the last element in the array

7

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

@ এম্বেডিমেন্টফআইজিনিয়ামকে
1 বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে @tsh কে 1 বাইট ধন্যবাদ

n=>eval("for(o=[p=2];n--;)o[p=o[q=p>>1]?3*p:q]=p")

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



এম্বেডিমেন্টফ অজানা আমি সাধারণত এ কৌশলটি এড়িয়ে চলি, কারণ স্পষ্টভাবে কোডটি অনেক ধীর। তবে পার্থক্যটি সেইটির জন্য সবে লক্ষণীয়, সুতরাং আমি অনুমান করি যে এটি ঠিক আছে।
আর্নাউল্ড

2
কিন্তু এই কোড-গলফ, আমরা গতি যত্ন সম্পর্কে না, যতদিন এটা কাজ পায়
অজ্ঞতা প্রতিমূর্তি

n=>eval("for(o=[p=2];n--;)o[p=o[q=p>>1]?3*p:q]=p")
tsh

5

জেলি , 15 বাইট

µ×3żHḞḢḟȯ1Ṫ;µ¡Ḣ

nSTDIN থেকে পূর্ণসংখ্যাকে (1-ভিত্তিক) গ্রহণযোগ্য একটি সম্পূর্ণ প্রোগ্রাম ফলাফল প্রিন্ট করে।

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

কিভাবে?

µ×3żHḞḢḟȯ1Ṫ;µ¡Ḣ - Main Link: no arguments (implicit left argument = 0)
µ           µ¡  - repeat this monadic chain STDIN times (starting with x=0)
                -                   e.g. x = ...  0      [1,0]            [9,3,1,0]
 ×3             -   multiply by 3                 0      [3,0]            [27,9,3,0]
    H           -   halve                         0      [1.5,0]          [4.5,1.5,0.5,0]
   ż            -   zip together                  [0,0]  [[3,1.5],[0,0]]  [[27,4.5],[9,1.5],[3,0.5],[0,0]]
     Ḟ          -   floor                         [0,0]  [[3,1],[0,0]]    [[27,4],[9,1],[3,0],[0,0]]
      Ḣ         -   head                          0      [3,1]            [27,4]
       ḟ        -   filter discard if in x        []     [3]              [27,4]
        ȯ1      -   logical OR with 1             1      [3]              [27,4]
          Ṫ     -   tail                          1      3                4
           ;    -   concatenate with x            [1,0]  [3,1,0]          [4,9,3,1,0]
              Ḣ - head                            1      3                4
                - implicit print

4

05 এ বি 1 ই , 16 15 বাইট

কেভিন ক্রুইজসেনকে ধন্যবাদ 1 বাইট সংরক্ষিত ।
0-ইন্ডেক্স।

¾ˆ$FDˆx3*‚;ï¯Kн

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

ব্যাখ্যা

n=1উদাহরণ হিসাবে ব্যবহার করা

¾ˆ                 # initialize global array as [0]
  $                # initialize stack with 1, input
   F               # input times do:
    Dˆ             # duplicate current item (initially 1) and add one copy to global array
                   # STACK: 1, GLOBAL_ARRAY: [0, 1]
      x            # push Top_of_stack*2
                   # STACK: 1, 2, GLOBAL_ARRAY: [0, 1]
       3*          # multiply by 3
                   # STACK: 1, 6, GLOBAL_ARRAY: [0, 1]
         ‚;ï       # pair and integer divide both by 2
                   # STACK: [0, 3], GLOBAL_ARRAY: [0, 1]
            ¯K     # remove any numbers already in the global array
                   # STACK: [3], GLOBAL_ARRAY: [0, 1]
              н    # and take the head
                   # STACK: 3


@ কেভিন ক্রুজসেন: ধন্যবাদ! আমি বিশ্বব্যাপী অ্যারে ব্যবহার করার কথা ভেবেছিলাম, তবে ধরে
নিয়েছি

4

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

-২ বাইটস ন্যালোনাফকে ধন্যবাদ

{(1,3,{(3*@_[*-1]Xdiv 6,1).max(*∉@_)}...*)[$_]}

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

অনুক্রমের 0-সূচকযুক্ত উপাদানটি প্রদান করে। প্রারম্ভিক উপাদানগুলির 0,1পরিবর্তে পরিবর্তিত করে আপনি এটি 1-সূচকে পরিবর্তিত করতে পারেন1,3

ব্যাখ্যা:

{                                             }  # Anonymous code block
 (                                   ...*)[$_]   # Index into the infinite sequence
  1,3                                            # That starts with 1,3
     ,{                             }            # And each element is
       (                 ).max(    )             # The first of
          @_[*-1]X                               # The previous element
        3*        div 6                          # Halved and floored
        3*        div  ,1                        # Or tripled
                               *∉@_             # That hasn't appeared in the sequence yet

3

জে , 47 40 বাইট

[:{:0 1(],<.@-:@{:@](e.{[,3*{:@])])^:[~]

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

ungolfed

[: {: 0 1 (] , <.@-:@{:@] (e. { [ , 3 * {:@]) ])^:[~ ]

জেতে সংজ্ঞাটির সরাসরি অনুবাদ ^:এটি প্রারম্ভিক মান থেকে বারবার প্রয়োজনীয় সংখ্যা থেকে পুনরাবৃত্তি করে নীচে তৈরি করে ।


3

জাভা 10, 120 99 বাইট

n->{var L=" 1 0 ";int r=1,t;for(;n-->0;L+=r+" ")if(L.contains(" "+(r=(t=r)/2)+" "))r=t*3;return r;}

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

ব্যাখ্যা:

n->{                              // Method with integer as both parameter and return-type
  var L=" 1 0 ";                  //  Create a String that acts as 'List', starting at [1,0]
  int r=1,                        //  Result-integer, starting at 1
      t;                          //  Temp-integer, uninitialized
  for(;n-->0;                     //  Loop the input amount of times:
      L+=r+" "))                  //    After every iteration: add the result to the 'List'
                          t=r     //   Create a copy of the result in `t`
                       r=(...)/2  //   Then integer-divide the result by 2
    if(L.contains(" "+(...)+" ")) //   If the 'List' contains this result//2:
      r=t*3;                      //    Set the result to `t` multiplied by 3 instead
  return r;}                      //  Return the result

3

হাস্কেল , 67 65 বাইট

(h[1,0]!!)
h l@(a:o)|elem(div a 2)o=a:h(3*a:l)|1>0=a:h(div a 2:l)

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

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

সম্পাদনা: elemপরিবর্তে notElemশর্তগুলির পরিবর্তে এবং ব্যবহার করে 2 বাইট সংরক্ষণ করা হয়েছে




2

সি ++ (জিসিসি) , 189 180 বাইট

ছোট গল্ফিং -9 বাইট

#import<vector>
#import<algorithm>
int a(int n){std::vector<int>s={1};for(int i=0;i<n;++i)s.push_back(i&&std::find(s.begin(),s.end(),s[i]/2)==s.end()?s[i]/2:3*s[i]);return s[n-1];}

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

ক্রমটি পরিসংখ্যান করে n, তারপরে পছন্দসই উপাদানটি প্রদান করে। বৃহত্তর সূচকগুলির জন্য ধীরে ধীরে।


@ceilingcat দুর্ভাগ্যক্রমে এটি অপারেটর প্রাধান্যকে প্রভাবিত করে এবং ফাংশনের আউটপুটকে পরিবর্তন করে।
নীল এ।

2

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

l=lambda n,p=1,s=[0]:p*(n<len(s))or l(n,3*p*(p/2in s)or p/2,[p]+s)

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

শূন্য-ভিত্তিক সূচক ব্যবহার করে। ল্যাম্বদা ক্রমবর্ধমান ক্রমটি তৈরি করা এবং প্রয়োজনীয় সূচকটি পৌঁছানোর সাথে সাথে ফিরে আসার চেয়ে আরও কিছু করে।





1

পাইথন 3 , 105 103 100 95 83 বাইট

-2 বাইটস অগভয়ে
ধন্যবাদ -12 বাইট আরবোকে ধন্যবাদ

def f(n):
 s=0,1
 while len(s)<=n:t=s[-1]//2;s+=(t in s)*3*s[-1]or t,
 return s[-1]

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


আপনি for লুপটি প্রতিস্থাপন করতে পারেন while len(s)<=nএবং i এর সাথে প্রতিস্থাপন করতে পারেন -1। এটি দুটি চরিত্রের মধ্যে একটি মুণ্ডন করা উচিত।
এগ্রিওয়ে

@ আগত যে এত চালাক - ধন্যবাদ! :)
নুডল

তালিকার পরিবর্তে একটি টিপল দিয়ে কাজ করে 83 বাইট , এবং ifসেই whileলুপটিকে এক-আস্তরণের অনুমতি দেওয়ার জন্য লুপ থেকে অপসারণ করুন
আরবো

@ আরবো বাহ! একেবারে উজ্জ্বল - ধন্যবাদ :)
নুডল

1

গাইয়া , 22 20 বাইট

2…@⟨:):3פḥ⌋,;D)+⟩ₓ)

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

0 ভিত্তিক সূচক।

পদ্ধতির জন্য শেগিকে ক্রেডিট

2…			| push [0 1]
  @⟨		 ⟩ₓ	| do the following n times:
    :):			| dup the list L, take the last element e, and dup that
       3פḥ⌋,		| push [3*e floor(e/2)]
	     ;D		| take the asymmetric set difference [3*e floor(e/2)] - L
	       )+	| take the last element of the difference and add it to the end of L (end of loop)
		   )	| finally, take the last element and output it

;D



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