বিট বিভক্ত!


17

আমরা সংজ্ঞায়িত এর স্বতন্ত্র ক্ষমতা তালিকা হিসাবে 2 যে সমষ্টি এক্স । উদাহরণস্বরূপ, ভি ( 35 ) = [ 32 , 2 ,V(x)2xV(35)=[32,2,1]

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

কার্য

একটি সেমিপ্রাইম , ভি ( এন ) এর প্রতিটি পদকে এই শর্তের সমান 2 এর আরও একটি শক্তির তালিকার সাথে প্রতিস্থাপন করুন , যাতে সমস্ত ফলাফলের উপ-তালিকার মিলনটি ম্যাট্রিক্স এম এর সঠিক আবরণ হিসাবে বর্ণনা করা হয়:NV(N)2M

Mi,j=V(P)i×V(Q)j

যেখানে এবং কিউ এন এর প্রধান কারণ factorsPQN

এটি কয়েকটি উদাহরণ সহ বোঝা অনেক সহজ।

উদাহরণ # 1

জন্য আমাদের রয়েছে:N=21

  • V(N)=[16,4,1]
  • এবং ভি ( পি ) = [ 4 , 2 , 1 ]P=7V(P)=[4,2,1]
  • এবং ভি ( প্রশ্ন ) = [ 2 , 1 ]Q=3V(Q)=[2,1]
  • M=(842421)

চালু করতে এর একটি সঠিক কভার মধ্যে এম , আমরা বিভক্ত পারে 16 মধ্যে 8 + + 4 + + 4 এবং 4 মধ্যে 2 + + 2 , যখন 1 অপরিবর্তিত ছেড়ে দেওয়া হয়। সুতরাং একটি সম্ভাব্য আউটপুট হল:V(N)M168+4+442+21

[[8,4,4],[2,2],[1]]

আর একটি বৈধ আউটপুট:

[[8,4,2,2],[4],[1]]

উদাহরণ # 2

জন্য , আমরা আছে:N=851

  • V(N)=[512,256,64,16,2,1]
  • এবং ভি ( পি ) = [ 32 , 4 , 1 ]P=37V(P)=[32,4,1]
  • এবং ভি ( প্রশ্ন ) = [ 16 , 4 , 2 , 1 ]Q=23V(Q)=[16,4,2,1]
  • M=(512641612816464823241)

একটি সম্ভাব্য আউটপুট হল:

[[512],[128,64,64],[32,16,16],[8,4,4],[2],[1]]

বিধি

  • যেহেতু অনুষঙ্গ করা চ্যালেঞ্জের মূল অংশ নয়, আপনি পর্যায়ক্রমে পি এবং কিউকে ইনপুট হিসাবে নিতে পারেন ।NPQ
  • যখন বেশ কয়েকটি সম্ভাব্য সমাধান উপস্থিত থাকে আপনি কেবল তাদের মধ্যে একটি বা সমস্তগুলিই ফিরে আসতে পারেন।
  • আবার আপনি ক্ষমতা বহিঃপ্রকাশ (ফেরত দিতে পারেন যেমন পরিবর্তে [ [ 8 , 4 , 4 ] , [ 2 , 2 ] , [ 1 ] ] )।[[3,2,2],[1,1],[0]][[8,4,4],[2,2],[1]]
  • উপ-তালিকার ক্রম কোনও বিষয় নয় বা প্রতিটি উপ-তালিকার শর্তগুলির ক্রমও নয়।
  • কিছু সেমিপ্রাইমগুলির জন্য, আপনাকে কোনও পদ বিভক্ত করতে হবে না কারণ ইতিমধ্যে এম এর নিখুঁত কভার (দেখুন এ 235040 )। তবে আপনাকে এখনও এন = 15 এর জন্য [ [ 8 ] , [ 4 ] , [ 2 ] , [ 1 ] ] এর মতো (সিঙ্গলটন) তালিকার একটি তালিকা ফেরত দিতে হবে ।V(N)M[[8],[4],[2],[1]]N=15
  • এটি !

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

 Input | Possible output
-------+-----------------------------------------------------------------------------
 9     | [ [ 4, 2, 2 ], [ 1 ] ]
 15    | [ [ 8 ], [ 4 ], [ 2 ], [ 1 ] ]
 21    | [ [ 8, 4, 4 ], [ 2, 2 ], [ 1 ] ]
 51    | [ [ 32 ], [ 16 ], [ 2 ], [ 1 ] ]
 129   | [ [ 64, 32, 16, 8, 4, 2, 2 ], [ 1 ] ]
 159   | [ [ 64, 32, 32 ], [ 16 ], [ 8 ], [ 4 ], [ 2 ], [ 1 ] ]
 161   | [ [ 64, 32, 16, 16 ], [ 8, 8, 4, 4, 4, 2, 2 ], [ 1 ] ]
 201   | [ [ 128 ], [ 64 ], [ 4, 2, 2 ], [ 1 ] ]
 403   | [ [ 128, 64, 64 ], [ 32, 32, 16, 16, 16, 8, 8 ], [ 8, 4, 4 ], [ 2 ], [ 1 ] ]
 851   | [ [ 512 ], [ 128, 64, 64 ], [ 32, 16, 16 ], [ 8, 4, 4 ], [ 2 ], [ 1 ] ]
 2307  | [ [ 1024, 512, 512 ], [ 256 ], [ 2 ], [ 1 ] ]

আমরা N এর পরিবর্তে P এবং Q নিতে পারি?
এনএনজি

@ngn আমি হ্যাঁ বলব, কারণ এনকে অনুষঙ্গ করা চ্যালেঞ্জের মূল অংশ নয়।
আর্নল্ড

1
আমরা কি আউটপুট সমতল করতে পারি?
এরিক দ্য আউটগল্ফার

@ এরিকথিউটগল্ফার ... সমতল আউটপুট হ'ল ইনপুটটির কেবলমাত্র একটি পার্টিশন (উদাহরণস্বরূপ 1 + 2 + 2 + 4 = 9)। আমি মনে করি না এটির অনুমতি দেওয়া উচিত
মিঃ এক্সকোডার 18

@ এরিকথ আউটগল্ফার আমি মনে করি না যে এটি এইভাবে দ্ব্যর্থহীন হতে পারে, কারণ উপ-তালিকার শেষ পর্বটি পরেরটির প্রথম পদের মতো হতে পারে।
আর্নল্ড

উত্তর:


4

কে (এনএনজি / কে) , 66 63 বাইট

{(&1,-1_~^(+\*|a)?+\b)_b:b@>b:,/*/:/2#a:{|*/'(&|2\x)#'2}'x,*/x}

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

N এর পরিবর্তে (P; Q) গ্রহণ করে

অ্যালগরিদম:

  • A কে V এর আংশিক সমষ্টি হিসাবে গণনা করুন (P * Q)

  • প্রতিটি ভি (পি) সাথে প্রতিটি ভি (পি) দিয়ে গুণিত করুন, পণ্যগুলিকে অবতরণ ক্রমে সাজান (আসুন আমরা সেই আর কল করি), এবং তাদের আংশিক পরিমাণ বি গণনা করুন

  • বি তে যে উপাদানগুলির অবস্থান রয়েছে তা সন্ধান করুন; ঠিক এই অবস্থানের পরে আর কাটা


3

জেলি , 24 বাইট

BṚT’2*
Ç€×þ/FṢŒṖ§⁼Ç}ɗƇPḢ

একটি সংঘবদ্ধ লিঙ্ক দুটি পূর্ণসংখ্যার একটি তালিকা গ্রহণ করে [P, Q]যা প্রশ্নের বর্ণনায় বর্ণিত তালিকার একটি সম্ভাব্য তালিকা দেয়।

এটি অনলাইন চেষ্টা করুন! (পাদচরণ তালিকাটি যেমন দেখায় তেমন স্ট্রিং প্রতিনিধিত্ব মুদ্রণ করে)

অথবা পরীক্ষা-স্যুটটি দেখুন (এন এর একটি তালিকা নেওয়া এবং ফলাফলগুলিতে পুনরায় ক্রমানুসারে ফলাফল হওয়া উচিত)

কিভাবে?

আমরা সবসময় এর উপাদানগুলি টুকরো টুকরো করে ফেলতে পারি এম সর্বনিম্ন থেকে, লোভের সাথে (হয় হয় একটি 1 ভিতরে এম বা আমাদের একটি ইনপুট ছিল 4, কখন এম=[[4]]) সমাধান খুঁজে পেতে।

দ্রষ্টব্য: কোডটি একটি তালিকাতে সমস্ত (এক!) এই জাতীয় সমাধান সংগ্রহ করে এবং তারপরেই (কেবলমাত্র) ফলাফলটি গ্রহণ করে - যেমন পার্টিশনগুলি সমস্ত সম্ভাব্য ক্রমগুলির নয় বলে চূড়ান্ত মাথাটি প্রয়োজনীয়।

BṚT’2* - Link 1, powers of 2 that sum to N: integer, N    e.g. 105
B      - binary                                                [1,1,0,1,0,0,1]
 Ṛ     - reverse                                               [1,0,0,1,0,1,1]
  T    - truthy indices                                        [1,4,6,7]
   ’   - decrement                                             [0,3,5,6]
    2  - literal two                                           2
     * - exponentiate                                          [1,8,32,64]

Ç€×þ/FṢŒṖ§⁼Ç}ɗƇPḢ - Main Link: list of two integers, [P,Q]
Ç€                - call last Link (1) as a monad for €ach
    /             - reduce with:
   þ              -   table with:
  ×               -     multiplication
     F            - flatten
      Ṣ           - sort
       ŒṖ         - all partitions
              Ƈ   - filter keep if:
             ɗ    -   last three links as a dyad:
         §        -     sum each
            }     -     use right...
               P  -       ...value: product (i.e. P×Q)
           Ç      -       ...do: call last Link (1) as a monad
          ⁼       -     equal? (non-vectorising so "all equal?")
                Ḣ - head

3

পাইথন 2 , 261 233 232 231 বাইট

g=lambda n,r=[],i=1:n and g(n/2,[i]*(n&1)+r,i*2)or r
def f(p,q):
 V=[[v]for v in g(p*q)];i=j=0
 for m in sorted(-a*b for a in g(p)for b in g(q)):
	v=V[i]
	while-m<v[j]:v[j:j+1]=[v[j]/2]*2
	i,j=[i+1,i,0,j+1][j+1<len(v)::2]
 return V

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

জো কিং থেকে 1 বাইট ; কেভিন ক্রুইজসেনের কারণে এবং আরও 1 বাইট

ইনপুট হিসাবে নেয় p,q। লোভী অ্যালগরিদম তাড়া করে।


-k-1হতে পারে ~k
জোনাথন ফ্রেচ 14 ই

i,jনিয়োগ হতে পারে i,j=[i+1,i,0,j+1][j+1<len(v)::2]জন্য -1 বাইট
জো রাজা

@ জো কিং: হাহাহাহা! তা মুচড়ে গেছে!
চ্যাস ব্রাউন

while v[j]>-mহতে পারেwhile-m<v[j]
কেভিন ক্রুইজসেন

@ কেভিন ক্রুইজসেন: হ্যাঁ, সত্যিই। ধন্যবাদ!
চ্যাস ব্রাউন

2

জেলি , 41 বাইট

Œṗl2ĊƑ$Ƈ
PÇIP$ƇṪÇ€Œpµ³ÇIP$ƇṪƊ€ŒpZPṢ⁼FṢ$µƇ

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

সম্ভবত অনেক খাটো হওয়া উচিত (কিছু অংশগুলি খুব পুনরাবৃত্তি মনে করে; বিশেষত ÇIP$Ƈ, তবে আমি কীভাবে এটি গল্ফ করব জানি না) আরও গল্ফ করার পরে আসার ব্যাখ্যা। একাধিক উপস্থিতিতে সমস্ত সম্ভাব্য সমাধানগুলি ফেরত দেয় এবং হিসাবে ইনপুট নেয়[পি,প্রশ্নঃ]


এটি যে সমস্যা তা নয়, তবে এটি ঠিক দ্রুত নয়, তাই না? :)
আর্নৌল্ড

@ আর্নল্ড এটি একটি রানে মোটামুটি 3 টি ইন্টিজার পার্টিশন ফাংশন ব্যবহার করে :) অবশ্যই এটি খুব দ্রুত নয়
মিঃ এক্সকডার

আউটগল্ফ হওয়ার অপেক্ষা করছি। আমি মনে করি এটি সাব -35 / 30 এ সম্ভব, তবে আমি মনে করি না যে আমি আরও ছোট কিছু করতে সক্ষম হব
মিঃ এক্সকডার

2

জেলি , 34 বাইট

BṚT’2*
PÇŒṗæḟ2⁼ƊƇ€ŒpẎṢ⁼Ṣ}ʋƇÇ€×þ/ẎƊ

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

ইনপুট ফর্ম্যাট: [P, Q](পরীক্ষার ক্ষেত্রে সহায়তা করার জন্য উপরের টিআইও লিঙ্কটি এটি গ্রহণ করে না, পরিবর্তে একটি একক সংখ্যা)।

আউটপুট ফর্ম্যাট: সমস্ত সমাধানের তালিকা (টিআইওর উপরে 3 ডি তালিকার গ্রিড উপস্থাপনা হিসাবে দেখানো হয়েছে)।

গতি: কচ্ছপ।



1

হাস্কেল, 281 195 বাইট

import Data.List
r=reverse.sort
n#0=[]
n#x=[id,(n:)]!!mod x 2$(n*2)#div x 2
m!0=[]
m!x=m!!0:tail m!(x-m!!0)
m%[]=[]
m%n=m!head n:drop(length$m!head n)m%tail n
p&q=r[x*y|x<-1#p,y<-1#q]%r(1#(p*q))

1
এখানে কয়েকটি টিপস রয়েছে: বাইনারি ফাংশনগুলির পরিবর্তে অপারেটরগুলির সংজ্ঞা দেওয়া কম সস্তা, গার্ডদের পুনরায় সাজানো এবং প্যাটার্ন-ম্যাচিং আপনাকে বাঁচাতে পারে (==), 1>0পরিবর্তে ব্যবহার করুন Trueএবং ব্যবহার করবেন না where। এছাড়াও n'ছোট করা যেতে পারে .. এটির সাহায্যে
ბიმო

BTW। আপনার যদি না থাকে তবে আপনার হাস্কেল টিপস বিভাগটি পরীক্ষা করা উচিত ।
ბიმო

আমি আবার প্রহরী পরিস্থিতি একবার দেখেছিলাম, আরও 13 বাইট বন্ধ: এটি অনলাইনে চেষ্টা করুন!
15

@ ওএম, আপনাকে ধন্যবাদ আমি Haskell নতুন নই, তাই জাদু ঠাট যেমন আমার জন্য এই সৌন্দর্য
Евгений Новиков

কোনও উদ্বেগ নেই :) আপনার যদি প্রশ্ন থাকে তবে অফ মোনডস অ্যান্ড মেনের মধ্যে নির্দ্বিধায় জিজ্ঞাসা করুন ।
15
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.