পূর্ণসংখ্যার অ্যারেগুলির মধ্যে ন্যূনতম ব্যয় মেলানো সন্ধান করুন


12

দুই ধরণের সাজানো অ্যারে বিবেচনা করুন যথাক্রমে এবং মাপের এবং সাথে । উদাহরণস্বরূপ , ।ওয়াই এম এন এম < এন এক্স = ( 1 , 4 ) ওয়াই = ( 2 , 10 , 11 )এক্সYmnm<nX=(1,4)Y=(2,10,11)

আমরা বলি যে একটি ম্যাচিং প্রতিটি উপাদানকে উপাদানটির সাথে এমনভাবে যুক্ত করার কিছু উপায় যাতে এর কোনও দুটি উপাদান একই উপাদানের সাথে জোড়া না দেয় । একটি মিলের ব্যয় হ'ল জোড়গুলির মধ্যে পার্থক্যের নিখুঁত মানের যোগফল।ওয়াই এক্স ওয়াইএক্সওয়াইএক্সওয়াই

উদাহরণস্বরূপ, , আমরা যার পরে দাম পড়ে । যদি আমরা তৈরি খরচ হত । আমরা জোড়া তৈরি করেছে এমন খরচ হতো ।ওয়াই = ( 2 , 10 , 11 ) ( 7 , 2 ) , ( 11 , 10 ) 5 + 1 = 6 ( 7 , 10 ) , ( 11 , 11 ) 3 + 0 = 3 ( 7 , 11 ) , ( 11 , 10 ) 4এক্স=(7,11)ওয়াই=(2,10,11)(7,2),(11,10)5+ +1=6(7,10),(11,11)3+ +0=3(7,11),(11,10)4+ +1=5

অন্য উদাহরণ হিসাবে , । আমরা ব্যয় করে জোড়া তৈরি করতে পারি । জোড়া দাম ।ওয়াই = ( 2 , 10 , 11 , 18 ) ( 7 , 2 ) , ( 11 , 10 ) , ( 14 , 11 ) 9 ( 7 , 10 ) , ( 11 , 11 ) , ( 14 , 18 ) 7এক্স=(7,11,14)ওয়াই=(2,10,11,18)(7,2),(11,10),(14,11)9(7,10),(11,11),(14,18)7

কাজটি কোডটি লিখতে হয় যেটি দুটি এবং দুটি পূর্ণসংখ্যার এবং সজ্জিত অ্যারে দেওয়া হয় এবং সর্বনিম্ন ব্যয়ের সাথে মিলে যায়।ওয়াইএক্সওয়াই

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

[1, 4],      [2, 10, 11]     => [[1, 2], [4, 10]]
[7, 11],     [2, 10, 11]     => [[7, 10], [11, 11]]
[7, 11, 14], [2, 10, 11, 18] => [[7, 10], [11, 11], [14, 18]]

এক্স বা ওয়াই এর কি কখনও পুনরাবৃত্তি হবে?

@ স্মারক না তারা যাবেনা
আনুশ

2
স্পষ্টতই, আমরা ন্যূনতম ব্যয়ের সাথে নয়, সর্বনিম্ন ব্যয়ের সাথে মিলটি ফিরি।
জিউসেপ 21

1
আমাদের আরও উদাহরণ থাকতে পারে?
dylnan

আমরা কি ধরে নিতে পারি যে এখানে কেবলমাত্র একটি মিল রয়েছে যা সর্বনিম্ন ব্যয় করেছে?
dylnan

উত্তর:


4

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

∧≜I&pᵐz₀.-ᵐȧᵐ+I∧

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

ব্যাখ্যা

∧
 ≜I                   Take an integer I = 0, 1, -1, 2, -2, 3, -3, …
   &pᵐ                Permute each sublist
      z₀.             Zip the sublists together. The result of the zip is the output
         -ᵐȧᵐ         Absolute differences of each pair
             +I       The sum of these differences must be I
               ∧

যেহেতু আমরা প্রথমদিকে Iকোনও পূর্ণসংখ্যার সাথে একীভূত করেছি, তাই আমরা ছোট মান Iথেকে বৃহত্তর মূল্যবোধ পর্যন্ত জিনিসগুলি চেষ্টা করি Iযার অর্থ প্রথমবারের মতো এটি সফল হবে সবচেয়ে ছোট পরম পার্থক্যগুলির সাথে জুটি বাঁধার জন্য।


4

জেলি , 15 14 12 11 বাইট

Œ!ż€IASƊÞḢṁ

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

  • -1 বাইট জোনাথন অ্যালানকে ধন্যবাদ
  • -১ বাইট মিঃ এক্সকোডারকে ধন্যবাদ
  • -২ বাইট একটি অনামী সম্পাদককে ধন্যবাদ

পাশবিক বল. পরে এক্স হিসাবে ইনপুট নেয় ।ওয়াইএক্স

Œ!ż€IASƊÞḢṁ
Œ!                 All permutations of Y.
  ż€               Zip each of the permutations with X.

       ƊÞ          Sort by:
    I              Difference of each pair.
     A             Absolute value.
      S            Sum.
         Ḣ         Take the first matching.
          ṁ        Mold the result like X. Keeps only values up to the length 
                   of X which removes unpaired values from Y.

L}জায়গায় কাজ করবে ⁹L¤?
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার হ্যাঁ, ধন্যবাদ!
dylnan

ÐṂḢ-> ÞḢএকটি বাইট সংরক্ষণ করুন।
জোনাথন অ্যালান

3

হাস্কেল, 78 77 76 বাইট

import Data.Lists
(argmin(sum.map(abs.uncurry(-))).).(.permutations).map.zip

টিআইওর নেই Data.Lists, তাই কোনও লিঙ্ক নেই।

@ Dylnan এর উত্তরে দেখা যায় একই অ্যালগরিদম ।

সম্পাদনা: -১ বাইট @ বিএমওকে ধন্যবাদ



2

জে , 24 বাইট

[,.[-[:,@:(0{]#~1>])"1-/

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

ব্যাখ্যা / বিক্ষোভের:

একটি ডায়াডিক ক্রিয়া, x f y

-/ পার্থক্য খুঁজে

 7 11 14 -/ 2 10 11 18
 5 _3 _4 _11
 9  1  0  _7
12  4  3  _4

(0{]#~1>])"1 প্রতিটি সারিতে কেবল অ-ধনাত্মক মান রাখুন এবং প্রথমটি নিন:

   7 11 14 ([:(0{]#~1>])"1-/) 2 10 11 18
_3 0 _4

[:,@: তালিকাটি সমতল করে (বাম আর্গুমেন্টের আকারের সাথে মেলে)

[-মিনিট বিয়োগ। বাম যুক্তি থেকে পার্থক্য

    7 11 14 ([-[:,@:(0{]#~1>])"1-/) 2 10 11 18
10
11
18

[,. তাদের বাম যুক্তিতে সেলাই করুন:

   7 11 14 ([,.[-[:,@:(0{]#~1>])"1-/) 2 10 11 18
 7 10
11 11
14 18


1

অক্টাভা , 66 বাইট

@(X,Y)[X;C([~,r]=min(sum(abs(X-(C=perms(Y)(:,1:numel(X)))),2)),:)]

বেনামি ফাংশন যা সারি ভেক্টরগুলিকে নেয় X, Yইনপুট হিসাবে এবং 2-সারি ম্যাট্রিক্স আউটপুট করে যেখানে প্রতিটি কলাম মিলনের জুড়ি।

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


1

পাইথ , 16 বাইট

hosaMNCM*.pQ.cEl

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

hosaMNCM*.pQ.cEl   Implicit: Q=evaluated 1st input, E=evaluated 2nd input
               l   Length of 1st input (trailing Q inferred)
            .cE    All combinations of 2nd input of the above length
         .pQ       All permutations of 1st input
        *          Cartesian product
      CM           Transpose each of the above
 o                 Order the above using:
   aMN               Take the absolute difference of each pair
  s                  ... and take their sum
h                  Take the first element of the sorted list, implicit print

1

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

yn&Y@yy&1ZP&X<Y)

ইনপুট হয় X, তারপর Y

মিলটি হ'ল Xপ্রথম লাইনে প্রতিটি জোড়ার প্রথম মান (যা, ) এবং দ্বিতীয় লাইনে প্রতিটি জোড়ের দ্বিতীয় মান।

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

ব্যাখ্যা

y       % Implicit inputs: X, Y. Duplicate from below
        % STACK: [7 11], [2 10 11], [7 11]
n       % Number of elements
        % STACK: [7 11], [2 10 11], 2
&Y@     % Variations without repetition
        % STACK: [7 11], [2 10; 2 11; 10 2; 10 11; 11 2; 11 10]
yy      % Duplicate top two elements
        % STACK: [7 11], [2 10; ...; 11 10], [7 11], [2 10; ...; 11 10]
&1ZP    % Compute cityblock distance between rows of the two input matrices
        % STACK: [7 11], [2 10;...; 11 10], [6 5 12 3 13 5]
&X<     % Argmin (first index of occurrences of the minimum)
        % STACK: [7 11], [2 10; 2 11; 10 2; 10 11; 11 2; 11 10], 4
Y)      % Row indexing. Implicit display
        % STACK: [7 11], 10 11]

1

জেলি , (10?) 12 বাইট

10 বাইট যদি কেবল Y এর উপাদানগুলির প্রয়োজন হয় (মন্তব্য দেখুন) - নিশ্চিত না যদিও এটি নির্দিষ্টভাবে অনুমোদিত হয়েছে কিনা (এবং সম্ভবত অন্যান্য উত্তর ইতিমধ্যে এই বিশদটি বাস্তবায়িত করার কারণে এটি হওয়া উচিত নয়)।
এটি পেছনটি সরিয়েই⁸ż অর্জন করা যেতে পারে ।

Lœc@ạS¥Þ⁸Ḣ⁸ż

একটি ডায়াডিক লিঙ্ক বামদিকে এক্স এবং ডানদিকে Y গ্রহণ করছে।
( œc⁹L¤ạS¥ÞḢż@এবং 10 বাইট হ'ল œc⁹L¤ạS¥ÞḢবামদিকে Y এবং ডানদিকে এক্স দিয়ে করুন)।

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

কিভাবে?

Lœc@ạS¥Þ⁸Ḣ⁸ż - Link: sorted list of integers X, sorted list of integers Y
L            - length
   @         - with swapped arguments:
 œc          -   combinations (chosen as if picked left-to-right
             -      e.g. [2,5,7,9] œc 2 -> [[2,5],[2,7],[2,9],[5,7],[5,9],[7,9]] )
        ⁸    - chain's left argument (to be on right of the following...)
       Þ     -   sort by:
      ¥      -     last two links as a dyad:
    ạ        -       absolute difference (vectorises)
     S       -       sum
         Ḣ   - head (since sorted this is just the first minimal choices from Y)
          ⁸  - chain's left argument
           ż - zip with (the chosen Y elements)

1

জাভাস্ক্রিপ্ট (ES7), 100 বাইট

এখানে নতুন; কোন টিপস / সংশোধন প্রশংসা করা হবে! পূর্ববর্তী প্রয়াসে NaNমান সহ একটি অ্যারে বাছাই করার ক্ষেত্রে জটিলতাগুলি উপেক্ষা করা হয়েছিল , তাই আশা করি এবার আমি কোনও কিছুই মিস করিনি।

(x,y,q=Infinity)=>y.map((u,j)=>(p=0,s=x.map((t,i)=>(u=y[i+j],p+=(t-u)**2,[t,u])),p)<q&&(q=p,r=s))&&r

যথাক্রমে X , Y হিসাবে দুটি যুক্তি প্রত্যাশা করে। এটি অনলাইন চেষ্টা করুন!

@ আরনাউল্ডের সমাধানের অনুরূপ বলে মনে হচ্ছে

ব্যাখ্যা

প্রদত্ত যে উপর নির্ভর এক্স , ওয়াই সাজানো হয়, সেখানে ন্যূনতম খরচ ম্যাচ যেখানে সব যুগলের উপাদানের ক্রম সংরক্ষণ সাজানো থাকে যদি একটি সমাধান বিদ্যমান এক্স , সমস্ত ওয়াই ব্যবস্থা উপাদান তাদের অর্ডার সংরক্ষণ।

(x, y, q = Infinity) =>
    y.map((u, j) =>                   // iterate over indices of y
        (
            p=0,
            s=x.map((t, i) => (       // map each element of x to...
                    u = y[i+j],       // an element of y offset by j
                    p += (t-u)**2,    // accumulate the square of the difference
                    [t, u]            // new element of s
                )),
            p
        ) < q                         // if accumulated cost less than previous cost...
                                      // (if p is NaN, any comparison will return false and short circuit)
        && (q=p, r=s)                 // save cost, pair values respectively
    ) && r                            // return lowest-cost pairs
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.