অলিম্পিক রিং সিকোয়েন্স


18

চ্যালেঞ্জ:

একটি সূচক পূর্ণসংখ্যা দেওয়া nহয়, হয় nএই সিকোয়েন্সের 'তম আইটেমটি আউটপুট করুন, বা অনুক্রমটিকে ইনডেক্স সহ এবং অন্তর্ভুক্ত করুন n:

25,25,7,28,29,20,21,22,23,14,35,26,7,28,29,20,16,29,12,15,28,21,14,17,30,13,16,29,12,15,28,21,10,6,12,18,15,11,7,13,19,17,13,9,15,21,18,14,10,16,22,19,15,11,17,23,20,16,12,18,24,21,17,13,19,25,23,19,15,21,27,24,20,16,22,28,25,21,17,23,29,16,13,9,15,21,18,14,10,16,22,20,16,12,18,24,21,17,13,19

এই ক্রমটি কীভাবে কাজ করবে?

দ্রষ্টব্য: এই ব্যাখ্যায় সূচকটি n1-সূচকযুক্ত। দুটি দৈর্ঘ্যের দৈর্ঘ্যের উপর দিয়ে
সংখ্যাটি রাখুন , যেখানে বর্তমান পুনরাবৃত্তি এবং ব্যবহৃত সংখ্যার দৈর্ঘ্যের উপর নির্ভর করে এবং তারপরে সেই দুটি লাইনের 'ম / ডান-সর্বাধিক অলিম্পিক রিংয়ের অঙ্কগুলি যোগ করুন ।1xn*6 - 1xn

ক্রমের প্রথম সংখ্যাটি নিম্নরূপ গণনা করা হয়:

The length of the lines are 5 (because 1*6 - 1 = 5):
12345
67891(0)

Then leave the digits in an Olympic Rings pattern:
1 3 5
 7 9

And sum them:
1+3+5+7+9 = 25

সুতরাং n=1ফলাফল 25

ক্রমের দ্বিতীয় সংখ্যাটি নিম্নরূপ গণনা করা হয়:

The length of the lines are 11 (because 2*6 - 1 = 11):
12345678910
11121314151(6)

Then leave the digits in the second/right-most Olympic Rings pattern:
      7 9 0 
       4 5

And sum them:
7+9+0+4+5 = 25

সুতরাং n=2ফলাফল 25

ক্রমের তৃতীয় সংখ্যাটি নিম্নরূপ গণনা করা হয়:

The length of the lines are 17 (because 3*6 - 1 = 17):
12345678910111213
14151617181920212(2)

Then leave the digits in the third/right-most Olympic Rings pattern:
            1 2 3
             0 1

And sum them:
1+2+3+0+1 = 7

সুতরাং n=3ফলাফল 7

প্রভৃতি

চ্যালেঞ্জ বিধি:

  • আপনি যখন nঅনুক্রমের 'তম আইটেমটি আউটপুট করেন , আপনাকে 1 ইনডেক্সের পরিবর্তে ইনপুটটি 0-সূচিযুক্ত হিসাবে গ্রহণ করার অনুমতি দেওয়া হয় তবে মনে রাখবেন যে এর গণনাগুলি n*6 - 1তখন হয়ে যাবে (n+1)*6 - 1বা (n+1)*5 + n
  • যখন আমরা দৈর্ঘ্যে পৌঁছেছি তখন একের বেশি সংখ্যার একক সংখ্যা প্রথম লাইনের শেষে বিভক্ত হতে পারে n*5 + n-1, সুতরাং এটি সম্ভব যে 2 বা ততোধিক সংখ্যার একটি সংখ্যা আংশিকভাবে লাইন 1 এর অনুবর্তী অংশ এবং আংশিকভাবে লাইন 2 এর নেতৃস্থানীয় অংশ।

সাধারণ নিয়ম:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার পক্ষে যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • স্ট্যান্ডার্ড নিয়মগুলি আপনার উত্তরের জন্য প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং রিটার্ন-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে আপনার কোডের জন্য একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন।
  • এছাড়াও, প্রয়োজনে একটি ব্যাখ্যা যোগ করুন।

পরীক্ষার কেস:

এখানে পরীক্ষার 1-1,000 টির ক্ষেত্রে একটি পেস্ট-বিন রয়েছে , সুতরাং সেগুলির মধ্যে যে কোনও একটি চয়ন করতে নির্দ্বিধায়।

কিছু অতিরিক্ত উচ্চতর পরীক্ষার কেস:

1010:   24
1011:   24
2500:   19
5000:   23
7500:   8
10000:  8
100000: 25

1*5 + 1-1 = 5? এটা করা উচিত নয় 1*5 + 5 - 1 = 9?
নিডজেজেকোব 22'18

@ নিডজেজেকোব, না n=1, তাই n*5 + n-1পরিণত হয় 1*5 + 1-1, যা ঘুরে দেখা যায় 5 - 0 = 5
কেভিন ক্রুইজসেন 22'18

নয় n * 5 + n - 1সমান n * 6 - 1?
ব্রায়ান এইচ।

@BrianH। তুমি ঠিক আছ, সত্যই। লক্ষ্য করা গেছে পাশাপাশি মার্টিনের রেটিনার উত্তর দেখার পরে। এই সংক্ষিপ্ত সূত্রটি ব্যবহার করার জন্য আমি চ্যালেঞ্জের বর্ণনাটি সম্পাদনা করেছি।
কেভিন ক্রুইজসেন

উত্তর:


4

হুশ , 16 বাইট

ΣĊ2ṁ↑_5↑2CṁdN←*6

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

-3 বাইট H.PWiz ধন্যবাদ ।

(ধাক্কা দেওয়া) ব্যাখ্যা:

ΣĊ2ṁ↑_5↑2CṁdN←*6⁰
Σ                 Sum
 Ċ2                Drop every second element
   ṁ↑_5             Map "take last 5 elements", then concatenate
       ↑2            Take first 2 elements
         C            Cut x into sublists of length y
          ṁdN          [1,2,3,4,5,6,7,8,9,1,0,1,1,1,2,1,3,...] (x)
             ←         Decrement (y)
              *6        Multiply with 6
                ⁰        First argument

@ কেভিন ক্রুইজসেন অদ্ভুত, কারণ আমি কেবল একটি যুক্ত করতে যাচ্ছি। তবে আমি যাইহোক উত্তর গ্রহণের প্রস্তাব দিই না। ;-)
এরিক দি আউটগল্ফার

@ কেভিন ক্রুইজসেন আমি খুব তাড়াতাড়ি ব্যাখ্যাটি যুক্ত করেছি, যদিও এটি খুব ভাল এটিএম নয় ...
এরিক দ্য আউটগল্ফার

আমার জন্য যথেষ্ট ভাল, গৃহীত। এবং ব্যক্তিগতভাবে আমি চ্যালেঞ্জগুলি গ্রহণ করতে পছন্দ করি, যদিও এটি সত্যই প্রয়োজনীয় নয়। যদি কেউ আপনার চেয়ে ছোট উত্তর পোস্ট করে তবে অবশ্যই আমি এটি আবার পরিবর্তন করব।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন এর বিপরীতে মূল উদ্দেশ্যটি একটি সংক্ষিপ্ত উত্তর পোস্ট হওয়ার পরে যা ঘটে তা নয়, তবে যে কেউ অন্য উত্তর পোস্ট করতে নিরুৎসাহিত হতে পারে। যাইহোক, আপনার কল।
এরিক আউটগল্ফার

5

রেটিনা , 70 68 62 বাইট

.+
10**
.
$.>`
~(`.+
6*$+*
)`.(.+)
L`.{$.1}
%,-6`.

,2,9`.
*
_

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

ব্যাখ্যা

আসুন ইনপুট কল এন , এবং আমরা ব্যবহার করব 3একটি উদাহরণ হিসাবে।

.+
10**

10**সংক্ষিপ্ত জন্য 10*$&*_যা একটি স্ট্রিং ইনপুট প্রতিস্থাপন 10n আন্ডারস্কোর।

.
$.>`

এখন আমরা প্রতিটি আন্ডারস্কোরকে স্ট্রিংয়ের দৈর্ঘ্যের সাথে প্রতিস্থাপিত করি এবং সেই আন্ডারস্কোর সহ। সুতরাং এটি কেবল 1 থেকে 10n পর্যন্ত সমস্ত সংশ্লেষিত সংখ্যার ফলাফল দেয় ( 10n সর্বদা প্রয়োজনীয় দৈর্ঘ্যের দুটি লাইন পূরণ করার জন্য যথেষ্ট)।

~(`.+
6*$+*

Eval! এটি এবং পরবর্তী পর্যায়ে অন্য একটি প্রোগ্রামের উত্স কোড উত্পন্ন হবে, যা পরে সংক্ষিপ্ত পূর্ণসংখ্যার স্ট্রিংয়ের বিরুদ্ধে চালিত হবে।

এই প্রোগ্রামটি তৈরি করতে, এই পর্যায়ে প্রথমে পূর্ণসংখ্যার 6n আন্ডারস্কোর ( $+প্রোগ্রামটির মূল ইনপুট বোঝায়) দিয়ে প্রতিস্থাপন করে ।

)`.(.+)
L`.{$.1}

'সেই আন্ডারস্কোর প্রতিস্থাপন সঙ্গে L`.{…}, যেখানে হয় 6n -1 (লাইন আমরা এ খুঁজছেন দৈর্ঘ্য)। সুতরাং আমরা একটি রেজেক্স তৈরি করেছি, যার পরিমাণটি মূল ইনপুটটির উপর নির্ভর করে।

যখন এই প্রোগ্রামটি বিশদে পরিণত হয় এটি 6n -1 দৈর্ঘ্যের খণ্ডগুলির সাথে মেলে , যার মধ্যে কমপক্ষে দুটি হবে। আমাদের উদাহরণ ইনপুট জন্য 3, আমরা এখানে শেষ:

12345678910111213
14151617181920212
22324252627282930

এখন আমাদের কেবল প্রাসঙ্গিক অঙ্কগুলি বের করতে হবে।

%,-6`.

প্রথমত, প্রতিটি লাইনে ( %) আমরা শেষ পাঁচটি সংখ্যা ( ,-6) বাদে সবগুলি সরিয়ে ফেলি । যে আমাদের দেয়

11213
20212
82930

অবশেষে:

,2,9`.
*

আমরা 2প্রথম দশে প্রতিটি অন্যান্য অঙ্ক ( ) প্রসারিত করি ( 9এটি 0-ভিত্তিক) আনারিতে। অলিম্পিক রিং পজিশনে থাকা সেগুলিই ঘটে।

_

এবং আমরা ফলাফলকে আন্ডারস্কোরগুলির সংখ্যা গণনা করি, তাদের যোগফল এবং দশমিককে ফল রূপান্তর করি।


59 বাইট যদিও কিছুটা অগোছালো
এইচ.পি.উইজ

@ H.PWiz ইনপুটটির জন্য কাজ করছে বলে মনে হয় না 1
মার্টিন এন্ডার

ওহ হ্যাঁ, এটি হবে-7
এইচ.পি.উইজ


3

জাপট , 33 32 30 29 28 27 বাইট

ওহ, এটি সুন্দর নয়!

N ম পদের আউটপুটস , 1-ইনডেক্সড।

*6É
*2 õ ¬òU mt5n)¬¬ë2 ¯5 x

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


ব্যাখ্যা

                         :Implicit input of integer U           :e.g., 3
*6É    
*6                       :Input times 6                         :18
  É                      :Subtract 1                            :17
   \n                    :Assign the above to variable U

*2 õ ¬òU mt5n)¬¬ë2 ¯5 x
*2 õ                     :[1,U*2]                               :[1,2,3,...,33,34]
     ¬                   :Join to a string                      :"123...3334"
      òU                 :Partitions of length U                :["123...13","1415...212","22324...30","31323334"]
         m               :Map
          t5n)           :  Get last 5 characters               :["11213","20212","82930","23334"]
              ¬          :Join to a string                      :"11213202128293023334"
               ¬         :Split to an array                     :["1","1","2","1","3","2","0","2","1","2","8","2","9","3","0"],["2","3","3","3","4"]]
                ë2       :Get every second element              :["1","2","3","0","1","8","9","0","3","3"]
                   ¯5    :Get first 5 elements                  :["1","2","3","0","1"]
                      x  :Reduce by addition                    :7
                         :Implicit output of result



2

05 এ বি 1 ই , 22 21 20 বাইট

6*<xLJsô2£íε5£}SāÉÏO

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

ব্যাখ্যা

6*<                    # push input*6-1
   xL                  # leave it on the stack while pushing [1 ... 12*input-2]
     J                 # join the numbers to a single string
      sô               # split the string into pieces of size input*6-1
        2£             # take the first 2 such pieces
          í            # reverse each string
           ε5£}        # take the first 5 chars of each
               S       # split to a single list of digits
                ā      # push range [1 ... len(list)]
                 ÉÏ    # keep only the numbers in the list of digits which are odd in this
                   O   # sum

বিকল্প 21 বাইট পদ্ধতির

6*<©·LJƵYS24S®-ì®-(èO

@ কেভিন ক্রুজসেন: অবশ্যই ব্যাখ্যাটি যুক্ত করার আগে আমি আরও কিছুটা চেষ্টা করে দেখার চেষ্টা করছিলাম, তবে আমার সত্যিই এতটা সময় পাওয়া যায়নি এখানে এটি :)
এমিগানা

ধন্যবাদ! এবং আমি জানি যে বেশিরভাগ লোকেরা ব্যাখ্যা যোগ করার আগে এটি যথাসম্ভব প্রথমে গল্ফ পছন্দ করে, তবে যেহেতু 15+ ঘন্টা আপনার উত্তরটির আপডেট হয় নি আমি বুঝতে পেরেছিলাম আমি কেবল একটি ব্যাখ্যা চাইব। :) সুন্দর উত্তর, বিটিডব্লিউ!
কেভিন ক্রুইজসেন

2

জেলি , 19 বাইট

×6’µḤD€Ẏsḣ2ṫ€-4Ẏm2S

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

×6’µḤD€Ẏsḣ2ṫ€-4Ẏm2S Arguments: n (1-indexed)
×6                  Multiply by 6
  ’                 Decrement
   µ                Call that value N and start a new chain with argument N
    Ḥ               Double
      €             Create an inclusive range from 1 to 2N and call this link on it
     D               Get the decimal digits of each integer in the range
       Ẏ            Concatenate the lists of digits
        s           Split into length-N chunks
         ḣ2         Get the first two elements
            €-4     Map this link over the length-2 list with right argument -4
           ṫ         Get elements from this index onwards (supports negative indices too)
               Ẏ    Concatenate the two length-5 lists into one length-10 list
                m2  Take every second element starting from the first
                  S Sum

আপনি একটি ব্যাখ্যা যোগ করতে আপত্তি হবে?
কেভিন ক্রুইজসেন 23'18

@ কেভিন ক্রুজসেন নিশ্চিত, তবে আমি সাধারণত অনুরোধের ভিত্তিতে এটি করি, অন্যথায় আমি অন্যান্য চ্যালেঞ্জের জবাব দেওয়া, অন্য জিনিসগুলি বা ঘুমানোর দিকে মনোনিবেশ করি: পি
এরিক দ্য আউটগলফার




1

জাভা 8, 138 111 109 বাইট

n->{String s="";int r=0,i=1;for(n=n*6-1;i<3*n;s+=i++);for(i=5;i>0;r+=s.charAt(n+n*(i%2^1)-i--)-48);return r;}

আমি অবশ্যই আমার নিজের চ্যালেঞ্জ উত্তর দিতে হবে। :)
আমি আমার প্রাথমিক কোডটি হারিয়েছি যা আমি চ্যালেঞ্জ বিবরণীতে পরীক্ষার ফলাফল তৈরি করতে ব্যবহার করেছি, সুতরাং আমি সবে শুরু করেছি।

ব্যাখ্যা:

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

n->{                               // Method with integer as both parameter and return-type
  String s="";                     //  Temp String
  int r=0,                         //  Result-sum, starting at 0
      i=1;                         //  Index integer, starting at 1
  for(n=n*6-1;                     //  Replace the input with `n*6-1`
      i<3*n;                       //  Loop from 1 up to 3*n (exclusive)
      s+=i++);                     //   And append the temp-String with `i`
  for(i=5;i>0;                     //  Loop from 5 down to 0 (exclusive)
    r+=                            //   Add to the result-sum:
       s.charAt(               )-48);
                                   //    The character at index X, converted to a number,
                n+n*(i%2^1)-i--    //    with X being `n-i` (i=odd) or `n+n-i` (i=even)
  return r;}                       //  Return the result-sum
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.