(мы не будем находить Findили ловить tryCatch, хотя)
Это вторая часть серии из нескольких частей реализации некоторых интересных R-функций. Часть первая можно найти здесь .
Задание:
Вы должны реализовать функцию Rmatch как можно меньше байтов.
Входные данные:
xвозможно пустой список / массив целых чиселtableвозможно пустой список / массив целых чиселnomatchодно целое значениеincomparablesвозможно пустой список / массив целых чисел
Выход:
- один массив / список целых чисел
Oравной длиныx, где каждое значениеO[i]представляет либо:- Индекс
jот первого значения вtableкоторомtable[j]==x[i] nomatch, указывая, что никакое значение вtableне равноx[i]ИЛИ, которыйx[i]находится в спискеincomparables.
- Индекс
Тестовые случаи
All in the form x, table, nomatch, incomparables -> output
outputs
[], [1,2,3], 0, [5] -> []
[1, 2, 3], [], 0, [5] -> [0, 0, 0]
[9, 4, 3, 6, 3], [9, 8, 7, 6, 5, 4, 3, 2, 1], -1, [4] -> [1, -1, 7, 4, 7]
[8, 6, 7, 5, 3, 0, 9], [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9, 3, 2, 3, 8, 4, 6, 2, 6], 1000, [1] -> [12, 8, 14, 5, 1, 1000, 6]
При необходимости можно создавать больше тестовых случаев.
Дополнительные правила:
- R имеет индексы на основе 1, но приемлемы последовательные альтернативные индексы. Таким образом, вы можете использовать индексы, которые начинаются с 3 или 17 или как угодно, но это должно быть согласовано, и вы должны указать это в своем ответе.
- Если у выбранного вами языка есть встроенная функция, которая делает это, пожалуйста, также внедрите свое собственное решение.
- Пояснения приветствуются.
Это код-гольф , поэтому выигрывает самое короткое решение в байтах!
4в incomparables, так что это не может быть сопоставлено. Если ваш язык не может поддерживать отрицательные числа, тогда можно потребовать неотрицательные числа, но укажите это предположение в своем представлении.
make.