Мы все часто слышим идиому «пройтись по массиву», означающую «сопоставить функцию со следующим массивом». Однако мне нужно, чтобы это было сделано (сейчас!), Поэтому я хочу, чтобы вы пробежались по массиву.
Как я бегу?
Представь, что позади тебя дикая стая волков
Пробежка по массиву похожа на пробежку по нему, за исключением того, что вы можете пропустить элементы. Да, это иногда грязно, но это (как правило) работает. «Какие элементы пропущены?», Спросите вы. Ну, это сделано наугад. Давайте пройдемся по пробежке по массиву!
- Позвольте
e
быть текущим элементом. - Пусть
random
генерирует случайное число с плавающей точкой[0,1)
. Еслиrandom() < 0.5
, тогда вы переходите к следующему элементу, а затем к шагу 1. (Вы можете сгенерировать число другими способами, при условии, что их (в идеале) равные шансы пропустить и остаться. Например, вы можете использовать выбор элемента из двух членов установить и выполнить действие в зависимости от результата.) - В противном случае вы выполняете функцию
f
наe
.
Задача
Учитывая массив / список / строку, как и любой, A
и число K
, бегите через массив, добавляя K
к каждому доступному члену. Вывести / вернуть этот массив. A
будет содержать только неотрицательные целые числа и K
всегда будет неотрицательными целыми числами. Это код-гольф , поэтому выигрывает самая короткая программа в байтах.
Контрольные примеры (примеры)
K, A => possible K'
[1, 2, 3, 4], 0 => [1, 2, 3, 4]
[1, 2, 3, 4], 1 => [1, 3, 3, 5]
[0, 0, 0, 0], 2 => [2, 0, 0, 2]
x
такое что 0 ≤ x < 1
.
[0,1)
опечатка? Еще 2, чтобы пойти ...