আটকা পড়ে নাইট সিকোয়েন্স


10

ভূমিকা

দ্য ট্র্যাপড নাইট - নম্বরফিলের খুব সাম্প্রতিক ভিডিও দ্বারা অনুপ্রাণিত হয়ে আমি একটি চ্যালেঞ্জ নিয়ে এসেছি।

আটকা পড়ে নাইট ক্রম দৈর্ঘ্য 2016, 1 থেকে শুরু একটি সসীম পূর্ণসংখ্যা ক্রম, এবং নিম্নলিখিত নির্মাণ বিধি রয়েছে:

  1. নিম্নলিখিত পদ্ধতিতে একটি নম্বর সর্পিল লিখুন:
17 16 15 14 13 ...
18  5  4  3 12 ...
19  6  1  2 11 ...
20  7  8  9 10 ...
21 22 23 24 25 ...
  1. 1 এ একটি নাইট রাখুন।
  2. দাবারের নিয়ম অনুসারে (যেটি 2 টি ইউনিট উল্লম্বভাবে এবং 1 ইউনিট অনুভূমিকভাবে, বা বিপরীতে) আগে দেখা যায়নি এমন সবচেয়ে ছোট সংখ্যার সাথে নাইটটি গ্রিডে নিয়ে যান।
  3. নাইট আটকে না যাওয়া পর্যন্ত পুনরাবৃত্তি করুন।

প্রথম তিনটি পদক্ষেপ এখানে:

ধাপ 1

 17  [16]  15  [14]  13 
[18]   5    4    3  [12]
 19    6  < 1>   2   11 
[20]   7    8    9  [10]
 21  [22]  23  [24]  25 

সম্ভাব্য পদক্ষেপগুলি 10, 12, 14, 16, 18, 20, 22, 24, যার মধ্যে ক্ষুদ্রতম 10, তাই দ্বিতীয় পদটি 10 ​​হয়।

ধাপ ২

  4  [ 3]  12  [29]  54
( 1)   2   11   28  [53] 
  8    9  <10>  27   52 
[23]  24   25   26  [51] 
 46  [47]  48  [49]  50 

সম্ভাব্য পদক্ষেপগুলি 1 , 3, 23, 29, 47, 49, 51, 53, যার মধ্যে ক্ষুদ্রতম 3, তাই তৃতীয় শব্দটি 3 হয়।

ধাপ 3

 35  [34]  33  [32]  31 
[16]  15   14   13  [30] 
  5    4  < 3>  12   29 
[ 6] ( 1)   2   11  [28] 
  7  [ 8]   9  (10)  27 

সম্ভাব্য পদক্ষেপগুলি 6, 8, 10 , 16, 28, 30, 32, 34, যার মধ্যে ক্ষুদ্রতমটি 6, তাই চতুর্থ পদটি 6 হয়।

ক্রম তারার সাথে:

1 10 3 6 9 4 7 2 5 8 11 14 ...

এবং শেষ হয়

... 2099 2284 2477 2096 2281 2474 2675 2884 3101 2880 2467 2084

চ্যালেঞ্জ

একটি সংক্ষিপ্ততম প্রোগ্রাম বা ফাংশন লিখুন, ইনপুট হিসাবে পরিসীমাতে [1, 2016](বা [0, 2015]যদি 0-সূচিযুক্ত ব্যবহার করা হয়) পূর্ণসংখ্যা প্রাপ্ত হন, আটকা পড়া নাইট অনুক্রমের সেই সূচীতে সংখ্যাটি আউটপুট করুন। আপনি 0-ইনডেক্সড বা 1-ইনডেক্সযুক্ত ক্রমটি সূচকে বেছে নিতে পারেন তবে আপনি কোন সূচীকরণ স্কিমটি ব্যবহার করছেন তা অবশ্যই নির্দিষ্ট করতে হবে।

পরীক্ষার কেস (1-ইনডেক্সড)

n    | s(n)
-----+-----
   1 |    1
   2 |   10
   3 |    3
   6 |    4
  11 |   11
  21 |   23
  51 |   95
 101 |   65
 201 |  235
 501 |  761
1001 | 1069
2001 | 1925
2016 | 2084

সমস্ত সম্ভাব্য আউটপুটগুলির জন্য, দয়া করে এই পৃষ্ঠাটি দেখুন

বিজয়ী মানদণ্ড

প্রতিটি ভাষার সবচেয়ে সংক্ষিপ্ত কোডটি জয়ী হয়। স্ট্যান্ডার্ড লুফোলের উপর বিধিনিষেধগুলি প্রযোজ্য।



1
@ আর্নল্ড এই প্রশ্নটি আমার দ্বারা অনুপ্রাণিত হয়েছিল (যেমনটি ইঙ্গিত দেওয়া হয়েছে), কেবল প্রধান দিকে যেতে দ্রুত। এছাড়াও, এই ক্রমটি সীমাবদ্ধ, সুতরাং গল্ফিংয়ের কিছু দিক সেই দিক থেকে আলাদা হতে পারে।
শিয়ারু আসাকোটো

1
অন্য ক্রমটিও সীমাবদ্ধ, স্কোয়ারে থামছে12851850258
জো কিং

2
@ জোকিং ওয়েল, তবে এটি বেশ দ্রুত থামার কারণে, আমি ছোট সংখ্যার রেঞ্জগুলি সহ এসোলেংগুলিতে উত্তরগুলি দেখতে চাই (16-বিট পূর্ণসংখ্যার প্রয়োগকারী কোনও এসোলেঙ্গস রয়েছে কি?)
শিয়ারু আসাকোটো

1
ঠিক আছে, যদি এই প্রশ্নটি প্রথম স্যান্ডবক্সে পোস্ট করা হত, তার অর্থ এই নয় যে ডুপটি অন্য প্রশ্ন হবে ?
লুইস ফিলিপ ডি জেসুস মুনোজ

উত্তর:


4

জাভাস্ক্রিপ্ট (ES7),  182  181 বাইট

f=(n,[x,y]=[2,1],a=[...Array(4e3)].map((_,n)=>[1,-1].map(s=>(i&1?-s:s)*(i+s*n-(n>0?n:-n)>>1),i=n**.5|0,n-=i*++i)))=>n--?f(n,a.find(([X,Y],j)=>(i=j,(x-X)*(y-Y))**2==4),a,a[i]=[]):i+1

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

কিভাবে?

উইলডিবিস্টের পথের প্রতি আমার উত্তরটির কিছুটা সংশোধিত সংস্করণ অবশ্যই এর চেয়ে কম (এবং দ্রুত) is তবে আমি একটি ভিন্ন পদ্ধতির চেষ্টা করতে চেয়েছিলাম। প্রসঙ্গত, আমি মনে করি কিছু Esolangs এ এই পদ্ধতিটি প্রয়োগ করা আরও সহজ হতে পারে ।

অ্যালগরিদম:

  1. 3199
  2. (এক্স,ওয়াই)

    ((এক্স-এক্স)×(Y-ওয়াই))2=4

    (এক্স,Y)

    |এক্স-এক্স|=1|Y-ওয়াই|=2|এক্স-এক্স|=2|Y-ওয়াই|=1

  3. (এক্স,Y)=(এক্স,ওয়াই)

  4. আমরা হয় দ্বিতীয় ধাপে পুনরায় চালু করব বা শেষ হয়ে গেলে শেষ সূচকটি ফিরিয়ে আনব যদি আমাদের কাজ শেষ হয়ে যায়।


নোড.জেএস , 155 বাইট

n=>(g=(x,y)=>n--?g(Buffer('QHUbcdWJ').map(m=c=>g[i=4*((x+=c%6-2)*x>(y+=c%7-2)*y?x:y)**2,i-=(x>y||-1)*(i**.5+x+y)]|i>m||(H=x,V=y,m=i))|H,V,g[m]=1):m+1)(1,2)

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


3

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

Xˆ0UF2D(Ÿ0KãʒÄ1¢}εX+}Dε·nàDtyÆ+yO·<.±*->}D¯KßDˆkèU}¯θ

32θএন+ +1

এটি অনলাইনে চেষ্টা করে দেখুন বা আরও কিছু পরীক্ষার কেস যাচাই করুন (বৃহত্তম পরীক্ষার ক্ষেত্রে সবচেয়ে বেশি সময় আসবে)।

ব্যাখ্যা:

আমার লিঙ্কিত দ্য উইথডেবিস্ট উত্তরটির ব্যাখ্যাটি দেখুন । শুধুমাত্র পরিবর্তিত অংশগুলি হ'ল:

2D    # Get a list in the range [-2,2]: [-2,-1,0,1,2]

এবং একটি পিছনে:

θ       # Only leave the last item of the list

সম্পাদনা করুন: একটি পোর্ট @Arnauld এর তার জাভাস্ক্রিপ্ট (ES7) উত্তর পদ্ধতির (বর্তমানে) হল:

05AB1E , 57 56 বাইট

0D‚DˆUF64D(ŸãΣ·nàDtyÆ+yO·<.±*->}©ʒX-Pn4Q}¯¡˜2£DˆU}®J¯Jk>θ

এটি অনলাইনে চেষ্টা করে দেখুন বা আরও কিছু পরীক্ষার কেস যাচাই করুন (বৃহত্তম পরীক্ষার ক্ষেত্রে সবচেয়ে বেশি সময় আসবে)।

ব্যাখ্যা:

‚%                # Create a pair of zeros: [0,0]
                  # (by pairing the (implicit) input with itself,
                  #  and then using modulo (implicit) input)
  DˆU             # Set both variable `X` to this, and add it to the global_array
F                 # Loop the (implicit) input amount of times:
 64D            #  Create a list in the range [-64,64]
      ã           #  Create each possible pair of `x,y`-coordinates
       Σ·nàDtyÆ+yO·<.±*->}
                  #  Sort this list in a spiral
        ©         #  Save it in the register (without popping)
 ʒ      }         #  Filter the list of coordinates by:
  X-              #   Subtract the coordinate of variable `X`
    P             #   Take the product
     n            #   Take the square
      4Q          #   Check if its equal to 4
                  # Since 05AB1E cannot remove inner lists, we use a workaround:
         ¯¡       # Split this list on each coordinate in the global_array
           ˜      # Flatten the entire list
            2£    # Only leave the first two integers as `x,y`-coordinate
                  # (if 05AB1E could remove inner lists, this would've been `¯Kн` instead)
              DˆU # Replace variable `X` with this, and add it to the global_array
                # After the loop: push all coordinates sorted in a spiral from the register
  J               # Join each coordinate together to a string
   ¯J             # Push the global_array, and also join them together to a string
                  # (if 05AB1E could index inner lists, both `J` could have been removed)
     k            # Get the index of each item of the global_array in the spiral list
      >           # Increase the 0-indexed index by 1 to make it 1-based
       θ          # And only leave the last one (which is output implicitly)

Σ·nàDtyÆ+yO·<.±*->}এক্স,Y


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