দুটি তালিকার অপ্রচলিত বৃহতীকরণ


13

সংজ্ঞা

একটি ভেক্টর একটি ধারণকারী এন উপাদানের বলা হয় majorize বা প্রভাবশালী একটি ভেক্টর সঙ্গে এন উপাদানের iff সব মান জন্য k যেমন যে 1 ≤ এন , প্রথম উপাদান এর সমষ্টি একটি মাধ্যমে তম উপাদান একটি বেশী এর চেয়ে বড় বা মাধ্যমে প্রথম সমষ্টির সমান ম উপাদান , যেখানে V প্রতিনিধিত্ব করে ভেক্টর বনাম অবরোহী সাজানো।

এটাই,

                          a_1 >= b_1
                    a_1 + a_2 >= b_1 + b_2
              a_1 + a_2 + a_3 >= b_1 + b_2 + b_3
                              ...
      a_1 + a_2 + ... + a_n-1 >= b_1 + b_2 + ... + b_n-1
a_1 + a_2 + ... + a_n-1 + a_n >= b_1 + b_2 + ... + b_n-1 + b_n

যেখানে a এবং b অবতরণ অনুসারে বাছাই করা হয়।

এই প্রতিদ্বন্দ্বিতা উদ্দেশ্য জন্য, আমরা majorization সামান্য সাধারণীকরণ ব্যবহার করা হবে: আমরা বলবে একটি তালিকা একটি হল পাঁচমিশালী majorization অন্যের যদি উপরে অসাম্য সব বাছাই ছাড়া সত্য একটি এবং । (এটি অবশ্যই গাণিতিকভাবে অকেজো, তবে চ্যালেঞ্জটিকে আরও আকর্ষণীয় করে তুলেছে))

চ্যালেঞ্জ

দুটি স্বতন্ত্র তালিকার একটি ইনপুট দেওয়া একটি এবং মাধ্যমে 255 (সহ) পরিসর 0 পূর্ণসংখ্যার, দৈর্ঘ্য উভয় তালিকা এন ≥ 1, আউটপুট প্রথম তালিকাটি কিনা দ্বিতীয় (পাঁচমিশালী-majorizes একটি > ), দ্বিতীয় unsorted- প্রথমটিকে (ম < b > ) বা অন্যথায় বড় করে তোলে ।

ইনপুট হিসাবে সরবরাহের জন্য আপনার দুটি বিকল্পের দৈর্ঘ্যের প্রয়োজন হতে পারে। আউটপুট সবসময় তিনটি স্বতন্ত্র মান এক হতে হবে, কিন্তু মান নিজেদের হতে পারে যাই হোক না কেন আপনি চান (যা মান প্রতিনিধিত্ব উল্লেখ করুন একটি > , > একটি , এবং কেউই আপনার উত্তর)।

জন্য পরীক্ষার ক্ষেত্রে একটি > :

[255] [254]
[3,2,1] [3,1,2]
[6,1,5,2,7] [2,5,4,3,7]

জন্য পরীক্ষার ক্ষেত্রে > একটি :

[9,1] [10,0]
[6,5,4] [7,6,5]
[0,1,1,2,1,2] [0,1,2,1,2,1]

কোনও বড়ীকরণের জন্য পরীক্ষার মামলাগুলি:

[200,100] [150,250]
[3,1,4] [2,3,3]
[9,9,9,9,9,0] [8,8,8,8,8,9]

আমরা কি ইনপুট হিসাবে 2-কলামের অ্যারে নিতে পারি?
লুইস মেন্ডো

1
@ লুইসমেডো হ্যাঁ, ইনপুটটি এমন কোনও ফর্ম্যাটে হতে পারে যা অতিরিক্ত তথ্য এনকোড করে না।
ডুরকনব

জোড়গুলির একটি অ্যারে গ্রহণযোগ্য হবে?
ডেনিস

উত্তর:


6

জেলি , 10 8 6 বাইট

2 বাইট @orlp ধন্যবাদ।

@ ডেনিসকে 2 বাইট ধন্যবাদ।

_+\ṠQS

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

1জন্য a>b, -1জন্য a<b, 0কোন majorization জন্য।

_+\ṠQS

_       Difference (vectorized)
 +\     Cumulative sum.
   Ṡ    Sign of every difference
    Q   Deduplicate
     S  Sum

যদি উভয় 1এবং -1উপস্থিত ছিল (কিছু সংখ্যক পরিমাণ বড়, কিছু ছোট), তবে শেষ পদক্ষেপটি উত্পাদন করতে পারে 0


3

এনএনজি / এপিএল, 11 বাইট

{+/∪×+\⍺-⍵}

@ লিকি নুনের উত্তরের পদ্ধতিটির ভিত্তিতে ।

A এবং B দুটি তালিকা দেওয়া , প্রতিটি মানের মৌলিক দিকের মধ্যে পার্থক্যটি সন্ধান করুন বা C = A - B দিন । তারপরে, সি এর সংক্ষিপ্ত পরিমাণগুলি আবিষ্কার করুন এবং প্রতিটিটির সাইন ইন করুন। অনন্য চিহ্নের মানগুলির যোগফল ফলাফল হবে। যদি > বি হয় তবে ফলাফলটি 1, যদি < বি ফলাফল -1 হয়, এবং সংখ্যাগরিষ্ঠতা না থাকলে ফলাফল 0 হয়।

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


3

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

a^b=sum(sign(cumsum(a-b))∪0)

@ ডেনিসকে 4 টি বাইট সংরক্ষণ করা হয়েছে!


জুলিয়ার কোন সংস্করণে আপনি এটি পরীক্ষা করেছেন?
ডেনিস

ওফস: পিআই মনে করে এটি কাজ করা উচিত।
মামা ফান রোল

1
প্রকৃতপক্ষে. a^b=sum(sign(cumsum(a-b))∪0)কয়েক বাইট সাশ্রয়।
ডেনিস

2

পাইথন 3.5, 85 বাইট:

lambda*e:[all(sum(g[:k])>=sum(h[:k])for k in range(1,-~len(h)))for g,h in[e,e[::-1]]]

একটি বেনামে ল্যাম্বদা ফাংশন। রিটার্নস [True,False]যদি a>b, [False,True]যদি b>a, অথবা [False,False]যারা তন্ন তন্ন সত্য পারেন। আমি আশা করি এটি ঠিক আছে।

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


2

চেডার , 118 114 বাইট

n->[n.map(i->i[0]-i[1]).map((j,k,l)->l.slice(0,k+1).sum).map(i->i>0?1:i<0?-1:0)].map(j->j has 1?j has-1?0:1:-1)[0]

মূলত আমার জেলি উত্তর একটি বন্দর ।

সত্য যে সুযোগ ভিতরে ফাংশন পরিবর্তনশীল ভিতরে ফাংশন মানে আমি তা পূর্ণ করতে হবে সংজ্ঞায়িত করতে অক্ষমতা ঘটাচ্ছে নষ্ট হয়ে গেছে [xxx].map(i->yyy)[0]পরিবর্তে var a=xxx;yyy

ইনপুট হিসাবে স্থানান্তর অ্যারে নেয়।

n->[n
.map(i->i[0]-i[1])                     Difference (vectorized)
.map((j,k,l)->l.slice(0,k+1).sum)      Cumulative sum.
.map(i->i>0?1:i<0?-1:0)]               Sign of every difference
.map(j->j has 1?j has-1?0:1:-1)[0]     Deduplicate and Sum



1

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

t=r=0
for x,y in zip(*input()):t+=x-y;r|=cmp(t,0)%3
print r

আউটপুট:

  • 1 জন্য a>b
  • 2 জন্য b>a
  • 3 উভয়ের জন্যই নয়

tপার্থক্যগুলির চলমান সমষ্টি ট্র্যাক করে তালিকার মাধ্যমে আইট্রেট করে । সংখ্যাটি sদুটি বিট সংখ্যা হিসাবে কী লক্ষণগুলি দেখা গেছে তা ট্র্যাক করে r: ডান বিটে ধনাত্মক এবং বাম বিটে নেতিবাচক। এটি দিয়ে যায় cmp(t,0)%3, যা দেয়

  • t>0 । → +11
  • t==0। → 0 0
  • t<0 । → -12

এটির সাথে সাথে 2 বিট আপডেটের orবর্তমান মানটি গ্রহণ করা , শূন্য মানগুলির কোনও প্রভাব নেই।ror


0

জাভাস্ক্রিপ্ট (বহিরাগত গ্রন্থাগার-গণনাযোগ্য ব্যবহার করে) (123 বাইট)

(a,b)=>(z=(c,d)=>_.Range(1,c.length).All(x=>_.From(c).Take(x).Sum()>=_.From(d).Take(x).Sum()))(a,b)==z(b,a)?0:(z(a,b)?1:-1)

লিবের লিঙ্ক: https://github.com/mvegh1/ গণনাযোগ্য

কোড ব্যাখ্যা: ভেক্টর এ এবং বি পাস করুন, বিশ্বব্যাপী ফাংশন z তৈরি করুন। z দৈর্ঘ্য দৈর্ঘ্যের জন্য, 1 থেকে পূর্ণসংখ্যার অ্যারে তৈরি করে শুরু হবে। । সমস্ত যাচাই করে যাবেন যে ক এর সাথে সম্পর্কিত প্রতিটি সদস্যের জন্য ভবিষ্যদ্বাণীটি সত্য। সেই ভবিষ্যদ্বাণীকটি একটিকে একটি গণনাকারী হিসাবে লোড করতে বলেছে যে আমরা তৈরি করেছি সেই পরিসরের বর্তমান পুনরাবৃত্ত মানের সাথে সেই পরিমাণের সমান গণনা করুন এবং এটির যোগফল। যে> = অ্যারে "বি" থেকে একই যুক্তি কিনা তা পরীক্ষা করে দেখুন। সুতরাং, আমরা (ক, খ) এর ক্রমে z ডাকি এবং এটিকে (খ, ক) এর ক্রমের সাথে তুলনা করি ... সমান হলে আমরা 0 ফিরিয়ে দিচ্ছি যে কোনও মেজর নেই sign অন্যথায়, যদি আমরা (ক, খ) সত্য হয়, তবে আমরা 1 ফিরিয়ে দেব, অন্যথায় -1

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

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