Возьмите строку в качестве ввода и выполните сложение / вычитание всех цифр в строке и выведите сумму этих операций в качестве результата.
правила
- Цифры в строке читаются слева направо
- Если цифра (n) нечетная, выполните сложение со следующей цифрой (n + n1)
- Если цифра (n) четная, выполните вычитание со следующей цифрой (n - n1)
- Если вы достигли последней цифры в строке, выполните операцию с первой цифрой в строке
- Вывод будет суммой всех полученных значений
- Если в строке есть только одна цифра, выполните операцию самостоятельно (n + n или nn)
- Если в строке нет цифр, выводится 0
пример
Input: r5e6o9mm!/3708dvc
Process: (5+6) + (6-9) + (9+3) + (3+7) + (7+0) + (0-8) + (8-5)
Output: 32
Примечания
- Любая функция или полная программа принимаются
- Максимальная длина ввода будет зависеть от ограничения вашего языка для строкового ввода
- Нет ограничений на ввод символов, но только цифры полуширины учитываются при выводе
- Побеждает несколько байтов
""
,"0"
,"1"
Ответы:
Желе ,
17 1512 байтПопробуйте онлайн!
Попробуйте тестовые случаи.
Программа сохраняет только цифры, которые следуют за нечетной цифрой, а затем вычисляет в два раза больше суммы
источник
K (ок) ,
47434031 байтРешение:
Попробуйте онлайн!
Объяснение:
Удалите из строки все, что не является числом (при этом также конвертируя), по модулю 2, умножьте на 2, умножьте на x, повернутый на 1, и суммируйте.
Наивное решение:
Удалите из строки все, что не является числом (при этом также конвертируя), возьмите 2-элементное скользящее окно, выясните, являются ли они нечетными или четными, примените при необходимости сложение / вычитание, а затем суммируйте.
Попробуйте онлайн!
Примечания:
источник
x:48!x@&x in,/$!10
->x^:(x-:48)^!10
':
«скользящее окно» - интересно.Python 2 , 86 байт
Попробуйте онлайн!
источник
Perl 6 , 41 байт
Попробуйте онлайн!
Использует ту же логику, что и Jelly . Это суммирует только цифры, которые следуют за нечетным числом, а затем умножаются на 2.
источник
Powershell,
807876 байт-2 байта благодаря Нейлу с раствором Retina
-2 байта спасибо AdmBorkBork
Тестовый скрипт:
объяснение
Прежде всего: добавляется 2 * n, если предыдущая цифра нечетная, и 0, если предыдущая цифра четная.
Extra, 99 байт
Вдохновленный @Neil. Совпадающие цифры в регулярном выражении только с «предыдущей цифрой нечетной».
Matches
это автоматическая переменная .источник
|?{$_}
на-ne''
другой, перейдя$d="$args"-split'\D*'-ne''
в паренсы, как($d="$args"-split'\D*'-ne'')+$d[0]
.MATL ,
1817 байтПопробуйте онлайн!
(-1 байт благодаря Луису Мендо / Джузеппе / обоим!)
Объяснение:
Основная идея состоит в том, что числа, следующие за четными числами, можно игнорировать, тогда как числа, следующие за нечетными числами, удваиваются - и конечный результат является суммой этих удвоенных значений.
Я не думал, что
f
после проверки четностиo
будет необходимо, но по какой-то причине MATL не видит массив нулей и единиц, которые являются результатомo
логического массива, вместо этого принимает их в качестве числовых индексов и индексов в позиции1
иend
.источник
!U
вместо48-
. Транспонирование здесь, похоже, не приносит никакого вреда.o
дляdouble
ввода простоmod(...,2)
, поэтому выходdouble
. ХорошийNaN
трюк с вводом! Если это должно было решить посторонний вывод в STDOUT, у Денниса была идея, и, вероятно, это скоро исправят!U
вместо48-
o
тогда вывод логического массива - или нет? (Должен признаться, я никогда не заглядывал в систему числовых типов MATLAB.) И да, я подумал,NaN
что это будет хорошим дозором, поскольку вряд ли это будет реальный ввод где-либо, но приятно знать, что он не понадобится гораздо дольше !К (нгн / к) , 33 байта
Попробуйте онлайн!
{
}
это функция с аргументомx
!10
это список0 1 ... 9
$
преобразовать в строки,/
конкатенацияx^
значитx
без того что справаx^x^
означает, чтоx
пересекается с тем, что справа, то есть сохранить только цифры отx
-48+
вычитать48
, который является кодом ASCII"0"
x:
назначить вx
2!
мод 22*
умножить на 21_x,*x
это одна капля: сx
последующим первым изx
; т.е.x
повернут влево на один шаг+/
суммаисточник
Japt (v2.0a0),
2519 байт-6 байт благодаря Шегги .
Попробуй это здесь .
Это работает без цифр на этот раз! Ввод представляет собой список символов.
источник
x
функции, хотя. Звоните мне в чате, если у вас есть вопросы.05AB1E ,
129 байтСохраняет 1 байт по сравнению с наивным методом с помощью трюка с четностью Дилнана.
Сохранено 3 байта благодаря Mr. Xcoder
Попробуйте онлайн!
объяснение
источник
þÀIþ€ÉÏSO·
,þÀDÁ€ÉÏSO·
,þÀ¹þ€ÉÏSO·
илиþÀsþ€ÉÏSO·
пройти все тестовые случаи для -2 байт?þDÁ€ÉÏSO·
для -3 :)Сетчатка , 37 байт
Попробуйте онлайн! Объяснение:
Добавьте копию первой цифры.
Совпадение с любым, чья первая предыдущая цифра нечетная
Преобразуйте все матчи в одинарные и удвойте их. (Номера цифр рассматриваются как ноль.)
Возьми сумму. Если совпадений не было, то при необходимости получается ноль.
Лучшее, что я мог сделать в Retina 0.8.2 - 44 байта:
Попробуйте онлайн! Объяснение:
Удалить не цифры.
Добавить копию первой цифры.
Удалите цифры, которые не следуют за нечетной цифрой.
Преобразовать в одинарный.
Удвой их.
Возьми сумму.
источник
Желе , 15 байт
Попробуйте онлайн!
источник
1ịṭƊ
JavaScript (ES6), 56 байт
Принимает ввод как массив символов.
Попробуйте онлайн!
комментарии
источник
JavaScript (Node.js) ,
85848382 байта-1 байт благодаря овсу
Попробуйте онлайн!
Принимает строковый ввод, находит цифры в виде массива символов или возвращает пустой массив, если ничего не найдено, а затем использует приведение типов для обеспечения правильного добавления / вычитания значений. Прямой поиск преобразует индекс в индекс и использует краткую проверку на краткость, а затем заключительная часть проверяет, является ли число нечетным или четным, чтобы затем принудительно сложить или вычесть (+ и - есть - и т. Д.)
источник
n-0
может быть+n
R , 58 байт
Попробуйте онлайн!
источник
array
вывода.xxx
так что это 68 байтов, используя изменение индексацииa
для генерацииy
.strtoi
вместоas.double
, но да, это должно быть хорошо.Perl 5 , 48 байт
Попробуйте онлайн!
Мне очень нравится, как это выглядит загадочно, но это довольно простой цикл вокруг всех чисел в строке.
источник
Юлия 0,6 ,
7769 байтПопробуйте онлайн!
источник
C Sharp 180 байтов
Это не очень хороший гольф, лол.
Ungolfed:
источник
Stax , 14 байт
Запустите и отладьте его
Распакованный, размазанный и прокомментированный, это выглядит так.
Запустите этот
источник
JavaScript (ES6), 52 байта
Ожидается ввод в виде массива символов. Предупреждение: из-за использования сдвига битов выход имеет верхнюю границу
2^31-1
Попробуйте онлайн!
объяснение
По существу удваивает сумму цифр после нечетных значений.
источник