Рассмотрим два отсортированных массива целых чисел и Y размера m и n соответственно с m < n . Например, X = ( 1 , 4 ) , Y = ( 2 , 10 , 11 ) .
Будешь говорить , что соответствие какой - то способ спаривания каждого элемента с элементом Y таким образом , что никаких два элемента X не спарен с тем же элементом Y . Стоимость соответствия - это просто сумма абсолютных значений разностей в парах.
Например, при , Y = ( 2 , 10 , 11 ) мы можем составить пары ( 7 , 2 ) , ( 11 , 10 ), которые затем будут стоить 5 + 1 = 6 . Если бы мы сделали пары ( 7 , 10 ) , ( 11 , 11 ), стоимость была бы 3 + 0 . Если бы мы сделали пары ( 7 , 11 ) , ( 11 , 10 ), стоимость была бы 4 + 1 = 5 .
В качестве другого примера возьмем , Y = ( 2 , 10 , 11 , 18 ) . Мы можем сделать пары ( 7 , 2 ) , ( 11 , 10 ) , ( 14 , 11 ) по цене 9 . Пары ( 7 , 10 ) , ( 11 , 11 ) , стоимость 7 .
Задача состоит в том, чтобы написать код, который, учитывая два отсортированных массива целых чисел и Y , вычисляет соответствие минимальной стоимости.
Контрольные примеры
[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]]
Ответы:
Брахилог , 16 байт
Попробуйте онлайн!
объяснение
Так как мы объединяем
I
в целое число с самого начала, мы пробуем вещи от маленьких значенийI
до больших значенийI
, что означает, что первый раз, когда это удастся, обязательно будет для спаривания с наименьшими абсолютными различиями.источник
Желе ,
15 14 1211 байтПопробуйте онлайн!
Грубая сила. Принимает входные данные как затем X .Y Икс
источник
L}
работать на месте⁹L¤
?ÐṂḢ
->ÞḢ
чтобы сохранить байт.Haskell,
787776 байтовTIO не имеет
Data.Lists
, поэтому нет ссылки.В основном тот же алгоритм, что и в ответе @ dylnan .
Редактировать: -1 байт благодаря @BMO.
источник
JavaScript (ES7), 121 байт
Принимает 2 массива в синтаксисе карри
(x)(y)
.Попробуйте онлайн!
источник
J , 24 байта
Попробуйте онлайн!
Объяснение / Демонстрация:
Диадический глагол,
x f y
-/
находит различия(0{]#~1>])"1
для каждой строки оставьте только неположительные значения и возьмите первое:[:,@:
выравнивает список (чтобы соответствовать форме левого аргумента)[-
вычесть мин. Отличия от левого аргумента[,.
прошить их левым аргументом:источник
Pyth , 18 байт
Попробуй это здесь!
источник
Октава , 66 байт
Функция Anonymous , которая принимает векторы - строки
X
, вY
качестве входных данных и выводит матрицу 2-строки , где каждый столбец представляет собой пару согласования.Попробуйте онлайн!
источник
Pyth , 16 байт
Попробуйте онлайн здесь или проверьте все тестовые случаи сразу здесь .
источник
MATL , 16 байт
Входы есть
X
, тогдаY
.Сопоставление выводится с первыми значениями каждой пары (то есть
X
) в первой строке и вторыми значениями каждой пары во второй строке.Попробуйте онлайн! Или проверьте все тестовые случаи .
объяснение
источник
Желе , (10?) 12 байт
10 байтов, если требуются только элементы Y (см. Комментарии) - хотя и не уверен, что это разрешено спецификацией (и, возможно, этого не должно быть, поскольку другие ответы уже реализуют эту деталь).
Это может быть достигнуто путем удаления трейлинга
⁸ż
.Диадическая ссылка, принимающая X слева и Y справа.
(
œc⁹L¤ạS¥ÞḢż@
и 10 байтовœc⁹L¤ạS¥ÞḢ
делают то же самое с Y слева и X справа).Попробуйте онлайн!
Как?
источник
JavaScript (ES7), 100 байт
Новенький тут; любые советы / исправления будут оценены! Предыдущая попытка не учитывала сложности с сортировкой массива, содержащего
NaN
значение, так что, надеюсь, на этот раз я ничего не пропустил.Ожидает два аргумента как X , Y соответственно. Попробуйте онлайн!
Похоже на решение @ Arnauld's
объяснение
Полагается на тот факт, что с учетом сортировки X , Y существует решение совпадений минимальной стоимости, в котором, если все пары расположены так, чтобы сохранить порядок элементов X , все элементы Y в расположении также сохранят свой порядок.
источник