Considérons deux tableaux triés d'entiers et de taille et respectivement avec . Par exemple, , .Y m n m < n X = ( 1 , 4 ) Y = ( 2 , 10 , 11 )
On dit qu'une adaptation est un moyen d'appariement de chaque élément de avec un élément de de telle sorte que deux éléments de sont jumelés avec le même élément de . Le coût d'un appariement n'est que la somme des valeurs absolues des différences dans les paires.Y X Y
Par exemple, avec , nous pouvons faire les paires qui ont alors coûté . Si nous avions fait les paires le coût aurait été . Si nous avions fait les paires le coût aurait été .Y = ( 2 , 10 , 11 ) ( 7 , 2 ) , ( 11 , 10 ) 5 + 1 = 6 ( 7 , 10 ) , ( 11 , 11 ) 3 + 0 = 3 ( 7 , 11 ) , ( 11 , 10 ) 4
Comme autre exemple, prenons , . On peut faire les paires pour un coût de . Les paires coûtent .Y = ( 2 , 10 , 11 , 18 ) ( 7 , 2 ) , ( 11 , 10 ) , ( 14 , 11 ) 9 ( 7 , 10 ) , ( 11 , 11 ) , ( 14 , 18 ) 7
La tâche consiste à écrire du code qui, étant donné deux tableaux triés d'entiers et , calcule une correspondance de coût minimum.Y
Cas de test
[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]]
Réponses:
Brachylog , 16 octets
Essayez-le en ligne!
Explication
Puisque nous nous unissons
I
à un entier au tout début, nous essayons des choses de petites valeurs deI
à grandes valeurs deI
, ce qui signifie que la première fois que cela réussira sera nécessairement pour l'appariement avec les plus petites différences absolues.la source
Gelée ,
15 14 1211 octetsEssayez-le en ligne!
Force brute. Prend entrée en tant que , puis .XY X
la source
L}
à la place de⁹L¤
?ÐṂḢ
->ÞḢ
pour enregistrer un octet.Haskell,
787776 octetsTIO n'en a pas
Data.Lists
, donc pas de lien.Fondamentalement, le même algorithme que celui vu dans la réponse de @ dylnan .
Edit: -1 octet grâce à @BMO.
la source
JavaScript (ES7), 121 octets
Prend les 2 tableaux dans la syntaxe de curry
(x)(y)
.Essayez-le en ligne!
la source
J , 24 octets
Essayez-le en ligne!
Explication / démonstration:
Un verbe dyadique,
x f y
-/
trouve les différences(0{]#~1>])"1
pour chaque ligne, ne gardez que les valeurs non positives et prenez la première:[:,@:
aplatit la liste (pour correspondre à la forme de l'argument de gauche)[-
soustraire le min. différences avec l'argument de gauche[,.
les assembler à l'argument de gauche:la source
Pyth , 18 octets
Essayez-le ici!
la source
Octave , 66 octets
Fonction anonyme qui prend des vecteurs de ligne
X
,Y
comme entrées et sorties d'une matrice à 2 lignes où chaque colonne est une paire de correspondance.Essayez-le en ligne!
la source
Pyth , 16 octets
Essayez-le en ligne ici ou vérifiez tous les cas de test en même temps ici .
la source
MATL , 16 octets
Les entrées sont
X
doncY
.La correspondance est sortie avec les premières valeurs de chaque paire (c'est-à-dire
X
) sur la première ligne et les secondes valeurs de chaque paire sur la deuxième ligne.Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
la source
Gelée , (10?) 12 octets
10 octets si seuls les éléments de Y sont requis (voir commentaires) - je ne sais pas encore si c'est autorisé par spec (et peut-être que cela ne devrait pas l'être car d'autres réponses implémentent déjà ce détail).
Cela peut être réalisé en supprimant le dernier
⁸ż
.Un lien dyadique acceptant X à gauche et Y à droite.
(
œc⁹L¤ạS¥ÞḢż@
et les 10 octetsœc⁹L¤ạS¥ÞḢ
font de même avec Y à gauche et X à droite).Essayez-le en ligne!
Comment?
la source
JavaScript (ES7), 100 octets
Nouveau ici; tous les conseils / corrections seraient appréciés! Une tentative précédente a négligé les complications liées au tri d'un tableau contenant une
NaN
valeur, donc j'espère que je n'ai rien manqué cette fois.Attend deux arguments comme X , Y , respectivement. Essayez-le en ligne!
Semble être similaire à la solution de @ Arnauld
Explication
S'appuie sur le fait que, étant donné que X , Y sont triés, il existe une solution de correspondances de coût minimum où si toutes les paires sont arrangées pour préserver l'ordre des éléments de X , tous les éléments Y dans l'arrangement préservent également leur ordre.
la source