আমার পাই কি বিশ্বাস করা হয়েছে?


43

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা ইতিবাচক পূর্ণসংখ্যার কোনও নজরে নেই। আপনি অনুমান হতে পারে এটা যেমন একটি যুক্তিসঙ্গত সুবিধাজনক বিন্যাসে ইনপুট "1 2 3 4"বা [1, 2, 3, 4]

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

উদাহরণস্বরূপ, পাইটি 1 2 3 4হ'ল:

1 2 3 4 উদাহরণ

আপনার কোডটির যে প্রশ্নের অবশ্যই উত্তর দিতে হবে তা হ'ল পাই চার্টটি কি কখনও বাইসাইক্ট হয় ? অর্থাত্, বৃত্তের একপাশ থেকে অন্য দিকে কখনও কখনও পুরোপুরি সরল রেখা থাকে যা একে একে প্রতিসাম্যভাবে বিভক্ত করে?

আপনাকে করার প্রয়োজন আউটপুট একটি truthy মান আছে যদি অন্তত একটি দ্বিখণ্ডক এবং আউটপুট একটি falsy মান যদি কেউ হয়

ইন 1 2 3 4উদাহরণস্বরূপ মধ্যে একটি দ্বিখণ্ডন আছে 4 1এবং 2 3তাই আউটপুট truthy হবে।

তবে 1 2 3 4 5ইনপুটটির জন্য কোনও দ্বিখণ্ডক নেই তাই আউটপুটটি মিথ্যা হবে:

1 2 3 4 5 উদাহরণ

অতিরিক্ত উদাহরণ

সংখ্যা পৃথকভাবে সাজানো দ্বিখণ্ডিতদের সরিয়ে ফেলতে পারে।
যেমন 2 1 3 4als মিথ্যা:

2 1 3 4 উদাহরণ

যদি কেবল একটি নম্বর ইনপুট তালিকায় থাকে তবে পাই দ্বিখণ্ডিত হয় না।
যেমন 10als মিথ্যা:

10 উদাহরণ

একাধিক দ্বিখণ্ডক থাকতে পারে। যতক্ষণ না শূন্যের বেশি থাকে আউটপুটটি সত্য।
উদাহরণস্বরূপ 6 6 12 12 12 11 1 12→ সত্যবাদী: (এখানে 3 টি দ্বিখণ্ডক রয়েছে)

6 6 12 12 12 11 1 12 উদাহরণ

দৃষ্টিশক্তিগুলি সুস্পষ্ট না হলেও এমনকি দোষগুলি উপস্থিত থাকতে পারে।
যেমন 1000000 1000001als মিথ্যা:

1000000 1000001 উদাহরণ

যেমন 1000000 1000001 1y সত্যবাদী:

1000000 1000001 1 উদাহরণ

( পাই চার্ট তৈরি করার জন্য nces.ed.gov ধন্যবাদ ।)

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

Truthy
1 2 3 4
6 6 12 12 12 11 1 12
1000000 1000001 1
1 2 3
1 1
42 42
1 17 9 13 2 7 3
3 1 2
10 20 10

Falsy
1 2 3 4 5
2 1 3 4
10
1000000 1000001
1
1 2
3 1 1
1 2 1 2 1 2
10 20 10 1

স্কোরিং

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী। টাইব্রেকার এর আগের উত্তর।


30
আমি বিশ্বাস করি তুমি পাই বিভক্ত?
অ্যালেক্স এ

@ হেলকাহোম্বা, আপনি কী সেক্টরগুলিকে কাজটি করার জন্য পুনঃব্যবস্থা করতে পারবেন এবং আপনি কি "আলাদাভাবে সংখ্যা সাজানোর মাধ্যমে দ্বিখণ্ডিতকে সরিয়ে ফেলতে পারেন"?
সলোমন উকো

@ সলোমনউকো আপনি সেক্টরগুলি পুনরায় সাজতে পারবেন না।
ক্যালভিনের শখ

1
কেবলমাত্র [2 1 3 4] মিথ্যা মামলাগুলির মূল্যায়ন করতে হবে। অন্যান্য মিথ্যা মামলাগুলি সহজেই প্রত্যাখ্যান করা হয় কারণ তাদের যোগটি বিজোড় (বা তাদের দৈর্ঘ্য <2)।
বেনি জোবিগান

উত্তর:


12

জে, 18 বাইট

ডেনিসকে 5 বাইট ধন্যবাদ

+/e.[:,/2*+/\-/+/\

@ হেলকাহম্বা : না

ব্যবহার

>> f =: +/e.[:,/2*+/\-/+/\
>> f 6 6 12 12 12 11 1 12
<< 4
>> f 10 20 10 1
<< 0

Ungolfed

black_magic  =: +/\-/+/\
doubled_bm   =: 2 * black_magic
flatten      =: ,/
sum          =: +/
is_member_of =: e.
f =: sum is_member_of monadic flatten doubled_bm

পূর্ববর্তী 23-বাইট সংস্করণ:

[:+/[:+/+/=+:@-/~@(+/\)

ব্যবহার

>> f =: [:+/[:+/+/=+:@-/~@(+/\)
>> f 6 6 12 12 12 11 1 12
<< 4
>> f 10 20 10 1
<< 0

Ungolfed

black_magic =: -/~@(+/\)
double      =: +:
equals      =: =
sum         =: +/
monadic     =: [:
of          =: @
f =: monadic sum monadic sum (sum equals double of black_magic)

ব্যাখ্যা

সমস্ত সাবস্ট্রিংয়ের যোগফলকে কালো_ম্যাজিক দ্বারা গণনা করা হয়। +/\আংশিক অঙ্কের হিসাব।

উদাহরণস্বরূপ, a b c dহয়ে যায় a a+b a+b+c a+b+c+d

-/~তারপর একটি বিয়োগ ইনপুটের ভিত্তিতে টেবিল নির্মান, তাই x y zহয়ে:

x-x x-y x-z
y-x y-y y-z
z-x z-y z-z

প্রয়োগ করা হলে a a+b a+b+c a+b+c+d, ফলাফলটি হবে:

    0  -b -b-c -b-c-d
    b   0   -c   -c-d
  b+c   c    0     -d
b+c+d c+d    d      0

এটি সমস্ত সাবস্ট্রিংয়ের যোগফলগুলি গণনা করে যা ধারণ করে না a

এটি পর্যাপ্ত হওয়ার গ্যারান্টি দেয়, যেহেতু যদি একটি দ্বিখণ্ডিত থাকে aতবে অন্য দ্বিধাটিও এতে থাকে না aএবং চারপাশেও আবৃত হয় না।


3
কিছু পুনর্গঠন সহ, আপনি 13 বাইটে পেতে পারেন:+/e.&,2*+/\\.
জাগারব

10

জেলি , 9 8 বাইট

Ḥ+\©_Sf®

একটি খালি খালি তালিকা (সত্যবাদী) বা একটি খালি তালিকা (মিথ্যা) ফেরত দিন। এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

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

Ḥ+\©_Sf®  Main link. Argument: A (list)

Ḥ         Double all integers in A.
 +\       Take the cumulative sum of 2A.
   ©      Copy; store the result in the register.
    _S    Subtract the sum of A from each partial sum of 2A.
      f®  Filter; intersect this list with the list in the register.

7

জুলিয়া, 34 30 29 বাইট

!x=sum(x)∈cumsum!(x,2x).-x'

1 বাইট বন্ধ করে গল্ফ করার জন্য @ গ্লেনওকে ধন্যবাদ!

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

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

ক্রমপুঞ্জিত সমষ্টি সংরক্ষণকারী পর 2x মধ্যে এক্স , আমরা সারি ভেক্টর বিয়োগ এক্স ' থেকে কলাম ভেক্টর এক্স , সব সম্ভব পার্থক্যের ম্যাট্রিক্স মেনে নেওয়া। মূলত, এটি x এর সমস্ত সংলগ্ন সাবহারের যোগফলগুলিকে গণনা করে যার মধ্যে প্রথম মান, তাদের sণাত্মক এবং 0 এর ত্রিভুজ থাকে না।

অবশেষে, আমরা পরীক্ষা করে নিই যে মূল অ্যারের x এর যোগফল উত্পন্ন ম্যাট্রিক্সের সাথে সম্পর্কিত কিনা। যদি এটি হয় তবে সংলগ্ন সাবলিস্টগুলির মধ্যে কমপক্ষে একটির যোগফল পুরো তালিকার যোগফলের অর্ধেকের সমান, যার অর্থ কমপক্ষে একটি দ্বিখণ্ডক রয়েছে।


15
ডেনিস যেমন অন্য কেউ উত্তর দেওয়ার আগে 5 টি উত্তর দেয় সেভাবে দেখুন।
ক্যালভিনের শখ

6

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

f=lambda l,s=0:l>[]and(sum(l)==s)|f(l[1:],s+l[0])|f(l,s+l.pop())

অবিচ্ছিন্নভাবে উপাদানগুলি সামনে বা শেষ থেকে অপসারণ করার চেষ্টা করে যতক্ষণ না যা অবশেষ থাকে তার যোগফলের সমতুল্য যা মুছে ফেলা হয়েছিল, যা সঞ্চিত হয় s। তালিকার দৈর্ঘ্যে সময় ঘনিষ্ঠভাবে নেয়।

ডেনিস দিয়ে 3 টি বাইট সংরক্ষণ করলেন pop


একটি অদ্ভুত বিকল্প যা তালিকাগুলি দেয়:f=lambda l,s=0:l and(sum(l)==s)*l+f(l[1:],s+l[0])+f(l,s+l.pop())
xnor

5

হাস্কেল, 41 বাইট

f l=elem(sum l/2)$scanr(:)[]l>>=scanl(+)0

ধারণাটি হ'ল lযার সমতুল্যের একটি সাবলিস্ট আছে কিনা তা যাচাই করা sum l/2। আমরা এই সাবলিস্টগুলির পরিমাণগুলি উত্পন্ন করি scanr(:)[]l>>=scanl(+)0। আসুন এটি কীভাবে কাজ করে তা দেখুনl=[1,2,3]

>> scanr(:)[]l
[[1,2,3],[2,3],[3],[]] 
-- the suffixes of l

>> scanl(+)0 [2,3,4]
[0,2,5,9]
-- the cumulative sums of the input

>> scanr(:)[]l>>=scanl(+)0
[0,1,3,6,0,2,5,0,3,0]
-- the cumulative sums of the suffixes of l, flattened to a single list

ওল্ড 43 বাইট:

f l|c<-scanl1(+)l=elem(sum l/2)$(-)<$>c<*>c

ক্রমসংখ্যার cঅঙ্কের তালিকা তৈরি করে । এরপরে, এই যোগফলগুলির কোনও দুটি পার্থক্যের sum l/2তালিকার একটি উপাদান কিনা তা পরীক্ষা করে আলাদা হয় কিনা তা পরীক্ষা করে দেখুন (-)<$>c<*>c


4

Pyth, 10 9 বাইট

}sQmysd.:

পাইথ কম্পাইলারের মধ্যে এটি পরীক্ষা করুন ।

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

       .:  Generate the list of all adjacent sublists.
   m       Map over the result:
     sd       Add the integers of the sublist.
    y         Double the sum.
 sQ        Compute the sum of the input.
}          Check if it belongs to the list of doubled sublist sums.

4

আসলে, 21 বাইট

;Σ@2*;lR@τ╗`╜V♂Σi`Míu

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

এই প্রোগ্রামটি 0মিথ্যা মামলার জন্য এবং সত্যিকারের ক্ষেত্রে একটি ইতিবাচক পূর্ণসংখ্যা প্রিন্ট করে ।

ব্যাখ্যা:

;Σ@2*;lR@τ╗`╜V♂Σi`Míu
;Σ                     sum of copy of input
  @2*                  double values in other copy
     ;lR               copy, range(1, len(input)+1)
        @τ             append other copy to itself
          ╗            save in reg0
           `╜V♂Σi`M    map: generate cyclic cumulative sums
                   íu  1-based index of sum of input (0 if not found)

অ-প্রতিযোগিতামূলক সংস্করণ, 10 বাইট

;Σ@2*σ;)-∩

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

এই প্রোগ্রামটি মিথ্যা মামলার খালি তালিকা এবং অন্যথায় একটি খালি নয় খালি তালিকা আউটপুট করে। এটি মূলত ডেনিসের জেলি উত্তরের একটি বন্দর । এটি অ-প্রতিযোগিতামূলক কারণ চ্যালেঞ্জের পরে ক্রমযুক্ত যোগফল এবং ভেক্টরাইজড পার্থক্য কার্যকারিতা।

ব্যাখ্যা:

;Σ@2*σ;)-∩
;Σ          sum of copy of input
  @2*       multiply values in other copy by 2
     σ;     two copies of cumulative sum
       )-   subtract sum of input from each element in one copy
         ∩  set intersection with other copy

4

পাইথন 2, 76 74 70 66 বাইট

def f(x):n=sum(x);print n in[2*sum(x[k/n:k%n])for k in range(n*n)]

ধন্যবাদ বন্ধ golfing জন্য @xnor করার 4 8 বাইট!

আইডিয়নে এটি পরীক্ষা করুন । (বৃহত্তর পরীক্ষার কেস বাদ দেওয়া হয়েছে)


আমি বুঝতে পেরেছি আপনি করতে n=sum(x)পারেন n in ...; এটির জন্য বৃহত্তর মানটি ব্যবহার করতে ক্ষতি হয় না n
xnor

ওহ, যে চালাক। ধন্যবাদ!
ডেনিস

3

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

EYst!-Gs=z

আউটপুটটি দ্বিখণ্ডকের সংখ্যা।

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

ব্যাখ্যা

ডেনিস 'জুলিয়া উত্তর হিসাবে একই পন্থা ।

E       % Implicit input. Multiply by 2 element-wise 
Ys      % Cumulative sum 
t!-     % Compute all pairwise differences. Gives a 2D array 
Gs      % Sum of input 
=       % Test for equality, element-wise 
z       % Number of nonzero elements. Implicit display 

3

রুবি, 60 53 বাইট

->a{a.any?{r=eval a*?+;a.rotate!.any?{|i|0==r-=2*i}}}

ইনপুট অ্যারের প্রতিটি ঘূর্ণন গ্রহণ করে এবং তারপরে দৈর্ঘ্য 1 এর সমস্ত টুকরো টুকরো করে সমস্ত সম্ভাব্য পার্টিশন তৈরি করে n, যেখানে nইনপুট অ্যারের আকারটি is তারপরে ইনপুট অ্যারের মোট যোগফলের যোগফলের সাথে কোনও পার্টিশন উপস্থিত রয়েছে কিনা তা পরীক্ষা করে দেখুন।


2

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

a=>a.map(_=>a.slice(--n).map(m=>s.push(t+=m),t=0),s=[],n=a.length)&&s.includes(t/2)

সমস্ত সম্ভাব্য পরিমাণ তৈরি করে, তারপরে তালিকার শেষ যোগফলের (যা পুরো তালিকার যোগফল) অর্ধেক উপস্থিত রয়েছে কিনা তা পরীক্ষা করে দেখুন। (সর্বশেষে আমার যে পরিমাণ যোগফল শেষ হওয়া দরকার তা সামঞ্জস্য করার জন্য সামান্য বিশ্রী ক্রমে অঙ্কগুলি তৈরি করা বাইট।)


2

ডায়ালগ এপিএল, 12 বাইট

+/∊2×+\∘.-+\

ট্রাইএপিএল দিয়ে এটি পরীক্ষা করুন ।

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

+/∊2×+\∘.-+\  Monadic function train. Right argument: y (vector)

     +\   +\  Yield the cumulative sum of y.
       ∘.-    Compute all differences of all partial sums.
              This computes the sums of all adjacent subvectors of y that do not
              contain the first value, their negatives, and 0's in the diagonal.
   2×         Multiply all differences by 2.
+/            Yield the sum of y.
  ∊           Test for membership.

2

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

k=t=1
for x in input():t<<=x;k|=t*t
print k&k/t

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

আমি নতুন পদ্ধতি ব্যবহার করে আমার পুরানো সমাধানটিকে 25% এরও বেশি পরাজিত করতে ২.75৫ বছর পরে ফিরে এসেছি ।

এই 1 বাইট দীর্ঘ সংস্করণটি আরও পরিষ্কার are

k=t=0
for x in input():t+=x;k|=4**t
print k&k>>t

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

ধারণাটি হ'ল সংযোজক অঙ্কের সেটগুলি tবিটের হিসাবে সংরক্ষণ করা হয় k, সেটটি বিট সেট 2*tকরে যে tএটি একটি সংখ্যক যোগফল। তারপরে, আমরা পরীক্ষা করে দেখি যে কোনও দুটি সংখ্যক যোগফলের পরিমাণ অর্ধেকের তালিকা তালিকার সমষ্টি (চূড়ান্ত t) দ্বারা পৃথক হয়েছে কিনা kএটিকে কিছুটা বিট-শিফট করে এবং &ফলাফলটি দেখার জন্য মূলটির সাথে বিটওয়াইজ করে ফলাফলটি ননজারো (সত্যবাদী) হয় কিনা।


1

এপিএল, 25 টি অক্ষর

ধরে নিচ্ছি তালিকাটি দেওয়া আছে X ← 1 2 3 4

(+/X)∊∘.{2×+/⍺↑⍵↓X,X}⍨⍳⍴X←⎕

ব্যাখ্যা:

প্রথম নোট করুন যে এপিএল ফর্মটি ডান থেকে বামে মূল্যায়ন করে। তারপর:

  • X←⎕ ব্যবহারকারীর ইনপুট নেয় এবং এটি সঞ্চয় করে X

  • ⍴X দৈর্ঘ্য দেয় X

  • ⍳⍴X 1 থেকে সংখ্যা ⍴X

  • এবং মধ্যে {2×+/⍺↑⍵↓X,X}একটি dyadic ফাংশন আমরা ধনুর্বন্ধনী ভিতরে সংজ্ঞায়িত হয় বাম এবং ডান যুক্তি আছে।

    • এখন ⍺↑⍵↓X,Xঅংশটি: X,Xকেবল এক্সকে নিজের সাথে যুক্ত করে; এবং নিতে এবং ড্রপ হয়।
    • +/+তার ডানদিকে তালিকার উপরে ভাঁজগুলি হ্রাস করে / হ্রাস করে

    সুতরাং 2 {2×+/⍺↑⍵↓X,X} 1= 2×+/2↑1↓X,X= 2×+/2↑1↓1 2 3 4 1 2 3 4=

    = 2×+/2↑2 3 4 1 2 3 4= 2×+/2 3= 2×5= 10

  • ∘.brace⍨idxঠিক হয় idx ∘.brace idx। ( তির্যক মানচিত্র; ∘.বাহ্যিক পণ্য)

    তাই এই আমাদের একটি দেয় ⍴Xদ্বারা ⍴Xম্যাট্রিক্স সমস্ত সংযুক্ত sublists দ্বিগুণ অঙ্কের রয়েছে পারে।

     4  6  8  2
    10 14 10  6
    18 16 14 12
    20 20 20 20
    

    আমাদের শেষ কাজটি করতে হবে তা Xহল এই ম্যাট্রিক্সের যোগফলের যোগফল কোথাও আছে কিনা check

  • যা আমরা দিয়ে করি (+/X)∊matrix

1

ব্র্যাচল্যাগ , 6 বাইট

sj+~+?

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

সাফল্য বা ব্যর্থতার মাধ্যমে আউটপুটস, মুদ্রণ true.বা false.কোনও প্রোগ্রাম হিসাবে চালিত হলে।

s         A contiguous sublist of the input
 j        with all of its items duplicated
  +       sums to
   ~+     the sum of the elements of
     ?    the input.

1

সি, 161 145 129 বাইট

  • কিছুটা বাইট সংরক্ষণ করেছেন @ লিক্যুনকে ধন্যবাদ
  • @ সাইলিংক্যাটকে ধন্যবাদ কয়েকটি বাইট সংরক্ষণ করেছে
i;j;k;t;r;s;f(x,n)int*x;{for(t=i=k=r=0;i<n;)t+=x[i++];for(;++k<n;i=n)for(;i--;r|=2*s==t)for(s=0,j=i;j<i+k;)s+=x[j++%n];return r;}

অবহেলিত অনলাইনে চেষ্টা করুন

int f(int*x,int n)
{
    int t=0;

    for(int i=0;i<n;i++)
    {
        t += x[i];
    }

    for(int k=1;k<n;k++) // subset-size
    {
        for(int i=0,s;i<n;i++) // where to start
        {
            s=0;

            for(int j=i;j<i+k;j++) // sum the subset
            {
                s+=x[j%n];
            }

            if(2*s==t) return 1; // TRUE
        }
    }

    return 0; // FALSE
}

ভেরিয়েবলের ঘোষণাকে প্রথম স্তরে নিয়ে গিয়ে এবং পরিবর্তন করে i<n;i++আপনি কিছু বাইট সংরক্ষণ করতে পারেন i++<n(যদিও আপনাকে কিছু অফসেটের সাথে ডিল করার প্রয়োজন হতে পারে।
লিকি নুন

0

হাস্কেল, 68 বাইট

f l|x<-[0..length l]=any(sum l==)[2*(sum$take a$drop b l)|a<-x,b<-x]

ফাংশন fপ্রথমে প্রদত্ত তালিকার সমস্ত সম্ভাব্য স্লাইসের যোগফলের তালিকা তৈরি করে। তারপরে এটি তালিকার উপাদানগুলির মোট যোগফলের সাথে তুলনা করে। আমরা যদি মোট অঙ্কের অর্ধেক পাই, তবে আমরা জানি যে আমরা একটি বাইসেকশন পেয়েছি। আমি এই বিষয়টিও ব্যবহার করছি যে আপনি takeবা dropতালিকায় থাকা উপাদানগুলির চেয়ে আরও বেশি উপাদান থাকলে, হাস্কেল কোনও ত্রুটি ছুঁড়ে না ফেলে।


0

গণিত, 48 বাইট

!FreeQ[Outer[Plus,#,-#],Last@#/2]&@Accumulate@#&

বেনামে ফাংশন, একই সাথে অন্যান্য অসংখ্য উত্তরের অনুরূপ।

Outer[Plus, #, -#]অভিনয় করার সময় Accumulate@#(যা ফলস্বরূপ মোটের একটি তালিকা প্রদান করে ইনপুট তালিকার উপরে কাজ করে) মূলত একই টেবিলটি উত্পন্ন করে, লিকি নুনের উত্তরের নীচে।

!FreeQ[..., Last@#/2]ফলাফলের টেবিল থেকে অনুপস্থিত না কিনা (Last@#)/2তা পরীক্ষা করে দেখায় এবং ধারাবাহিক মোটের সর্বশেষতম, অর্থাৎ ইনপুট তালিকার সমস্ত উপাদানগুলির যোগফল।Last@#

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


আমার মনে হয় !FreeQ[2Tr/@Subsequences@#,Tr@#]&কাজ করা উচিত, তবে পরবর্তী 10 দিন বা তার জন্য পরীক্ষা করার জন্য আমার কাছে 10.4 উপলব্ধ নেই।
মার্টিন এন্ডার

@ মার্টিন ইন্ডিয়ার এটি অবশ্যই কাজ করবে বলে মনে হচ্ছে তবে আমি 10.2-এ আছি, তাই আমার যা আছে
এলএলএএমএনওয়াইপি

0

এপিএল (এনএআরএস), 95 টি অক্ষর, 190 বাইট

{1≥k←≢w←⍵:0⋄s←+/⍵⋄∨/{s=2×s-+/⍵}¨↑¨{⍵⊂w}¨{(k⍴2)⊤⍵}¨{1≥≢⍵:⍵⋄⍵,∇{(1+2×(↑⍵))×2*0..¯2+≢⍵}⍵}2*0..k-1}

4 টি উপাদানের ইনপুটগুলির একটি অ্যারে বিবেচনা করুন: 1 2 3 4. কীভাবে আমরা এই সেটটির এই অনুশীলন বিভাজনের জন্য দরকারী চয়ন করতে পারি? এর পরেও কেউ কেউ মনে করেন যে আমরা ব্যবহার করতে পারি এই 4 উপাদানগুলির বিভাজনটি বামদিকে বাইনারি সংখ্যায় চিহ্নিত করা হয়েছে:

0001,0010,0100,1000 2^(0..4) 1 2 4  8 
0011,0110,1100,                3 6 12
0111,1110,                       7 14
1111                               15

(1001 বা 1011 ইসিসি সেটে থাকতে পারে তবে ইতিমধ্যে আমাদের কাছে 0110 এবং 0100 ইসি রয়েছে) সুতরাং একটি টুপি কেবল একটি ফাংশন লিখতে পারে যে ইনপুট অ্যারের উপাদান সংখ্যা থেকে এই বাইনারি সংখ্যা তৈরি করে ... এটি হবে:

c←{1≥≢⍵:⍵⋄⍵,∇{(1+2×(↑⍵))×2*0..¯2+≢⍵}⍵}

যে ইনপুট 1 2 4 8 [2 ^ 0..lenBytesArgument-1] থেকে 3 6 12, 7 14, 15; সুতরাং এই সংখ্যাগুলির বাইনারি সন্ধান করুন এবং সেগুলি ব্যবহার করে ইনপুট অ্যারের সঠিক পার্টিশনগুলি সন্ধান করুন ... আমি কেবলমাত্র ইনপুট 4 উপাদানের জন্য সি ফাংশনটি পরীক্ষা করেছি, তবে মনে হয় এটি অন্যান্য সংখ্যক উপাদানগুলির জন্য ঠিক আছে ...

পরীক্ষা:

  f←{1≥k←≢w←⍵:0⋄s←+/⍵⋄∨/{s=2×s-+/⍵}¨↑¨{⍵⊂w}¨{(k⍴2)⊤⍵}¨{1≥≢⍵:⍵⋄⍵,∇{(1+2×(↑⍵))×2*0..¯2+≢⍵}⍵}2*0..k-1}
  f¨(1 2 3 4)(6 6 12 12 12 11 1 12)(1000000 1000001 1)(1 2 3)(1 1)(42 42)
1 1 1 1 1 1 
  f¨(1 2 3 4 5)(2 1 3 4)(,10)(1000000 1000001)(,1)(1 2)(3 1 1)
0 0 0 0 0 0 0 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.