রম্বস ক্রম


11

রম্ব্বির যে উপাদানগুলি বৃদ্ধি পায় তা গণনা করার কল্পনা করুন [1],[1,3,1],[1,3,5,3,1],…(কেবল বিজোড় সংখ্যা যেমন তারা সুন্দরভাবে সারিবদ্ধ হয়)। এটি নীচের মত দেখতে হবে, নোট করুন যে আপনি সর্বদা দিয়ে গণনা শুরু করেন 1:

                   01
       1        02 03 04
 1   2 3 4   05 06 07 08 09          …
       5        10 11 12
                   13
(1) (1,3,1)    (1,3,5,3,1)    (1,3,5,7,5,3,1)   …

এখন আপনি যদি কলামগুলি সংমিশ্রণ শুরু করেন ( [1],[2],[1,3,5],[4],[5],[2,6,10],…) তবে আপনি রম্বস ক্রমটি পান । এগুলি হ'ল ক্রমের প্রথম 100 উপাদান:

1,2,9,4,5,18,35,24,9,10,33,60,91,70,45,16,17,54,95,140,189,154,115,72,25,26,81,140,203,270,341,288,231,170,105,36,37,114,195,280,369,462,559,484,405,322,235,144,49,50,153,260,371,486,605,728,855,754,649,540,427,310,189,64,65,198,335,476,621,770,923,1080,1241,1110,975,836,693,546,395,240,81,82,249,420,595,774,957,1144,1335,1530,1729,1564,1395,1222,1045,864,679,490,297,100

আই

আপনি এই তিনটি ইনপুট / আউটপুট পদ্ধতির মধ্যে একটি চয়ন করতে পারেন (আপনার অবৈধ ইনপুটগুলি হ্যান্ডেল করতে হবে না):

  • একটি পূর্ণসংখ্যা n আউটপুট প্রদত্ত সেই অনুক্রমের n তম উপাদানকে (0- বা 1-তালিকাযুক্ত, আপনার পছন্দ)
  • সেই অনুক্রমের প্রথম এন উপাদানগুলিকে একটি পূর্ণসংখ্যা n আউটপুট দেওয়া হয়েছে
  • সিকোয়েন্সটি অনির্দিষ্টকালে মুদ্রণ / ফিরিয়ে দিন

Testcases

উপরের প্রথম 100 টি শর্তাবলী দেখুন, এখানে কিছু বড় উদাহরণ (1-ইনডেক্সড):

101 -> 101
443 -> 1329
1000 -> 49000    
1984 -> 164672
2017 -> 34289
2018 -> 30270
3000 -> 153000

উত্তর:


3

স্নোম্যান , 72 বাইট

((}1vn2nD#`nPnCdU!*2nM1`nR:#nSNaB#`nS2nMNdE;aM|#NdE2nP+#`nSNdE`|aA#nM*))

এটি এমন একটি সাবরুটিন যা 1-ইনডেক্সড ইনপুট নেয় এবং পারমাভারের মাধ্যমে সংশ্লিষ্ট আউটপুট প্রদান করে +

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

((        // begin subroutine
 }        // we'll only need 3 variables - b, e, g
 1vn2nD   // b = 0.5
 #`       // retrieve input and swap, now b = input and e = 0.5
 nP       // power, resulting in b=sqrt(input)
 nC       // ceiling - this gives the index i of the rhombus we want
 dU!*     // keep a copy of i in the permavar ! for later use
 2nM1`nR  // generate the range [1, 2i)
 :        // map the following block over the range...
  #nS     // subtract i, resulting in e.g. [-3 -2 -1 0 1 2 3] for i=4
  NaB     // absolute value - [3 2 1 0 1 2 3]
  #`nS    // subtract from i, giving [1 2 3 4 3 2 1]
  2nMNdE  // double and decrement, [1 3 5 7 5 3 1]
 ;aM      // map
 |        // shove the rhombus columns into g
 #NdE2nP  // b = (i-2)^2
 +#`      // move b into e and replace it with the original input
 nSNdE    // subtract the two and decrement, giving input-(i-2)^2-1
 `|aA     // this is the index into the rhombus columns that we want
 #nM*     // multiply by the original input and return
))

এটি মিঃ এক্সকোডারের উত্তর হিসাবে মূলত একই অ্যালগরিদম ব্যবহার করে - কেবলমাত্র পার্থক্যটি হ'ল এখানে আমরা কেবল রম্বসটির কলামগুলি তৈরি করি যা আমাদের সিল (স্কয়ার্ট (এন)) একমাস। এটি কেন কাজ করে তা চিত্রিত করতে এখানে প্রতিটি রম্বসের সাথে সামঞ্জস্যপূর্ণ ইনপুট রয়েছে:

rhombus #   inputs
1           1
2           2 3 4
3           5 6 7 8 9
4           10 11 12 13 14 15 16
...

নোট করুন যে বাম কলামটি ডান কলামে প্রতিটি উপাদানের বর্গমূলের সিলিংয়ের সাথে ঠিক মিল রয়েছে। এখান থেকে 1-ভিত্তিক সূচক পেতে, আমরা কেবল পূর্ববর্তী রম্বসের সূচকের বর্গক্ষেত্রটি বিয়োগ করি।


2

জেলি , 10 বাইট

Ḥ€€’ŒBFị@×

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

N ম মেয়াদ (1-ইনডেক্সড) ফেরত একটি সম্পূর্ণ প্রোগ্রাম / monadic লিঙ্ক ।

আমি লক্ষ্য করেছি যে প্রতিটি যোগফল কলামগুলির সামগ্রিক তালিকায় সেই কলামটির সূচক (ইনপুট নিজেই) সংশ্লিষ্ট রম্বসের সেই কলামটির সূচক দ্বারা গুণিত হয়েছে, সুতরাং সারিগুলি তৈরি করার দরকার নেই।

কিভাবে?

Program €€ 'ŒBFị @ × ~ সম্পূর্ণ প্রোগ্রাম। আমি ইনপুট কল করব।

  ~ The রেঞ্জের প্রতিটি পূর্ণসংখ্যার এক্সের জন্য [1, N]।
1 € [[1, এক্স] এর মধ্যে প্রতিটি পূর্ণসংখ্যা দ্বিগুণ করুন।
   'Re হ্রাস (বিয়োগ 1)।
    Œ বি ounce বাউন্স (উপাদান অনুসারে)। প্রতিটি Palindromize।
      এফ ~ ফ্ল্যাটেন
       ị @ our আমাদের তালিকার সূচক এন এ উপাদানটি পান।
         ~ N এন দ্বারা গুণ


2

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

@Ovs কে ধন্যবাদ 1 বাইট সংরক্ষণ করা হয়েছে

0-ইন্ডেক্স। A004737 থেকে প্রাপ্ত একটি বদ্ধ-ফর্ম এক্সপ্রেশন ।

n=>((k=n**.5|0)-Math.abs(n+k*~k))*2*++n+n

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


2

বেফুঞ্জ, 62 60 বাইট

&:1>:00p:*`|
00:-\*:g00:<>2-\-0v!`\g
*.@v+1<g00:<^*2g00_2*1+

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

ব্যাখ্যা

কার্যকরকরণের পথগুলির সাথে উত্স কোড হাইলাইট করা

*আমরা স্টিডিন থেকে এক-ভিত্তিক উপাদান নম্বর, এন পড়ে এবং একটি সদৃশ সংরক্ষণ করে শুরু করি।
*তারপর আমরা তা নির্ধারণ রম্বস আমরা হন, একটি পূর্ণসংখ্যা আপ গণনা দ্বারা পর্যন্ত r*r >= n
*রম্বসের ডান হাত থেকে কলাম অফসেট, সি , হয় r*r - n
*সেই অফসেটটি কেন্দ্রের অক্ষের চারপাশে প্রতিফলিত হওয়ার জন্য, আমরা চেক করি কিনা c >= r
*এবং যদি এটি হয়, তবে প্রতিফলিত সি হয়ে যায় r*2 - 2 - c
*আমাদের প্রতিফলিত সিটি হয়ে গেলে , কলামটির যোগফলটি সহজভাবে হয় (c*2 + 1) * n



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