বিরল প্রোটেক্টর


12

কিছু ধনাত্মক পূর্ণসংখ্যা দেওয়া হয়েছে n, কয়েকটি সংখ্যক চিহ্ন সহ একটি প্রটেক্টর ডিজাইন করুন যা আপনাকে এমন সমস্ত কোণকে পরিমাপ করতে দেয় যা 2π/nএকটি একক পরিমাপের প্রতিটি একক অবিচ্ছেদ্য একাধিক ।

বিস্তারিত

একটি আউটপুট হিসাবে, আপনি সীমার মধ্যে পূর্ণসংখ্যার একটি তালিকা আউটপুট পারে 0থেকে n-1(অথবা 1করতে nপ্রতিটি মার্কের অবস্থান প্রতিনিধিত্ব) যে। বিকল্পভাবে আপনি প্রতিটি চিহ্নের অবস্থানের nসাথে একটি দৈর্ঘ্যের একটি স্ট্রিং / তালিকা আউটপুট করতে পারেন #এবং একটি _(আন্ডারস্কোর) যেখানে কোনওটি নেই। (অথবা আরও সুবিধাজনক হলে দুটি পৃথক অক্ষর)
উদাহরণ: আপনার জন্য n = 5সমস্ত কোণ পরিমাপ করতে সক্ষম হওয়ার জন্য ঠিক তিনটি চিহ্নের প্রয়োজন 2π/5, 4π/5, 6π/5, 8π/5, 2π(উদাহরণস্বরূপ) একটি চিহ্ন এ 0, একটি চিহ্ন 2π/5এবং একটি চিহ্ন এ 6π/5। আমরা এটিকে তালিকা [0,1,3]হিসাবে বা স্ট্রিং হিসাবে এনকোড করতে পারি ##_#_

উদাহরণ

দ্রষ্টব্য যে আউটপুটগুলি অগত্যা অনন্য নয়।

n:  output:
 1  [0]
 2  [0,1]
 3  [0,1]
 4  [0,1,2]
 5  [0,1,2]
 6  [0,1,3]
 7  [0,1,3]
 8  [0,1,2,4]
 9  [0,1,3,4]
10  [0,1,3,6]
11  [0,1,3,8]
20  [0,1,2,3,6,10]

পিএস: এটি বিরল শাসক সমস্যার মতো, তবে একটি লিনিয়ার স্কেলের পরিবর্তে (দুটি প্রান্ত সহ) আমরা একটি বিজ্ঞপ্তি (কৌণিক) স্কেল বিবেচনা করি।

পিপিএস: এই স্ক্রিপ্টটির প্রত্যেকটির জন্য একটি সেট চিহ্নের একটি উদাহরণ গণনা করা উচিত nএটি অনলাইন চেষ্টা করুন!

পিপিপিএস: @ জিএনএন যেমন উল্লেখ করেছে, এই সমস্যাটি একটি চক্রাকার ক্রমের একটি ন্যূনতম পার্থক্য ভিত্তিক সন্ধানের সমতুল্য n। সর্বনিম্ন অর্ডারগুলি http://oeis.org/A283297 এ তালিকাবদ্ধ এবং কিছু তাত্ত্বিক সীমা https://arxiv.org/pdf/1702.02631.pdf এ পাওয়া যায়



বর্ডারলাইন ডুপ , যখন n = q^2 + q + 1প্রাইম পাওয়ারের জন্য সঠিক ওভারল্যাপ থাকে q
পিটার টেলর

@ পিটারটেলর @ আপনি কেন এটি ডুপ মনে করেন তা আমি দেখতে পাচ্ছি না। এবং কীভাবে "ওভারল্যাপ" রয়েছে তা আপনি বিশদভাবে বলতে পারেন? সাদৃশ্য থাকলেও এ দুটি খুব ভিন্ন সমস্যা different তদুপরি এটি কোড-গল্ফ এবং আপনার লিঙ্ক করা চ্যালেঞ্জটি প্রোগ্রামটির আকারটিকে এর স্কোরিংয়ের মধ্যে অন্তর্ভুক্ত করে না।
flawr

এগুলি দুটি খুব আলাদা সমস্যা নয়। আপনার পিপিপিএসে ওআইআইএস লিঙ্কটি পড়ুন: সেখানে উল্লেখ করা "পার্থক্যের সিঙ্গারের সেট" অবশ্যই আমার উত্তরটিতে বাস্তবায়িত ক্ষেত্র পদ্ধতি দ্বারা উত্পাদিত গোলম্ব রুলার। আমি এই পয়েন্টটি নিয়েছি যে স্কোরিংয়ের পদ্ধতিটি আলাদা।
পিটার টেলর

উত্তর:


4

জেলি , 13 বাইট

ŒPðṗ2I%QLðÐṀḢ

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

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

ŒPðṗ2I%QLðÐṀḢ  Main link. Argument: n (integer)

ŒP             Powerset; generate all subsequences of [1, ..., n].
  ð       ÐṀ   Begin a dyadic chain. Call it with all subsequences S as left
               argument and n as right one. Return the array of all sequences for
               which the chain returns the maximal result, i.e., [0, ..., n-1].
   ṗ2              Cartesian power 2; generate all pairs of elements of S.
     I             Increments; map each pair [x, y] to [y-x].
      %            Map each [y-x] to [(y-x)%n].
       Q           Unique; deduplicate the array of modular difference singletons.
        L          Take the length.
         ð     Begin a new, dyadic chain.
               Left argument: S' (filted subsequences). Right argument: n
            Ḣ  Take the first element of S'.
               Since S was sorted by length, so is S', so the first element of S'
               is the shortest subsequence that satisfies the condition.

4

এমএটিএল , 20 বাইট

:qGZ^!"G:q@&-G\m?@u.

এটি টিআইওর বাইরে থাকা ইনপুটগুলির জন্য মেমরির বাইরে চলে যায় 8

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

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

এটি [0 1 ... n-1]এক্সপোনেন্ট সহ কার্টেসিয়ান শক্তি উত্পন্ন করে nএবং প্রতিটি কার্তেসিয়ান টিউপল পরীক্ষা করতে একটি লুপ ব্যবহার করে। পরীক্ষা tuple যদি উপাদানের সকল pairwise পার্থক্য কম্পিউটিং, এবং যদি যারা পার্থক্য মডিউল এইজন্য মধ্যে রয়েছে nঅন্তর্ভুক্ত সব সংখ্যার 0, 1, ..., n-1

শর্ত পূরণ করার সাথে সাথে কার্টেসিয়ান টিউপলটি খুঁজে পাওয়া গেলে লুপটি বেরিয়ে আসে এবং সেই টিউলে থাকা অনন্য এন্ট্রিগুলি সমাধান হিসাবে মুদ্রিত হয়।

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

উদাহরণস্বরূপ, n = 3কার্টেসিয়ান টিপলসগুলির জন্য নীচে দেখানো হয়েছে, যেখানে প্রতিটি সারিটি একটি টিপল:

0 0 0
0 0 1
0 0 2
0 1 0
0 1 1
0 1 2
0 2 0
 ···
2 2 1
2 2 2
  • প্রথম টিপল, 0 0 0একমাত্র 1অনন্য মান সহকারে প্রাসঙ্গিক up এমনকি যদি 1 1 1এবং 2 2 2পরে প্রদর্শিত হবে, 0 0 0এটি একটি সমাধান যদি কেবলমাত্র সেইগুলি হয়। সুতরাং টিপল দ্বারা গঠিত সিঙ্গলটন সেটটি ইউ = এর 0 0 0জন্য পর্যাপ্ত সেট ।1
  • দ্বিতীয় ও তৃতীয় tuples, যথা 0 0 1এবং 0 0 2, একটি যথেষ্ট সেট ফর্ম জন্য U = 2; এটি হ'ল এগুলি সমস্ত ক্ষেত্রে 2অনন্য মান সহ with েকে দেয়। চতুর্থ টিউপল, 0 1 0কখনই সমাধান হিসাবে নির্বাচিত হবে না, কারণ 0 0 1আগে পরীক্ষা করা হবে। একইভাবে, টিপলটি 0 2 0কখনই নির্বাচন করা হবে না কারণ এটি পরে প্রদর্শিত হয় 0 0 2। টিউপস যেমন 2 2 1কখনও সমাধান হিসাবে নির্বাচিত হবে না কারণ 0 0 1সমতুল্য (মডুলো nএবং সদৃশ মান পর্যন্ত) এবং প্রথম প্রদর্শিত হয়।
  • প্রভৃতি

মন্তব্য করা কোড:

:q         % Push [0 1 ... n-1], where n is the input (implicit)
GZ^        % Cartesian power with exponent n. Gives an (n^n) × n matrix
           % where each row is a Cartesian tuple
!          % Transpose. Now each Cartesian tuple is a column
!"         % For each column (that is, each Cartesian tuple)
  G:q      %   Push [0 1 ... n-1] (*)
  @        %   Push current column
  &-       %   Matrix of pairwise differences (**)
  G\       %   Modulo n, element-wise
  m        %   Ismember function: for each entry in (*), gives true iff
           %   it is present in (**)
  ?        %   If all entries are true
    @      %     Push current column
    u      %     Unique entries. This is the solution
    .      %     Break loop
           %   End (implicit)
           % End (implicit)
           % Display (implicit)

3

স্ট্যাক্স , 26 21 বাইট

Åæ4&╕u◙╩►s∙Φ▬═(0~ d+Q

চালান এবং অনলাইন ডিবাগ!

এখনই অনলাইন সংস্করণ ইনপুটটির জন্য ব্যর্থ হয়েছে 20তবে এই বাগটি ঠিক করা হয়েছে এবং এখনও অনলাইনে অনুবাদক ডিপ্লোয়ারে স্থাপন করা হয়নি । সাবধান থাকুন কেসটি চালাতে কিছুটা সময় লাগে 20

ব্যাখ্যা

দেখা যাচ্ছে যে উপায়ের কারণে জোড়া পার্থক্য গণনা করা হচ্ছে, আমাকে এখানে kএবং এর সমতুলতা সম্পর্কে চিন্তা করার দরকার x-kনেই। 5 বাইট সংরক্ষণ করা হচ্ছে।

ব্যাখ্যার জন্য আনপ্যাক করা সংস্করণ ব্যবহার করে।

rS{%o~{;i@c:2{E-x%mu%x<wm
r                            [0..`x`], where `x` is input
 S                           Powerset
  {%o~                       Sort by length
      {;i@             w     For each element in the powerset
          c:2                All pairs
             {    m          Map each pair `[p,q] to
              E-                 `q-p`
                x%               `(q-p)%x`
                   u%        Count of unique modulo differences
                     x<      Loop until the count of unique modulo differences is larger than the input(`n`)
                             Now we have found a valid set in the powerset
                        m    Output the members of the set,one element per line.

যে প্রয়োজনীয়তাটি প্রয়োগ করে 0এবং 1উভয়ই উত্তরের সদস্য হতে পারে, আমরা পাওয়ারশেটের [2..x]পরিবর্তে পাওয়ারসেট তৈরি করতে পারি [0..x]এবং তারপরে পাওয়ারসেটের প্রতিটি উপাদানগুলিতে 0এবং 1ম্যানুয়ালি যুক্ত করতে পারি। এটি আরও দক্ষ তবে ইনপুটটি 1বিশেষভাবে পরিচালনা করতে হবে এবং আরও বাইট ব্যয় করতে হবে।



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