একটি অনুক্রমের ভারসাম্য সূচক


10

সিক্যুয়েন্সের ভারসাম্য সূচকটি এমন একটি সূচক যা নিম্ন সূচকে উপাদানের যোগফলকে উচ্চতর সূচকগুলিতে উপাদানের যোগফলের সমান। উদাহরণস্বরূপ, একটি ক্রম এ:

A[0]=-7 A[1]=1 A[2]=5 A[3]=2 A[4]=-4 A[5]=3 A[6]=0

3 একটি ভারসাম্য সূচক, কারণ:

A[0]+A[1]+A[2]=A[4]+A[5]+A[6]

6 এছাড়াও একটি ভারসাম্য সূচক, কারণ:

A[0]+A[1]+A[2]+A[3]+A[4]+A[5]=0

(শূন্য উপাদানগুলির যোগফল শূন্য) 7 কোনও ভারসাম্য সূচক নয়, কারণ এটি ক্রম A এর বৈধ সূচক নয় A.

ধারণাটি এমন একটি প্রোগ্রাম তৈরি করা যা একটি সিক্যুয়েন্স (অ্যারে) দেয়, তার ভারসাম্য সূচক (যে কোনও) বা -1 প্রদান করে যদি কোনও ভারসাম্য সূচক না থাকে।

উত্তর:


6

গল্ফস্ক্রিপ্ট 17 16

যেহেতু ইনপুটটির ফর্মটি নির্দিষ্ট করা হয়নি, এটি স্টিডিনের থেকে গল্ফস্ক্রিপ্ট অ্যারে বিন্যাসে একটি স্ট্রিং নেয়।

~0\{1$+.@+\}/])?

সুতরাং যেমন চালানো

golfscript.ry eqindex.gs <<<"[-7 1 5 2 -4 3 0]"

ধারণাটি খুব সহজ: এটি একটি অ্যারে নিয়ে যায় A_iএবং একটি অ্যারে মানচিত্র করে A_i + 2 SUM_{j<i} A_jএবং তারপরে প্রথম সূচীর সন্ধান করে যা পুরো অ্যারের যোগফলের সমান।


@ মেলামোকব এর চ্যালেঞ্জের জন্য আমি অফার করছি:

~0\{1$+.@+\}/:S;]:A,,{A=S=},`

29 অক্ষরের জন্য।


যেহেতু আপনার কাছে খুব সহজেই সংক্ষিপ্ত সমাধান রয়েছে, আমি আপনাকে ঘোষণা করছি আপনাকে অবশ্যই প্রথম
সূচিগুলি

আমার অভিনন্দন সহ @ মেল্লামোকব
পিটার টেলর

শান্ত! এখন আমি আরও কিছু গল্ফস্ক্রিপ্ট শিখতে পেয়েছি ...
মেল্লামোকব

5

পাইথন - 72 টি অক্ষর

A=input()
print[i for i in range(len(A))if sum(A[:i])==sum(A[i+1:])]or-1

কমা দ্বারা পৃথক ইনপুট নেয়


আশ্চর্যজনক ... এটি সমস্ত ভারসাম্য সূচকগুলি দেয় ... সত্যিই দুর্দান্ত।
ক্রিশ্চিয়ান

@ খ্রিস্টিয়ান: আমারও তাই করে।
FUZxxl

আমি দেখছি :) আমি আসলে কীভাবে হাস্কেল কোড চালাবেন জানি না ... অধ্যয়ন করতে হবে।
ক্রিশ্চিয়ান

খ্রিস্টান: জিএসিসি, সংকলক এবং আলিঙ্গন, একজন দোভাষী রয়েছে। আমি আলিঙ্গন ডাউনলোড করার পরামর্শ দিই । এইচসিসি ডাউনলোড করার পরে এটি আরও ভাল because আলিঙ্গন ব্যবহার করে আপনি runhugs FILE.hsপ্রোগ্রাম চালানোর জন্য টাইপ করতে পারেন FILE.hs
FUZxxl

5

হাস্কেল ( 95 83)

e l=[n|n<-[0..length l-1],sum(take n l)==sum(drop(n+1)l)]
main=interact$show.e.read

স্ট্যাডিন থেকে হাস্কেল স্টাইলে একটি তালিকা পড়ে, যেমন।

[-7,1,5,2,-4,3,0]

এবং সূচকগুলির একটি হাস্কেল স্টাইলের তালিকা প্রদান করে, যেমন।

[3,6]

ফলাফলটি হল [], যদি কোনও সূচক না থাকে।

আপনার অনুমান যদি অন্যরকম আচরণ চায় তবে দয়া করে আমাকে বলুন।

সম্পাদনা:

  • (95 → 83): তালিকান বোধগম্যতা আরও ব্রীভ

4

সি - 96

a[99],*p=a,s;main(){for(;scanf("%d",p)>0;s+=*p++
);for(;p>a;s-=*p)(s-=*--p)||printf("%d\n",p-a);}

নোট করুন যে এটি বিপরীত ক্রমে ভারসাম্য সূচকগুলি মুদ্রণ করে।

নমুনা ব্যবহার:

$ ./equilibrium <<< "-7 1 5 2 -4 3 0"
6
3

3

রুবি (83 77)

a=*$<.map(&:to_i)
p (0...a.size).select{|x|a[0..x].reduce(:+)==a[x..-1].reduce(:+)}

সম্পাদনা করুন: ভেন্টোরোর পরামর্শ অনুসারে সংক্ষিপ্ত সংস্করণ:

a=$<.map &:to_i
p (0...a.size).select{|x|eval"#{a[0..x]*?+}==#{a[x..-1]*?+}"}

ইনপুট প্রতি লাইনে এক নম্বর, আউটপুটটি বর্গাকার বন্ধনীগুলিতে সূচকগুলির জন্য কমা দ্বারা পৃথক করা তালিকা।


1
প্রথম লাইনে আপনার প্রথম বন্ধনী প্রয়োজন নেই এবং p (0...a.size).select{|x|eval"#{a[0..x]*?+}==#{a[x..-1]*?+}"}
যোগফলের যোগফল

দুর্দান্ত পরামর্শ, ধন্যবাদ! বিরক্তিকর যে অ্যারে # যোগফল রুবি কোর মধ্যে নয়।
লার্স হগসেট

আমি যদি প্রথম লাইনে অনুচ্ছেদগুলি সরিয়ে ফেলি, তবে আমি পেয়েছি: "সিনট্যাক্স এরর: (আইআরবি): 17: সিনট্যাক্স ত্রুটি, অপ্রত্যাশিত ট্যাম্পার, শেষের প্রত্যাশা
লার্স হগসেট

mapএম্পারস্যান্ডের মধ্যে একটি জায়গা থাকতে হবে । আর আপনার সামনে splat অপারেটর প্রয়োজন হবে না $<তাই সব সব লাইন ভালো দেখাবে, হয়: a=$<.map &:to_i। ;)
ভেন্টোরো

আহ, আবার ধন্যবাদ, এটি স্প্লিটই সিনট্যাক্সটিকে নষ্ট করেছিল।
লার্স হগসেট

2

জাভাস্ক্রিপ্ট (161)

P=parseInt;L=prompt().split(',');S=function(A)A.reduce(function(a,b)P(a)+P(b),0);R=[i for(i in L)if(S(L.slice(0,i))==S(L.slice(P(i)+1)))];alert(R.length>0?R:-1);

http://jsfiddle.net/6qYQv/1/



2

জে (12 টি অক্ষর)

সূক্ষ্ম স্বরলিপিতে একটি monadic ক্রিয়া যা ভারসাম্য সূচকগুলির একটি ভেক্টর প্রদান করে। কেবলমাত্র সুসংগঠনের জন্য স্পেস .োকানো হয়েছে।

[: I. +/\. = +/\

এটি ব্যাখ্যা করতে প্রথমে এর স্পষ্ট সংজ্ঞাটি পর্যবেক্ষণ করুন; yআনুষ্ঠানিক পরামিতি:

3 : 'I. (+/\. y) = (+/\ y)'
  • +এর যুক্তি যুক্ত করে। /এটি একটি ক্রিয়াপদ যা এর ডান যুক্তির সদস্যদের মধ্যে বামের ক্রিয়াটি সন্নিবেশ করায়, +/ 1 2 3 4যেমনটি একই 1 + 2 + 3 + 4
  • \এটি একটি ক্রিয়াপদ যা ডান যুক্তির সমস্ত উপসর্গের উপসর্গগুলিতে তার বামে ক্রিয়াটি প্রয়োগ করে। উদাহরণস্বরূপ, <তার তর্কটির চারপাশে একটি বাক্স অঙ্কন <\ 1 2 3 4করে , উত্পাদন করে

    ┌─┬───┬─────┬───────┐
    │1│1 2│1 2 3│1 2 3 4│
    └─┴───┴─────┴───────┘
    
  • সুতরাং, +/\তার ডান যুক্তির প্রতিটি উপসর্গের জন্য অঙ্কগুলি যোগ করে।

  • \.এর মতো \তবে উপসর্গের পরিবর্তে প্রত্যয়গুলিতে চালিত হয়। সুতরাং, +/\.প্রত্যয়গুলির যোগফলগুলির একটি ভেক্টর গণনা করে।
  • =তার যুক্তিগুলির আইটেম-ভিত্তিক তুলনা সম্পাদন করে। উদাহরণস্বরূপ, 1 1 3 3 = 1 2 3 4ফলন 1 0 1 0
  • সুতরাং, (+/\. y) = (+/\ y)সমস্ত সূচকগুলির জন্য একটি ফলন করে যেখানে প্রত্যয় যোগফলের উপসর্গের সমান, বা, একটি ভারসাম্য তৈরি হয়।
  • শূন্য এবং ভেক্টরের ভেক্টরগুলির জন্য, I.সূচকগুলির একটি ভেক্টর প্রদান করে যেখানে ভেক্টর একটি থাকে।

1

পাইথন 2, 70

A=input()
e=i=s=0
for x in A:e=[e,~i][s*2==sum(A)-x];s+=x;i+=1
print~e

চলমান যোগফলটি ট্র্যাক করা sএবং এটি বর্তমান উপাদান ব্যতীত অ্যারের যোগফলের অর্ধেক কিনা তা পরীক্ষা করা এবং এর ফলে বর্তমান উপাদানটির পরে অ্যারের যোগফলের সমান। যদি তা হয় তবে আমরা ভারসাম্য সূচকটি বর্তমান সূচকে আপডেট করি। শেষ ভারসাম্য সূচকটি মুদ্রিত হয় বা প্রাথমিক মানটি -1যদি না থাকে তবে।

প্রকৃতপক্ষে, আমরা ভারসাম্য সূচকটির বিট-পরিপূরক সংরক্ষণ করি যাতে পরিবর্তে এটি 0-এ শুরু করতে পারি।


0

পাইথন - 114

i=map(lambda x:int(x),raw_input().split(" "));x=0
print map(lambda x:(sum(i[0:x])==sum(i[x+1::])),range(0,len(i)))

পাইথন - 72

i=input()
print map(lambda x:sum(i[0:x])==sum(i[x+1::]),range(0,len(i)))

প্রদত্ত সূচকটি একটি ভারসাম্য সূচক কিনা তা মুদ্রণ করে, অ্যারেটি সুষম হয় এমন পূর্ণসংখ্যার সূচকগুলি মুদ্রণ করে না।


কী ভাঙল মানে? 6 একটি ভারসাম্য সূচক কারণ আইটেমগুলি শূন্যের আগে যোগ হয়, এর পরে কোনও আইটেম থাকে না এবং 50 টি উপেক্ষা করা হয়।
জোয়ে অ্যাডামস

হিজরি। জোয় স্পষ্টকরণের জন্য ধন্যবাদ, আমি বুঝতে পারিনি যে এক্স এর মানটিকে উপেক্ষা করার কথা ছিল।
আরডিডেম

0

পিএইচপি, 134 অক্ষর

<?for($a=explode(",",fgets(STDIN));++$i<($c=count($a));$o.=$s==0?$i:"")for($n=$s=0;$n<$c;)$s+=$n<$i?$a[$n++]:-$a[++$n];echo$o?$o:"-1";

আমার চুলকানি আছে যে এটি সর্বোত্তম পিএইচপি গল্ফিং থেকে অনেক দূরে, তবে কেবল বাষ্প (মস্তিষ্ক) এর বাইরে চলে গেল। কমপক্ষে এটি অ্যারে_সাম এবং অ্যারে_স্প্লাইসের চেয়ে কম :-)


0

পিএইচপি (81)

for($i=count($a)-1,$c=0;$i+1&&$c!=(array_sum($a)-$a[$i])/2;$c+=$a[$i--]);echo $i;

http://3v4l.org/qJvhO

যেহেতু কোন ইনপুট উল্লিখিত হয়ে থাকে, এই চাহিদা পরিবর্তনশীল যেমন অ্যারে ইনিশিয়ালাইজ করা $a

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