পিছনে এবং ফোর্থ সিকোয়েন্স


18

একটি পাথ গঠিত কল্পনা <এবং >এবং শেষ হওয়া একটি @যেমন

><>@

একটি ওয়াকার বাম-সর্বাধিক কক্ষে শুরু হয়। তিনি নিম্নলিখিতভাবে পথটি অতিক্রম করবেন:

  • যদি ওয়াকার কোনও @ঘরে থাকে তবে সে লক্ষ্যে পৌঁছে যায় এবং শেষ হয়ে যায়।
  • যদি ওয়াকারটি কোনও >ঘরে থাকে তবে পুরো পথটি এক চক্রকে ডানদিকে সরায়, চক্রাকারে, ওয়াকারের সাথে রাখে
  • যদি ওয়াকার কোনও <ঘরে থাকে তবে পুরো পথটি একটি চক্রের সাথে বাম দিকে চলাচল করে, ওয়াকারের সাথে রাখে
  • এরপরে, ওয়াকার একক পদক্ষেপ নেয়। যদি সে পথের উভয় প্রান্তে থাকে তবে সে প্রান্ত থেকে সরে যায়। অন্যথায় তিনি শেষ ধাপে যে দিকে চালিত হন সেদিকে অগ্রসর হয় (ঘূর্ণন উপেক্ষা করে), ডান দিকে হাঁটতে শুরু করে।

উপরের উদাহরণ মাধ্যমে কাজ করা যাক। ওয়াকারের অবস্থানটি এর সাথে চিহ্নিত ^:

><>@   --rotate-->  @><>
^                    ^
step right (first step):
@><>   --rotate-->  ><>@
  ^                  ^
step right:
><>@   --rotate-->  @><>
  ^                    ^
step left (dead end):
@><>   --rotate-->  ><>@
  ^                  ^
step left:
><>@   --rotate-->  @><>
^                    ^
step left:
@><>   Goal reached!
^

ওয়াকার প্রক্রিয়াটিতে 6 টি সেল পরিদর্শন করেছেন (প্রারম্ভিক কোষটি পাশাপাশি @, এবং প্রতিটি কক্ষ যতবার পরিদর্শন করা হয়েছে ততবার গণনা করছে)।

এখানে একটি ছোট উদাহরণ রয়েছে, যেখানে ঘোরার সাহায্যে প্রান্তগুলি পেরিয়ে ওয়াকার স্থানান্তরিত হয়:

>>@   --rotate-->  @>>
^                   ^
step right (first step):
@>>   --rotate-->  >@>
  ^                ^
step right (dead end):
>@>   Goal reached!
 ^

এবার ওয়াকার 3 টি সেল পরিদর্শন করেছে ।

আমরা সহজেই এটি একটি পূর্ণসংখ্যার ক্রমিকায় রূপান্তর করতে পারি:

  • আপনাকে একটি ধনাত্মক পূর্ণসংখ্যা এন দেওয়া হয়েছে , যেমন 9
  • আপনি এই পূর্ণসংখ্যার বাইনারি উপস্থাপনাটি গণনা করুন, যেমন 1001
  • তারপর ঘুরে 1মধ্যে >এবং 0মধ্যে <এবং একটি সংযোজন @: ><<>@
  • আমরা এইভাবে নির্মিত সংখ্যায় ওয়াকার দ্বারা পরিদর্শন করা কক্ষের সংখ্যা এন এর সাথে সংযুক্ত করি ।

ফলাফলের ক্রমের প্রথম কয়েকটি উপাদান হ'ল:

2, 3, 3, 4, 6, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6,
6, 10, 6, 10, 8, 8, 6, 10, 8, 8, 6, 6, 6, 6, 7, 7

এটি বেশ স্বেচ্ছাসেবী মনে হতে পারে, তবে ফলত ক্রমটি আসলে অনেকগুলি কাঠামোতে পরিণত হয়:

এখানে চিত্র বর্ণনা লিখুন

রেফারেন্সের জন্য, আপনি এই পেস্টবিনে ক্রমের প্রথম 2048 সংখ্যাগুলি খুঁজে পেতে পারেন ।

চ্যালেঞ্জ

আপনি এটি অনুমান করেছেন: আপনি উপরের ক্রমটি গণনা করতে পারেন। আপনি তিনটি উপায়ের মধ্যে এটি করতে পারেন:

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

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

আপনি STDIN (অথবা নিকটতম বিকল্প), কমান্ড-লাইন আর্গুমেন্ট বা ফাংশন আর্গুমেন্টের মাধ্যমে ইনপুট নিয়ে কোনও প্রোগ্রাম বা ফাংশন লিখতে এবং STDOUT (বা নিকটতম বিকল্প), ফাংশন রিটার্ন মান বা ফাংশন (আউট) প্যারামিটারের মাধ্যমে ফলাফল আউটপুট করতে পারেন।

স্ট্যান্ডার্ড বিধি প্রযোজ্য।

পটভূমি

এটি আসলে "টিক্স" এর সংখ্যার গণনা করে আমার প্রগা .় প্রোগ্রামিং ভাষার ল্যাবরেথকে সোজা কোড হিসাবে "পাথ" ব্যাখ্যা করার প্রয়োজন হবে a সেক্ষেত্রে, "ওয়াকার" হ'ল নির্দেশ নির্দেশক (যার অবস্থান ও দিক রয়েছে), @কমান্ডটি প্রোগ্রামটি সমাপ্ত করে <এবং >উত্স-কোড পরিবর্তন কমান্ড।


কোনটি প্রয়োজন? 1, 2 বা 3 এবং কীভাবে আমাদের জমা দেওয়া হয়
Abr001am

@ আগওয়া 1001 "আপনি তিনটি উপায়ে যেকোন একটি উপায়ে এটি করতে পারেন:" আপনি যে পদ্ধতির এবং ভাষার ব্যবহার করতে চান তার পক্ষে যে কোনওটিকে সহজ বলে মনে করুন।
মার্টিন এন্ডার

আজ কেন সমস্ত পুনরাবৃত্তি সংখ্যা!?! কোডগল্ফ.স্ট্যাকেক্সেঞ্জাওয়েজ / প্রশ্নগুলি / 78787877/২ : ডি
বিড়াল

উত্তর:


6

জেলি , 10 বাইট

ð+\ḤiḤoµL‘

এই ফাংশনটি ইনপুট হিসাবে তার বাইনারি সংখ্যার তালিকার আকারে একটি একক পূর্ণসংখ্যা গ্রহণ করে।

অ্যালগরিদমটি @ আগওয়া 1001 এর উত্তর থেকে সমান ।

এটি অনলাইন চেষ্টা করুন! অথবা প্রথম 2048 নম্বর উত্পন্ন করুন

পটভূমি

মোট L + 1 পজিশন দিয়ে 0 থেকে L পর্যন্ত নীচের অবস্থানগুলি গণনা করুন । এল, এন সংখ্যার এন এর বাইনারি সংখ্যার সাথে মিলে যায় যা পথটি এনকোড করে। এই স্বরলিপি সঙ্গে, ভ্রমণকারী অবস্থানে শুরু হয় 0 , অবস্থানে লক্ষ্য এল

ওয়াকারের প্রতিটি পদক্ষেপের সাথে সাথে তিনি লক্ষ্যটির এক ধাপ এগিয়ে পান (বর্তমানে তিনি যেদিকে যাচ্ছেন তার দিকে)। এছাড়াও, প্রতিটি শিফট-স্টেপ সহ, তিনি স্থানান্তরিত দিকের সাথে বা তার বিপক্ষে চলে কিনা তার উপর নির্ভর করে তিনি হয় 2 মডিউল এল + 1 দ্বারা নিজের অবস্থান বৃদ্ধি করেন বা হ্রাস করেন , বা তিনি বর্তমান অবস্থানে রয়েছেন।

দিক পরিবর্তন করতে, তিনি অবস্থান জমি রয়েছে এল - 1 (সম্মুখীন এল ) অথবা অবস্থান 1 (সম্মুখীন 0 ), তারপর তার দিক স্থানান্তরিত দেখায়। তিনি পরবর্তী পদক্ষেপটি তার বিপরীত দিকের মুখোমুখি হয়ে তার আগের অবস্থানে ফিরে আসবে।

  • যদি L সমান হয় তবে এল - 1 বিজোড় হয়, তাই তিনি নিজের প্রাথমিক অবস্থান থেকে সরাসরি এল - 1 এ যেতে পারবেন না । এটি পৌঁছানোর একমাত্র উপায় মধ্য দিয়ে পাস হয় এল , এর বাহিত পেয়ে 0 এবং এর দেশে পরবর্তী ধাপে গ্রহণ 1 , তারপর ডান পৌছায়। এর জন্য 2L অবস্থানের অগ্রগতি প্রয়োজন , যা এল পদক্ষেপের চেয়ে কম কোনও ক্ষেত্রে করা যায় ।

    তবে, দিক পরিবর্তন না করে এল পদক্ষেপ নেওয়ার পরে তিনি লক্ষ্যে পৌঁছে যাবেন। প্রারম্ভিক কক্ষের জন্য একটি যুক্ত করা, আমরা এক্ষেত্রে মোট এল +1 টি পরিদর্শন করা ঘর পেয়েছি ।

  • যদি এল বিজোড় হয়, এল - 1 সমান হয়, তাই সে ডান দিকে (এল - 1) / 2 বার স্থানান্তরিত হয়ে সেই অবস্থানে পৌঁছতে পারে । অবস্থান যদি এল - 1 নীচে একটি হল 1 সেই সময়ে তিনি অবস্থানে স্থানান্তরিত হবে এল , চারপাশে ঘুরিয়ে, এবং অবস্থান: ধাপে এল - 1 (সম্মুখীন বামমুখী)।

    তিনি তার লক্ষ্যে পৌঁছানোর আগে এটি ঘটতে পারে বা নাও হতে পারে, তাই বিশ্লেষণ করার জন্য দুটি মামলা রয়েছে:

    • যদি কম (এল +1) / 2 এর ঘটনার 1 এর বাইনারি সম্প্রসারণ মধ্যে এন , গ্রহণ এল পদক্ষেপ দিক ঘুরে চলা করা হবে না। যেহেতু এই এল পদক্ষেপগুলি ওয়াকারকে তার লক্ষ্যে নিয়ে আসে, প্রারম্ভিক কক্ষের জন্য একটি যুক্ত করে, আমরা এক্ষেত্রে মোট এল + 1 টি পরিদর্শনকৃত সেল পাই ।

    • তাহলে আছে অন্তত (এল +1) / 2 এর ঘটনার 1 এর বাইনারি সম্প্রসারণ মধ্যে এন , এর আগুয়ান ((এল +1) / 2) তম সংঘটন প্রয়োজন হবে আমি পদক্ষেপ, যেখানে আমি যে ঘটনার প্রাথমিক অবস্থান এর 1

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

      যেহেতু বাম দিকে লক্ষ্যটির প্রাথমিক দূরত্ব 1 , আমি পদক্ষেপ নেওয়ার পরে , ওয়াকার দিক পরিবর্তন করার পরে লক্ষ্য থেকে I + 1 এর দূরত্বে নিজেকে আবিষ্কার করে । যেহেতু আমি <এল , আমাদের +1 ≤ এল রয়েছে তাই পরবর্তী আমি + 1 পদক্ষেপগুলি তাকে লক্ষ্যে নিয়ে আসবে।

      এটি মোট I + I + 1 = 2I + 1 নেওয়া পদক্ষেপ দেয়। প্রারম্ভিক কক্ষের জন্য একটি যুক্ত করা, আমরা এক্ষেত্রে মোট 2 আই + 1 + 1 = 2 (আই + 1) পরিদর্শন করা কক্ষগুলি পাই

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

ð+\ḤiḤoµL‘  Main link. Argument: x (list of binary digits of N)

       µ    Monadic chain. Argument: x
        L   Compute L, the length of x.
         ‘  Increment to yield L + 1.

ð           Dyadic chain. Left argument: x. Right argument: L + 1
 +\         Compute the cumulative sum of x.
            This replaces the k-th one (and all zeroes to its right) with k.
   Ḥ        Unhalve; multiply all partial sums by 2.
    i       Find the first index of L + 1.
            This either gives I + 1, the 1-based index of the ((L + 1) / 2)-th one
            or 0 if the list doesn't contain L + 1.
            The result will be 0 if x contains less than (L + 1) / 2 ones
            or if L + 1 is an odd integer.
     Ḥ      Unhalve; yield either 2(I + 1) or 0.
      o     Logical OR with L + 1; if the previous operation returned a falsy
            value (i.e., if it yielded 0), replace that value with L + 1.

9

মতলব (স্কোর = 230, এন = ইনফ)

function w(s,f),b=[];e=0;for i=s:f,a=dec2bin(i);c=find(a=='1');g=numel(a)+1;if numel(c)>=g/2;if mod(g,2)==1,fprintf('%d ',g);else,d=c(g/2);fprintf('%d ',2*d);end,else,fprintf('%d ',g);end,e=e+1;if(e==100),e=0;fprintf('\n');end;end
  • ফাংশনটি সূচনা সূচকের মতো এবং চূড়ান্ত হিসাবে শেষ হয় ( infআপনি যদি অসীমকে ধরে রাখতে চান তবে টাইপ করুন)।
  • ফাংশনটি h=1000000000000000000000000000000000000000000000000000;w(h,h+1)নিশ্চিত করতে কোনও দুটি আউটপুট টাইপের মধ্যে কোনও উল্লেখযোগ্য সময়সীমা ছাড়াই চিরতরে যেতে পারে।
  • অ্যালগরিদম একটি গাণিতিক পদ্ধতির অনুসরণ করে যা আমি পরে ব্যাখ্যা করব এবং এটি মার্টিনের রেফারেন্সযুক্ত তালিকার বিষয়টি নিশ্চিত করে, এই প্রোগ্রামটির ভিত্তিতে:

    stored=[2, 3, 3, 4, 6, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 10, 6, 10, 8, 8, 6, 10, 8, 8, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 14, 8, 8, 8, 14, 8, 14, 12, 12, 8, 8, 8, 14, 8, 14, 12, 12, 8, 14, 12, 12, 10, 10, 10, 10, 8, 8, 8, 14, 8, 14, 12, 12, 8, 14, 12, 12, 10, 10, 10, 10, 8, 14, 12, 12, 10, 10, 10, 10, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 18, 10, 10, 10, 10, 10, 10, 10, 18, 10, 10, 10, 18, 10, 18, 16, 16, 10, 10, 10, 10, 10, 10, 10, 18, 10, 10, 10, 18, 10, 18, 16, 16, 10, 10, 10, 18, 10, 18, 16, 16, 10, 18, 16, 16, 14, 14, 14, 14, 10, 10, 10, 10, 10, 10, 10, 18, 10, 10, 10, 18, 10, 18, 16, 16, 10, 10, 10, 18, 10, 18, 16, 16, 10, 18, 16, 16, 14, 14, 14, 14, 10, 10, 10, 18, 10, 18, 16, 16, 10, 18, 16, 16, 14, 14, 14, 14, 10, 18, 16, 16, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 10, 10, 10, 10, 10, 18, 10, 10, 10, 18, 10, 18, 16, 16, 10, 10, 10, 18, 10, 18, 16, 16, 10, 18, 16, 16, 14, 14, 14, 14, 10, 10, 10, 18, 10, 18, 16, 16, 10, 18, 16, 16, 14, 14, 14, 14, 10, 18, 16, 16, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 10, 18, 10, 18, 16, 16, 10, 18, 16, 16, 14, 14, 14, 14, 10, 18, 16, 16, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 12, 10, 18, 16, 16, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 22, 12, 22, 20, 20, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 22, 12, 22, 20, 20, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 22, 12, 22, 20, 20, 12, 12, 12, 22, 12, 22, 20, 20, 12, 22, 20, 20, 18, 18, 18, 18, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 22, 12, 22, 20, 20, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 22, 12, 22, 20, 20, 12, 12, 12, 22, 12, 22, 20, 20, 12, 22, 20, 20, 18, 18, 18, 18, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 22, 12, 22, 20, 20, 12, 12, 12, 22, 12, 22, 20, 20, 12, 22, 20, 20, 18, 18, 18, 18, 12, 12, 12, 22, 12, 22, 20, 20, 12, 22, 20, 20, 18, 18, 18, 18, 12, 22, 20, 20, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 22, 12, 22, 20, 20, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 22, 12, 22, 20, 20, 12, 12, 12, 22, 12, 22, 20, 20, 12, 22, 20, 20, 18, 18, 18, 18, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 22, 12, 22, 20, 20, 12, 12, 12, 22, 12, 22, 20, 20, 12, 22, 20, 20, 18, 18, 18, 18, 12, 12, 12, 22, 12, 22, 20, 20, 12, 22, 20, 20, 18, 18, 18, 18, 12, 22, 20, 20, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 22, 12, 22, 20, 20, 12, 12, 12, 22, 12, 22, 20, 20, 12, 22, 20, 20, 18, 18, 18, 18, 12, 12, 12, 22, 12, 22, 20, 20, 12, 22, 20, 20, 18, 18, 18, 18, 12, 22, 20, 20, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 12, 12, 12, 22, 12, 22, 20, 20, 12, 22, 20, 20, 18, 18, 18, 18, 12, 22, 20, 20, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 12, 22, 20, 20, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 22, 12, 22, 20, 20, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 22, 12, 22, 20, 20, 12, 12, 12, 22, 12, 22, 20, 20, 12, 22, 20, 20, 18, 18, 18, 18, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 22, 12, 22, 20, 20, 12, 12, 12, 22, 12, 22, 20, 20, 12, 22, 20, 20, 18, 18, 18, 18, 12, 12, 12, 22, 12, 22, 20, 20, 12, 22, 20, 20, 18, 18, 18, 18, 12, 22, 20, 20, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 22, 12, 22, 20, 20, 12, 12, 12, 22, 12, 22, 20, 20, 12, 22, 20, 20, 18, 18, 18, 18, 12, 12, 12, 22, 12, 22, 20, 20, 12, 22, 20, 20, 18, 18, 18, 18, 12, 22, 20, 20, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 12, 12, 12, 22, 12, 22, 20, 20, 12, 22, 20, 20, 18, 18, 18, 18, 12, 22, 20, 20, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 12, 22, 20, 20, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 22, 12, 12, 12, 22, 12, 22, 20, 20, 12, 12, 12, 22, 12, 22, 20, 20, 12, 22, 20, 20, 18, 18, 18, 18, 12, 12, 12, 22, 12, 22, 20, 20, 12, 22, 20, 20, 18, 18, 18, 18, 12, 22, 20, 20, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 12, 12, 12, 22, 12, 22, 20, 20, 12, 22, 20, 20, 18, 18, 18, 18, 12, 22, 20, 20, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 12, 22, 20, 20, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 22, 12, 22, 20, 20, 12, 22, 20, 20, 18, 18, 18, 18, 12, 22, 20, 20, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 12, 22, 20, 20, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 22, 20, 20, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13];
    b=[];for i=1:numel(stored)
    a=dec2bin(i);
    c=find(a=='1');
    if numel(c)>=(numel(a)+1)/2
    if mod(numel(a)+1,2)==1
    b=[b numel(a)+1];
    else
    d=c((numel(a)+1)/2);
    b=[b 2*d];
    end
    else
    b=[b numel(a)+1];
    end
    end
    for i=1:numel(stored)
    if (b(i))
    if b(i)~=stored(i)
    'error',
    end
    end
    end
    
  • যেহেতু অ্যালগরিদম 2048 প্রথম টেস্টকেসগুলি যাচাই করে, তাই আমি অন্ধভাবে এটি কোনও পরীক্ষার ক্ষেত্রেই ধরে নেব, সুতরাং আমার অ্যালগরিদম এই প্রক্রিয়াটিতে আবিষ্কার হওয়া কয়েকটি বৈশিষ্ট্য সম্পর্কে কাজ করে যা আমি স্থানান্তরিত এবং পয়েন্টার ব্যথা ছাড়াই:

    1- যদি বাইনারি অনুবাদে 1 এর দ্বিগুণ সংখ্যার সিকুনসের দৈর্ঘ্য অতিক্রম Lনা করে তবে আউটপুটL+1

    2- যদি ক্রমের দৈর্ঘ্য সমান হয় এবং পূর্ববর্তী শর্তটি সেট না হয় তাই আউটপুট একই L+1

    3- অন্যথায়, আউটপুট L/21 এর তম সূচক দ্বিগুণ ।


"আউটপুটটি 1 এর L / 2 তম সূচকের দ্বিগুণ" দিয়ে আপনি কী বোঝাতে চেয়েছেন তা কি আপনি পরিষ্কার করতে পারেন? ? এটি অবিশ্বাস্যভাবে অস্পষ্ট।
orlp

@ ক্রম এই ক্রমটি 10010001 এ দ্বিতীয় ঘটনাটি 4 হয়, 2 দ্বারা 2 হয় 8
Abr001

1
এটি কমপক্ষে 89 বাইটে গল্ফ করা যেতে পারে a=dec2bin(input(''));c=find(a=='1');g=nnz(a)+1;if nnz(c)<g/2|mod(g,2);g,else,2*c(g/2),end, যা কেবল ক্রমের একক উপাদান দেয়।
ডেভিড

8

পাইথন, 122 119 113 110 108 107 103 বাইট

def l(b):
 p=e=w=len(b);d=i=1
 while e:p+=1-2*b[w-e];d*=2*(1!=d-p>~w)-1;p-=d;e=(e-d)%-~w;i+=1
 return i

বাইনারি অঙ্কের তালিকা হিসাবে ইনপুট নেয়। পরীক্ষার জন্য সহায়ক ফাংশন:

b = lambda n: [int(d) for d in bin(n)[2:]]

7 বাইট সংরক্ষণের জন্য লিনকে ক্রেডিট করুন।


4
পিউ পিউ পিউ. : ডি
অ্যাডমবর্কবার্ক

এটি খুব বেশি নয়, তবে ... আমি মনে করি p-d-1in[-2,w]একটি বাইট সংরক্ষণ করে।
লিন

বিবৃতি পরিবর্তন করে d*=2*(1!=d-p>~w)-1আরও চারজনের সাশ্রয়! ° v °
লিন

@ লিন ডি মরগানের আইন ব্যবহারের দুর্দান্ত ব্যবহার!
orlp

আপনি কি আমার সাথে তুলনা করতে একটি বিস্তৃত আউটপুট পরিসীমা সরবরাহ করতে পারেন? ধন্যবাদ
Abr001am

3

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

def l(b):l=len(b);return(l>=sum(b)*2or l%2<1)and-~l or[i+1for i,c in enumerate(b)if b[i]][l/2]*2

আগাওয়া 1001 এর উজ্জ্বল উত্তরটির পাইথন বন্দর।

পঠনযোগ্য সংস্করণ:

def l(b):
    if len(b) >= 2*sum(b) or len(b)%2 == 0:
        return len(b) + 1

    return 2*[i+1 for i, c in enumerate(b) if b[i]][len(b)//2]

@ আগওয়া 1001 আমি আপনার অ্যালগরিদমটি এখনও বুঝতে পারি নি, তবে পরীক্ষামূলকভাবে এটি 10 ​​মিলিয়ন পর্যন্ত যাচাই করেছি।
orlp

3

এমএটিএল, 31 , 25 বাইট

BXHnQtHsy2/<w2\+~?2/Hfw)E

এটি Agawa001 এর অ্যালগরিদমের মাত্র একটি এমএটিএল সংস্করণ, এটি কোনও পূর্ণসংখ্যার ইনপুট N গ্রহণ করে এবং অনুক্রমের N-th পদটি প্রদান করে। স্ট্যাকের সমস্ত উপাদানগুলির সাথে তাল মিলিয়ে চালাকি করা জটিল ছিল! পাগল হওয়া এড়াতে আমাকে একটি ক্লিপবোর্ড ব্যবহার করতে হয়েছিল। আপনি এটি অনলাইন চেষ্টা করতে পারেন !

:"@কোডের আগে এবং ]Dপরে যুক্ত করে প্রথম এন শর্তাদি মুদ্রণ করে তৈরি করা যায়।

6 সম্পূর্ণ বাইট সংরক্ষণ করার জন্য লুইস মেন্ডোকে ধন্যবাদ!


2

জুলিয়া 0.4, 4̷4̷ 42 বাইট

x->(k=endof(x)+1;try k=2find(x)[k/2]end;k)

এই ফাংশনটি ইনপুট হিসাবে তার বাইনারি সংখ্যার তালিকার আকারে একটি একক পূর্ণসংখ্যা গ্রহণ করে।

অ্যালগরিদমটি @ আগওয়া 1001 এর উত্তর এবং আমার জেলি উত্তরটির সমতুল্য ।

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

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

find(x)এক্স এর সমস্ত অ-শূন্য উপাদানগুলির 1-ভিত্তিক সূচকগুলি প্রদান করে । আমরা সূচক কে / 2 তে ফলাফলের অ্যারে অ্যাক্সেস করার চেষ্টা করি এবং যদি সফল হয় তবে নির্বাচিত সূচকের দ্বিগুণ দ্বারা কে কে ওভাররাইট করে ।

নিম্নলিখিতগুলির মধ্যে একটি সত্য হলে এটি এবং শুধুমাত্র ব্যর্থ হবে:

  • k / 2 হ'ল একটি অ-অবিচ্ছেদ্য ফ্লোট, তাই ইনেক্স্যাক্টএররর উত্থাপিত হয়।

  • সূচকের অ্যারেতে k / 2 টিরও কম উপাদান রয়েছে, তাই একটি বাউন্ডস এরর উত্থাপিত হয়।

উভয় ক্ষেত্রেই, ওভাররাইটিং কে ব্যর্থ হবে, সুতরাং এর আসল মানটি ফিরে আসবে।


1

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

s=>(l=s.length+1)%2|!(m=s.match(`(0*1){$l/2}}`))?l:m[0].length*2

একটি বাইনারি স্ট্রিং গ্রহণ করে। অন্যান্য বিভিন্ন উত্তর থেকে বাউন্স চেক ব্যবহার করে।


1

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

def f(x):k=len(x)+1;print next((i*2for i in range(k)if k==2*sum(x[:i])),k)

এই ফাংশনটি ইনপুট হিসাবে তার বাইনারি সংখ্যার তালিকার আকারে একটি একক পূর্ণসংখ্যা গ্রহণ করে।

অ্যালগরিদমটি @ আগওয়া 1001 এর উত্তর এবং আমার জেলি উত্তরটির সমতুল্য ।

আইডিয়নে এটি পরীক্ষা করুন

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

nextপ্রথম পূর্ণসংখ্যা 2i সন্ধান করার চেষ্টা করে যার ফলস্বরূপk==2*sum(x[:i]) সত্য হয়। যেহেতু আই উপাদান x[:i]রয়েছে তাই এটি (কে / ২) ম ম 1 এর 1 ভিত্তিক সূচক দেয় ।

nextযদি কে / 2 অ-অবিচ্ছেদ্য হয় বা এক্স - কে / 2 এর চেয়ে কম থাকে তবে ব্যর্থ হবে । এই ক্ষেত্রে, ডিফল্ট মান k প্রদান করে


0

> <> , 63 বাইট

2r11&>}:?v{1->:l2-%?vr{{$>1+$}$:2=$@&101.
 +&?!^&n;>{1+^ .0+bf<

এই চ্যালেঞ্জের উদাহরণ প্যাটার্নটি দেখার মুহুর্ত থেকেই আমি জানতাম কোন ভাষাটি ব্যবহার করতে হবে :)

এন থার্ম শব্দটি পেতে এন ব্যবহার করে ।

ইনপুট স্ট্যাকের সময় বাইনারি হতে পারে বলে ধরে নেওয়া হয়েছে। ওয়াকারকে ঘুরিয়ে দেওয়ার পরিবর্তে, এই সমাধানটি বেশিরভাগ ক্ষেত্রে ওয়াকারের নীচে টেপ সরানোর উপর নির্ভর করে।

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

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