অনন্য যুগল খুঁজুন


28

আপনাকে অ-নেতিবাচক পূর্ণসংখ্যার A এবং B এর দুটি অ্যারে / তালিকা / ভেক্টর দেওয়া হবে । আপনার কাজটি হ'ল সর্বোচ্চ পূর্ণসংখ্যা N আউটপুট করা যা A এবং B উভয় ক্ষেত্রেই প্রদর্শিত হয় এবং এটি A এবং B উভয় ক্ষেত্রেই অনন্য ।


পরীক্ষার কেস:

এ, বি -> আউটপুট

[6], [1, 6] -> 6
[1, 2, 3, 4], [4, 5, 6, 7] -> 4
[0, 73, 38, 29], [38, 29, 73, 0] -> 73
[1, 3, 4, 6, 6, 9], [8, 7, 6, 3, 4, 3] -> 4
[2, 2, 2, 6, 3, 5, 8, 2], [8, 7, 5, 8] -> 5
[12, 19, 18, 289, 19, 17], [12, 19, 18, 17, 17, 289] -> 289
[17, 29, 39, 29, 29, 39, 18], [19, 19, 18, 20, 17, 18] -> 17
[17, 29, 39, 29, 29, 39, 18, 18], [19, 19, 18, 20, 17, 18] -> 17

উত্তর:


7

জেলি , 7 বাইট

fċ@ÐṂ;Ṁ

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

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

fċ@ÐṂ;Ṁ  Main link. Left argument: A. Right argument: B

f        Filter; keep those elements of A that appear in B.
   ÐṂ    Yield all elements of the result for which the link to left yields a
         minimal value (2).
 ċ@        Count the occurrences of the element...
     ;     in the concatenation of A and B.
      Ṁ  Take the maximum.

7

বাশ + কোর্টিলস, 49 বাইট

U()(sort -rn|uniq -u$1)
(U<<<$1;U<<<$2)|U D|sed q

1 বাইট বন্ধ করে গল্ফ করার জন্য @ সশৌমারা ধন্যবাদ!

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

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

ইউনিট বাছাই করা ইনপুট নেয় এবং কমান্ড-লাইন পতাকাগুলির উপর নির্ভর করে এক বা একাধিক ক্রিয়া করে।

U<<<$1এবং প্রথম এবং দ্বিতীয় কমান্ড-লাইন যুক্তিটিকে U<<<$2ফাংশনটিকে Uইনপুট হিসাবে কল করে call প্রত্যেকের জন্য, sort -rn|uniq -uকার্যকর করা হয়, ইনপুটটিকে সংখ্যা অনুসারে বাছাই করা হয় ( -n) এবং ইউনিকের-r জন্য অবতরণ ক্রমে ( ) , যা কেবল অনন্য লাইন ( ) প্রিন্ট করবে ।-u

উভয়ের আউটপুট (প্রতিটি অ্যারের অনন্য উপাদান) সংযুক্ত করে এবং পাইপ করা হয় U D, অর্থাৎ
sort -rn|uniq -uD,। এবার ইউনিক কেবল ডুপ্লিকেট লাইন ( -D) প্রিন্ট করবে এবং প্রত্যেকটির কেবল প্রথম পুনরাবৃত্তি হবে।

ম্যান পেজটি বলছে যে এটি সমস্ত পুনরাবৃত্তি মুদ্রণ করবে, যুক্ত করা -uকারণগুলি -Dডুপ্লিকেটড লাইনের প্রথম উপস্থিতি মুদ্রণ করে। সাধারণত এই আচরণটি অর্জন করা হয় uniq -d

অবশেষে, sed qতাত্ক্ষণিকভাবে প্রস্থান করুন, এর ইনপুট (উভয় অ্যারের অনন্য উপাদানগুলি) এর প্রথম লাইনে হ্রাস করুন। যেহেতু আউটপুটটি ক্রমবর্ধমান ক্রমে সাজানো হয়েছিল, এটি সর্বোচ্চ।


6

পাইথ, 12 9 বাইট

চেষ্টা করে দেখুন

eS@Fm.m/d

মিঃ এক্সকোডারকে 3 বাইট সংরক্ষণ করা হয়েছে।

ব্যাখ্যা

eS@Fm.m/d
    m  /d   Count the occurrences of each element.
     .m     Take only those that appear the minimum number of times.
  @F        Apply the above to A and B and take the intersection.
eS          Take the largest.

নিস! আমার দ্রবণটিও ছিল 12 বাইট
মিঃ এক্সকোডার

আমার সমাধানটি কিছুটা নীচে গল্ফ করা, 9 বাইট (ব্যবহার করা eS@Fm.m/d) এবং দুটি তালিকার তালিকা হিসাবে ইনপুট নেওয়া।
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার এটির নিজস্ব উত্তর হিসাবে যথেষ্ট আলাদা বলে মনে হচ্ছে।

যেহেতু আমি চ্যালেঞ্জের ওপি, তাই আমি এটি পোস্ট করতে নারাজ। আপনি কেবল এটি ব্যবহার করতে পারেন এবং credit

6


5

কাস্তে , 7 বাইট

→►≠OfEΠ

দুটি তালিকার একটি তালিকা হিসাবে ইনপুট নেয়, যে কোনও তালিকার জন্যও কাজ করে (সম্ভব হলে প্রতিটি ক্ষেত্রে ঠিক একবারে ঘটে যাওয়া সর্বোচ্চ সংখ্যাটি ফিরিয়ে দেওয়া)। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

নতুন "সর্বাধিক বাই" ফাংশনটি ব্যবহার করার (আব) এটি প্রথম হুস্কের উত্তর

→►≠OfEΠ  Implicit input, say [[3,2,1,3],[1,2,3,4]]
      Π  Cartesian product: [[3,1],[2,1],[3,2],[2,2],[1,1],[3,3],[1,2],[3,1],[3,4],[2,3],[1,3],[3,2],[2,4],[3,3],[1,4],[3,4]]
    fE   Keep those that have equal elements: [[2,2],[1,1],[3,3],[3,3]]
   O     Sort: [[1,1],[2,2],[3,3],[3,3]]
 ►≠      Find rightmost element that maximizes number of other elements that are not equal to it: [2,2]
→        Take last element: 2

4

বাশ + কোর্টিলস, 60 বাইট

f()(sort -rn<<<"$1"|uniq -u);grep -m1 -wf<(f "$1") <(f "$2")

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

বাশ, 89 বাইট

c()(for e;{((e^$1||r++,2^r));});for x in $1 $2;{((x<r))||c $x $1||c $x $2||r=$x;};echo $r

Tio


1
ব্যবহারের sort -rnসঙ্গে sed qশেষে পরিবর্তে tail -1শেভ 1 বাইট হয়। grep -wfবিটিডাব্লু সহ দুর্দান্ত সন্ধান করুন । +1
শৈশুমারা

@ সেশৌমারা, টিপটির জন্য আপনাকে ধন্যবাদ, আসলে আমি -m1 গ্রেপ বিকল্পের সাথে 3 বাইট শেভ করতে পারি।
নাহুয়েল ফিউইলুল


3

জে, 23 বাইট

>./@([-.-.)&(-.-.@~:#])

(-.-.@~:#]) তালিকা থেকে কোনও পুনরাবৃত্তি উপাদানগুলি সরিয়ে দেয়

& উভয় আর্গুমেন্ট এ এটি করুন

([-.-.) আমরা একটি ছেদক বি চাই, এটি সমতুল্য বাক্য: "একটি বিয়োগ (একটি বিয়োগ বি)"

>./ সর্বোচ্চ গ্রহণ করুন

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


সমানভাবে, আপনি ছেদ অংশটি এর সাথে প্রতিস্থাপন করতে পারেন e.~#]। গল্ফিং এটি কঠিন প্রমাণিত হয়েছে ... আমি /.কোনও সাফল্যের ((1=#)/.~#~.)জন্য-কি ব্যবহার করার চেষ্টা করেছি ( প্রথম অংশের জন্য যা আমার গণনা অনুসারে 2 বাইট দীর্ঘ)
কোল

@ কোল, হ্যাঁ, আমি পাশাপাশি একটি মূল পদ্ধতির চেষ্টা করেছি এবং স্ব-শ্রেণিবদ্ধ সহ একটিও। যদিও আমি অন্য কোনও পদ্ধতির সাথে উপরে আমার জমাটি পরাজিত করতে পারিনি।
জোনাহ

2

পাওয়ারশেল , 94 বাইট

param($a,$b)filter f($x){$x|group|?{$_.count-eq1}}
(f($a|sort|?{$_-in((f $b).Name)}))[-1].Name

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

ইনপুট $aএবং $bঅ্যারে হিসাবে নেয় । একটি নির্মান filterযে groupইনপুট অ্যারের উপাদান একসঙ্গে গুলি এবং শুধুমাত্র একটি যাদের আউট pulls count -eqকরার ual 1(অর্থাত, কেবলমাত্র সেই যে ইনপুট অ্যারের মধ্যে অনন্য)।

পরের লাইনটি পরে অ্যালগরিদমটি তৈরি করে। প্রথমে আমরা sort $aতারপরে তাদের -inঅনন্য আইটেমগুলি টেনে আনি $b। এরপরে সেগুলি নিজেরাই অনন্য-আইএডি হয়, সবচেয়ে বড়টি [-1]বেছে নেওয়া হয় এবং আমরা এটি গ্রহণ করি .Name। এটি পাইপলাইনে রেখে গেছে এবং আউটপুট অন্তর্ভুক্ত।


2

জাভাস্ক্রিপ্ট (ES6), 102 86 75 71 বাইট

a=>b=>Math.max(...a.map(e=>(g=x=>x.map(y=>y-e||x--,x=1)|!x)(a)*g(b)*e))

102 থেকে 86 এ যাওয়ার জন্য @ বিডিনিউজমারিনারকে ধন্যবাদ

86 থেকে 75 পর্যন্ত পাওয়ার জন্য @ টিএসকে ধন্যবাদ

75 থেকে 71 এ যাওয়ার জন্য @ আরনাউল্ডকে ধন্যবাদ

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


পিপিসিজিতে আপনাকে স্বাগতম! যতদুর আমি এই বলতে নিশ্চিত করুন যে দেখা যায় না পারে eশো আপ শুধুমাত্র একবার aএবং b
মার্টিন ইন্ডার

টুইটারে আমি মিস করা বিবরণ প্রতিফলিত করতে উত্তর সম্পাদনা!
Nate

1
আমি কখনও এর lastIndexOfমতো ব্যবহার করার কথা ভাবি নি , এটি বেশ চালাক। আপনি এটি 86 বাইটে নামাতে পারেন: এটি অনলাইনে চেষ্টা করুন! । পরীক্ষা করে দেখুন জাতীয় টিপস আরো অনেক কিছুর জন্য।
জাস্টিন মেরিনার

1
মনে (g=x=>x.filter(y=>y==e).length==1)হচ্ছে ব্যবহারটি সংক্ষিপ্ত।
tsh

1
আমি মনে করি এটি একটি সমস্ত প্রান্তের কেস (by১ বাইট) কেটে যাচ্ছে।
আর্নল্ড

2

হাস্কেল , 57 53 বাইট

x?y|let v!x=filter(==v)x==[v]=maximum[a|a<-x,a!x,a!y]

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

ইউপিডি: ধন্যবাদ লাইকনি


বিশেষত পিপিসিজি এবং হাস্কেল গল্ফিংয়ে আপনাকে স্বাগতম! এটি একটি সুন্দর প্রথম উত্তর! দুটি ছোট জিনিস: আপনি fইনফিক্স অপারেটর হিসাবে ঘোষণাও করতে পারেন এবং কিছু বাইট সংরক্ষণ করার [1|...]==[1]পরিবর্তে লিখতে sum[1|...]==1পারেন।
লাইকনি

আপনি যদি ইতিমধ্যে সেগুলি না দেখে থাকেন তবে এখানে কয়েকটি লিঙ্ক রয়েছে যা আকর্ষণীয় হতে পারে: আমাদের হাস্কেলের চ্যাট রুম, হাস্কেল এবং মনডস এবং মেনের গল্ফিং নিয়মের গাইড , হাস্কেলের গল্ফিং টিপসের আমাদের সংগ্রহ ।
লাইকনি

1
ইন-লাইনের !সাথে andআরও দুটি বাইট সাশ্রয় হয়: এটি অনলাইনে চেষ্টা করুন!
লাইকনি

2

ওল্ফ্রাম ভাষা (ম্যাথমেটিকা) , 40 বাইট

Max@Cases[Tally@#⋂Tally@#2,{x_,1}:>x]&

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

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

Tally@#প্রথম ইনপুটটির অনন্য উপাদানগুলির একটি তালিকা প্রদান করে, তাদের গণনাগুলি সহ: উদাহরণস্বরূপ, Tally[{2,2,2,6,3,5,8,2}]ফলন {{2,4},{6,1},{3,1},{5,1},{8,1}}

Tally@#2দ্বিতীয় তালিকার জন্যও একই কাজ করে এবং উভয়ের মধ্যে উপস্থিত জোড়া খুঁজে পায়। তারপরে আমরা প্রতিটি ফলাফলের প্রথম উপাদানটি গ্রহণ করে (সাথে Cases) জোড়গুলি বাছাই করি 1যা আমাদের সমস্ত অনন্য যুগলগুলির একটি তালিকা দেয়। অবশেষে, Maxবৃহত্তম অনন্য যমজকে ফেরত দেয়।


2

Röda , 48 বাইট

{m={|n|sort|count|[_]if[_=n]};[_()|m 1]|m 2|max}

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

Jq170727 এর জকিউ উত্তর দ্বারা অনুপ্রাণিত ।

ব্যাখ্যা:

{ /* Anonymous function, takes input from the stream */
  m={|n|        /* Local function m with parameter n: */
    sort|count| /*   Count unique values in the stream */
    [_]if[_=n]  /*   For each value, push it to the stream if its count is n */
  };
  [      /* For each list in the stream: */
    _()| /*   Flat it (push its values to the stream) */
    m 1  /*   Push values that appear only once to the stream */
  ]|
  m 2|   /* Push values that appear twice to the stream */
  max    /* Find the max value in the stream */
}

2

এফ # (.নেট কোর) , 117 115 114 111 108 বাইট

115 114 বাইট

countByএই সময়ের সাথে আরও একটি সমাধান :

let u x=x|>Seq.countBy id|>Seq.filter(fun a->snd a=1)|>Seq.map fst|>set
let f x y=Set.intersect(u x)(u y)|>Seq.max

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

117 111 বাইট

let u x=x|>Seq.filter(fun a->x|>Seq.filter((=)a)|>Seq.length=1)|>set
let f x y=Set.intersect(u x)(u y)|>Seq.max

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

100% F #! কোন সহায়তা স্বাগত!

উপসর্গ শিরোনাম ধন্যবাদ 6 বাইট জিতেছে!

108 বাইট

let f a b=Set.intersect(set a)(set b)|>Seq.filter(fun x->a@b|>Seq.filter(fun y->y=x)|>Seq.length<3)|>Seq.max

@কনক্যাট ফাংশন! এই অ্যালগরিদমের জন্য আপনাকে @ আইবি 4 বিটিটু ধন্যবাদ।

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


2

সি # (.নেট কোর) , 85 84 বাইট

x=>y=>x.Where(a=>x.Count(b=>b==a)<2).Intersect(y.Where(a=>y.Count(b=>b==a)<2)).Max()

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

using System;using System.Linq;লিনকুইয়ের সাথে নিষ্পাপ সমাধান ( +১১ চ্যাচার সুতরাং শিরোনাম সহ 116 বাইট)

84! আমি তরকারি ভুলে গেছি!


2

পিপ , 17 16 বাইট

MX{_Na=_Nb=1FIa}

এটি একটি ফাংশন যা দুটি তালিকা আর্গুমেন্ট হিসাবে গ্রহণ করে। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

  {            }  Define function, args are a & b:
            FIa    Filter elements of a on this function:
   _Na              Count of element in a
      =_Nb          equals count of element in b
          =1        equals 1
                  This gives a function that returns a list of unique twins
MX                Modify it to take the max and return that instead

2

এপিএল (ডায়ালগ) , ১৮ টি চর = ২৩ বাইট *

একটি সম্পূর্ণ প্রোগ্রাম বডি। STDIN থেকে তালিকার তালিকার জন্য অনুরোধ জানানো হয়েছে। যে কোনও সংখ্যক তালিকার সাথে কাজ করে। STDOUT এ আউটপুট।

⌈/∊∩/{⊂⍺⍴⍨1=≢⍵}⌸¨⎕

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

 STDIN থেকে মূল্যায়ন ইনপুট জন্য প্রম্পট

{}⌸¨ প্রতিটি তালিকার জন্য, সেই তালিকার প্রতিটি অনন্য উপাদানের জন্য নিম্নলিখিত ফাংশনটি কল করুন, বাম আর্গুমেন্ট ( ) হিসাবে অনন্য উপাদান এবং ডান আর্গুমেন্ট হিসাবে তার উপস্থিতি সূচকগুলির তালিকা :

≢⍵ সূচকের সংখ্যা (যেমন সংখ্যার সংখ্যা)

1= সমান 1

⍺⍴⍨ নির্দিষ্ট উপাদানটিকে পুনরায় আকার দেওয়ার জন্য এটি ব্যবহার করুন (উদাহরণস্বরূপ শূন্য তালিকাগুলি যদি অদ্বিতীয় হয় তবে)

প্রতিটি ইনপুট তালিকার জন্য এখন আমাদের কাছে দুটি অনন্য উপাদানের তালিকা রয়েছে (যদিও প্রতিটি উপাদান একটি তালিকা এবং অ-অনন্য উপাদানগুলির অবশিষ্টাংশ হিসাবে খালি তালিকা রয়েছে)।

∩/ ছেদ (হ্রাস)

ε nlist (চেপ্টা)

⌈/ সর্বোচ্চ (হ্রাস)


ক্লাসিক হিসাবে , হিসাবে গণনা ⎕U2338


1

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

,iSY'1=)]X&X>

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

ব্যাখ্যা

,      % Do twice
  i    %   Take input: array
  S    %   Sort array
  Y'   %   Run-length encode: pushes array of values and array of run lengths
  1=   %   Compare each run length with 1
  )    %   Use as logical index. This keeps only values that have appeared once
]      % End
X&     % Intersection of the two arrays
X>     % Maximum of array. Implicitly display

1

পিএইচপি, 98 বাইট

<?foreach(($c=array_count_values)($_GET[a])as$a=>$n)$n-1||$c($_GET[b])[$a]-1||$a<$r||$r=$a;echo$r;

জিইটি প্যারামিটার aএবং হিসাবে অ্যারে সরবরাহ করুন b


মনে করুন আপনি ধ্রুবকগুলির জন্য এই জিইটি প্যারামগুলি স্যুপ করতে পারেন।
প্রোগ্রোক

@ প্রোগ্রোক এটি বৈধ ইনপুট পদ্ধতি নয়।
টাইটাস

A এবং B অ্যারে হিসাবে প্রদত্ত প্রশ্নের বাক্যগুলি। এবং যে কোনও যুক্তিসঙ্গত ইনপুট এবং আউটপুট পদ্ধতি বলে .... আমি যে লিঙ্কটি সহজেই অনুসরণ করতে পারি তা নয়। সত্যিই আপনার রেসিপি পছন্দ। (যদিও অপ্রচলিত পিএইচপি 5.6 এ চোকস।)
প্রোগ্রোক

1

জাভা 8, 133 বাইট

a->b->{long r;for(java.util.Collections c=null;;a.remove(r))if(b.contains(r=c.max(a))&c.frequency(a,r)*c.frequency(b,r)==1)return r;}

ব্যাখ্যা:

এখানে চেষ্টা করুন।

a->b->{                  // Method with two ArrayList<Long> parameters and long return-type
  long r;                //  Result-long
  for(java.util.Collections c=null; 
                         //  Create a java.util.Collections to save bytes
      ;                  //  Loop indefinitely
       a.remove(r))      //    After every iteration, remove the current item
    if(b.contains(r=c.max(a)) 
                         //   If the maximum value in `a` is present in `b`,
       &c.frequency(a,r)*c.frequency(b,r)==1)
                         //   and this maximum value is unique in both Lists:
      return r;          //    Return this value
                         //  End of loop (implicit / single-line body)
}                        // End of method


1

জাভাস্ক্রিপ্ট ইএস 5, 122 121 114 বাইট

function f(a,b){for(i=a.sort().length;--i+1;)if(a[i]!=a[i+1]&&a[i]!=a[i-1]&&!(b.split(a[i]).length-2))return a[i]}

আমি এখানে নতুন, তাই আমি ফাংশন সংজ্ঞাটি সরাতে এবং কেবলমাত্র এর বিষয়বস্তু রাখতে পারি কিনা তা সত্যিই আমি জানি না (যা আমাকে 17 বাইট সংরক্ষণ করতে পারে)

কাজের উদাহরণ এখানে: 122 121 114

122 থেকে 121 বাইট: একটি জন্য জন্য মোড়ক সূচনা

121 থেকে 114 বাইট: bস্ট্রিং হতে হবে


2
পিপিসিজিতে আপনাকে স্বাগতম! আপনি ফাংশন সংজ্ঞাটি মুছে ফেলতে পারবেন না, তবে আপনি তার পরিবর্তে ল্যাম্বদা ফাংশনটি ব্যবহার করতে সক্ষম হতে পারবেন (আমি জেএসকে জানি না তাই আমি আপনাকে এটির সাহায্য করতে পারি না)।
মিঃ এক্সকোডার

এটি পরিষ্কার করার জন্য ধন্যবাদ। আমি মনে করি লাম্বদা ফাংশনগুলি কোনও অক্ষর সংরক্ষণ করতে পারে না, তবে আমি চেষ্টা করব। এছাড়াও, যেহেতু আপনি "কোনও যুক্তিসঙ্গত ইনপুট এবং আউটপুট পদ্ধতি / ফর্ম্যাট অনুমোদিত" তাই আমি কি কোনও স্ট্রিং গ্রহণ করে bসংরক্ষণ করতে b=''+b,পারি?
পিয়িন

আমি 115 বাইট পেতে যদিও আমি জাভাস্ক্রিপ্ট জানি না পরিচালনা নি: f=(a,b)=>{for(b=''+b,i=a.sort().length;--i+1;)if(a[i]!=a[i+1]&&a[i]!=a[i-1]&&!(b.split(a[i]).length-2))return a[i]}
মিঃ এক্সকডার

1
হ্যাঁ নিশ্চিত যে স্ট্রিং ইনপুটটি
ঠিকঠাক

তবে আপনি যে জাভাস্ক্রিপ্ট নিয়ে এসেছেন সেটি ES5 হবে, ES6 নয়। একটি ES6 উত্তর ইতিমধ্যে পোস্ট করা হয়েছে, এজন্যই আমি ES5 পোস্ট করেছি। এবং দ্বিতীয় প্রশ্নের উত্তর দেওয়ার জন্য ধন্যবাদ
হি


1

জেকিউ 1.5 , 76 বাইট

def m(n):[.[indices(.[])|select(length==n)[]]]|unique[];[map(m(1))|m(2)]|max

সম্প্রসারিত

def m(n): # function to emit elements of multiplicity n
  [
    .[                         # select elements with
         indices(.[])          # number of indices in the array
       | select(length==n)[]   # equal to specified multiplicity
    ]
  ] | unique[]                 # emit deduped values
;

[
    map(m(1))   # collect multiplicity 1 elements from each array
  | m(2)        # collect multiplicity 2 elements
] | max         # choose largest of these elements

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

এখানে একই সমাধানটি যা একই দৈর্ঘ্য:

def u:[keys[]as$k|[.[$k]]-(.[:$k]+.[$k+1:])]|add;map(u)|.[0]-(.[0]-.[1])|max

সম্প্রসারিত

def u: # compute unique elements of input array
  [
      keys[] as $k                   # for each index k
    | [.[$k]] - (.[:$k]+.[$k+1:])    # subtract other elements from [ .[k] ]
  ]                                  # resulting in [] if .[k] is a duplicate
  | add                              # collect remaining [ .[k] ] arrays
;
  map(u)                             # discard duplicates from each input array
| .[0]-(.[0]-.[1])                   # find common elements using set difference
| max                                # kepp largest element

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


1

এপিএল, 47 বাইট

{1↑R[⍒R←((1={+/⍵=A}¨A)/A←⍺)∩(1={+/⍵=B}¨B)/B←⍵]}

একটি বেনামি ফাংশন ঘোষণা করে যা দুটি ভেক্টর নেয়, সদৃশ উপাদানগুলি মুছে ফেলে, তারপরে ফলাফলের ছেদ করার সবচেয়ে বড় উপাদানটি খুঁজে পায়।

A←⍺এবং B←⍵আর্গুমেন্ট মধ্যে Aএবং মধ্যে ফাংশন পাস B

a=baসমান প্রতিটি সূচকে 1 সহ একটি ভেক্টর প্রদান করে b। যদি aকোনও স্কেলার হয় (যেমন একক পরিমাণ এবং একটি ভেক্টর নয়) তবে এটি যেখানে 1 উপাদান bথাকে aএবং 0 না থাকলে 0 সহ একটি ভেক্টরকে প্রদান করে returns উদাহরণ স্বরূপ:

Input: 1=1 2 3
Output: 1 0 0

{+/⍵=A}: নেস্টেড বেনামে ফাংশন; ভেক্টরে আর্গুমেন্টের উপস্থিতিগুলি সন্ধান Aকরুন এবং সেগুলি যুক্ত করুন অর্থাৎ যুক্তির উপস্থিতির সংখ্যাটি সন্ধান করুনA

1={+/⍵=A}¨A: এ এর ​​প্রতিটি উপাদানে নেস্টেড বেনামে ফাংশন প্রয়োগ করুন এবং সমান 1 অর্থাৎ অনন্য উপাদানগুলির সাথে সন্ধান করুন

((1={+/⍵=A}¨A)/A←⍺): অনন্য উপাদানগুলির অবস্থান খুঁজে পেয়ে , মূল ভেক্টরে কেবল এই উপাদানগুলি নির্বাচন করুন (/ নির্বাচন করুন ডান আর্গুমেন্ট উপাদানগুলি থেকে নির্বাচন করুন যার অবস্থানগুলি বাম আর্গুমেন্টের সাথে 1 এর সাথে মিলিত হয়)

R←((1={+/⍵=A}¨A)/A←⍺)∩(1={+/⍵=B}¨B)/B←⍵: দ্বিতীয় যুক্তির জন্য প্রক্রিয়া পুনরাবৃত্তি; এখন যে আমাদের কেবল অনন্য উপাদান রয়েছে, ছেদগুলি অর্থাত্ সাধারণ উপাদানগুলি সন্ধান করুন এবং এটি ভেক্টরে সংরক্ষণ করুনR

R[⍒R]: Rহ্রাস ক্রমে উপাদান অ্যাক্সেস

1↑R[⍒R]: Rহ্রাসমান ক্রমে এটি বাছাইয়ের প্রথম উপাদানটি গ্রহণ করুন take

পরীক্ষা ক্ষেত্রে:

Input: 17 29 39 29 29 39 18 18 {1↑R[⍒R←((1={+/⍵=A}¨A)/A←⍺)∩(1={+/⍵=B}¨B)/B←⍵]} 19 19 18 20 17 18
Output: 17

1

জে , 30 বাইট

[:>./@,[*([*+/"1(1=*/)+/)@(=/)

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

আমি টেস্টিং দিয়ে শুরু করি যেখানে দুটি তালিকা ওভারল্যাপ করে =/(তালিকার সমস্ত সদস্যের মধ্যে সমতা পরীক্ষা সন্নিবেশ করায়:

   a =. 1 3 4 6 6 9
   b =. 8 7 6 3 4 3
   ]c=. a =/ b 
0 0 0 0 0 0
0 0 0 1 0 1
0 0 0 0 1 0
0 0 1 0 0 0
0 0 1 0 0 0
0 0 0 0 0 0

একই কলামে একাধিক 1 এর অর্থ বাম আর্গুমেন্টের জন্য সংখ্যাটি অনন্য নয় (এই ক্ষেত্রে 6); সারিতে - সঠিক যুক্তির জন্য (3)

তারপরে আমি সদৃশগুলি কোথায় রয়েছে তা সন্ধান করার জন্য সমস্ত সারি এবং সমস্ত কলাম সংযুক্ত করে:

   +/ c
0 0 2 1 1 1
   +/"1 c
0 2 1 1 1 0

আমি উপরের তালিকার কার্টেসিয়ান পণ্যটি পেয়েছি এবং সদস্যদের 1 থেকে 0 এর চেয়ে বড় সেট করেছি।

    m =. (+/"1 c) (1=*/) +/c
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 1 1 1
0 0 0 1 1 1
0 0 0 1 1 1
0 0 0 0 0 0

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

]l =. a * m * c
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 4 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0

তারপরে আমি তালিকাটি সমতল করে সর্বাধিক উপাদানটি সন্ধান করব:

 >./,l 
4

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


1

সি # (.নেট কোর) , 66 + 31 = 97 65 + 31 = 96 বাইট

a=>b=>a.Intersect(b).Where(x=>a.Concat(b).Count(y=>y==x)<3).Max()

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

জন্য +31 বাইট using System;using System.Linq;

আমি @ অ্যালিসডজির উত্তর থেকে অনুপ্রেরণা নিয়েছি। তবে উভয় অ্যারেতে অনন্য মূল্যবোধ অনুসন্ধান করার পরিবর্তে আমি intersectপ্রথমে ক্রিয়াকলাপটি উল্টিয়ে দিয়েছি এবং তারপরে অ্যারেগুলি সংক্ষিপ্ত করে এবং তাদের ছেদ করার সময় দু'বারের আইটেমগুলির সর্বাধিক মান খুঁজে পাই । আমি যে কোনও মানের জন্য কমপক্ষে 2 <3হিসাবে হিসাবে ব্যবহার করতে পারি Count, এটি উভয় অ্যারেতে হবে।

প্রাপ্তি স্বীকার

-1 বাইট @ অ্যালায়সডজ এবং কারি ব্যবহারের জন্য তার পরামর্শের জন্য ধন্যবাদ Func


1
ভাল যুক্তি! আমি সত্যিই এটি পছন্দ করি
অ্যালোইসডজি মনিকা

এফ # 3-তে 3 বাইট জিতেছে :) কোডগলফ.স্ট্যাকেক্সেঞ্জাওটা
a


0

অক্টাভা , 57 56 বাইট

@(x)max(intersect(cellfun(@(x){x(sum(x'==x)==1)},x){:}))

বেনামে ফাংশন যা দুটি সংখ্যার অ্যারের ইনপুট হিসাবে একটি সেল অ্যারে নেয়।

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

ব্যাখ্যা

cellfun(@(x)...)দুটি ইনপুট অ্যারেগুলির প্রতিটি ( ) এর জন্য, এটি এর এন্ট্রিগুলির মধ্যে জুটিওয়ালা সাম্যের তুলনার একটি ম্যাট্রিক্স তৈরি করে ( x.'==x); ( x(...)) কেবলমাত্র এন্ট্রি রাখে যার জন্য কলামের যোগফল 1( sum(...)==1); এবং একটি ঘরে ফলাফল প্যাক করে ( {...})। intersectদুটি ফলাফলের ( {:}) ছেদটি গণনা করা হয় এবং সর্বাধিক ( max(...)) নেওয়া হয়।


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