Вызов
Задача проста. Для данного массива и первого и последнего значения: вернуть первое из последнего после первого и последнее из первого перед последним.
Или просто: учитывая массив, var1, var2.
Пример массива:
[var2,, var1,, var2,, var2, var1, var2,]
Возвращение:
- Индекс первого var2 справа от первого var1, который появляется в массиве.
[Var2,, первый var1 ,, первый var2 , во -вторых var2, var1, var2 третий,]
- Индекс первого var1 слева от последнего var2, который появляется в массиве.
[var2,, второй var1,, var2,, var2, первый var1 , последний var2 ,]
вход
Два разных положительных целых числа
Массив натуральных чисел
Выход
Указатель ответов, по порядку
правила
Массив будет содержать как минимум одну переменную (минимальный размер 2)
Предположим, входные данные работают
Пример:
0, 1 [1, 0]
или подобное не получится
Примеры
Input
First = 2; Last = 4; [0, 2, 4, 2, 3, 1, 4, 0, 1, 2, 4, 9]
Output
2, 9
Input
First = 4; Last = 2; [0, 2, 4, 2, 3, 1, 4, 0, 1, 2, 4, 9]
Output
3, 6
Input
First = 0; Last = 1; [0, 1]
Output
1, 0
code-golf
array-manipulation
WretchedLout
источник
источник
var1
быть равнымvar2
?9, 2
,6, 3
и0, 1
соответственно (или плюс один, если выходные данные индексируются 1).Ответы:
Желе , 17 байт
Попробуйте онлайн!
источник
Python 2 , 72 байта
Попробуйте онлайн!
источник
APL (Dyalog Classic) ,
2927 байтПопробуйте онлайн!
запрашивает массив, а затем для var1, var2
источник
JavaScript (ES6), 63 байта
Попробуйте онлайн!
комментарии
Альтернативные версии
Используя встроенные JS, более простой ответ - 79 байтов:
который может быть немного сжат до 75 байт:
Попробуйте онлайн!
Редактировать : @Neil удалось уменьшить его до очень хорошего 67 байт :
Попробуйте онлайн!
источник
lastIndexOf
принимает два параметра, так что прямой ответ уменьшается до 70 байт, и мне удалось придумать следующую 67-байтовую версию:(x,y,a,f=s=>a[z=y,y=x,x=z,s+=`ndexOf`](x,a[s](y)))=>[f`i`,f`lastI`]
Python 3 ,
9793 байта-4 байта благодаря овсу
Попробуйте онлайн!
источник
a-1-b == a + (-b-1) == a + ~b
может использоваться для -1 байта, назначениеindex
функции имени получает это до 93 байтовJapt ,
272524 байтаВдохновленный в ответе @Arnauld
Спасибо @Shaggy -2 байта и @ETHproductions -1 байт
Я только начал с japt, так что это должно быть лучше. \
Попробуйте онлайн!
источник
)
для начала, чтобы сэкономить 2 байта.X=WbU)...+X
: Попробуйте онлайн! Я также изо всех сил пытаюсь найти более короткий метод, хотя ...APL (Dyalog Unicode) , 42 байта SBCS
Анонимная функция молчаливого инфикса. Принимает var1, var2 в качестве левого аргумента и массив в качестве правого аргумента.
Попробуйте онлайн!
источник
R , 81 байт
Попробуйте онлайн!
(1-индексированных)
источник
MATL , 27 байт
Попробуйте онлайн!
Поочередно для того же bytecount:
27 байт
Попробуйте онлайн!
Второй легче объяснить:
Вторая часть кода делает то же самое, за исключением следующих изменений:
2G
для второго ввода (var1) и3G
первого 3-го входа (var2) вместо неявного ввода илиi
, поскольку они были использованыPY>P
(перевернуть массив слева направо, получить кумулятивный максимум, перевернуть) вместоY>
, чтобы получить 1 с до последнего вхождения, а не после первого вхожденияf0)
чтобы получить последнее место, где оба условия выполняются, а не первое (работает, потому что MATL использует модульную индексацию, поэтому 0 используется для ссылки на последний индекс массива)источник
MATLAB (80 байт)
Ввод является
x
,y
иa
. Поскольку MATLAB индексируется 1, вы должны добавить 1 в тестовые случаи.Прецедент:
источник
Java 8, 114 байт
Лямбда, берущая a
java.util.List<Integer>
и дваint
s (var1, var2) и возвращающая пару через запятую.Попробуйте онлайн
источник
Котлин , 132 байта
Попробуйте онлайн!
источник
Юлия ,
7164 байтаспасибо Сундар и его
find(A.==x)[]
вместоfindfirst(A,x))
.,
источник
find(A.==x)[]
вместоfindfirst(A,x)
.