Входные данные:
Список целых чисел (который никогда не будет содержать ноль)
Выход:
Список того же размера с подсчетами на основе следующего:
- Если текущий элемент отрицательный: посмотрите на все элементы перед этим элементом и посчитайте, сколько раз цифры встречались в этих других числах
- Если текущий элемент положительный вместо этого: посмотрите на все элементы после этого элемента и посчитайте, сколько раз цифра встречалась в этих других числах
Есть один поворот: если размер списка четный, мы подсчитываем каждое число только один раз (даже если он совпадает с несколькими цифрами), а если размер нечетный, мы считаем каждую цифру чисел для каждой цифры текущего элемента (дублируется цифры считаются несколько раз).
Давайте приведем несколько примеров, чтобы прояснить это немного:
Пример с четным списком:
Input: [4, 10, 42, -10, -942, 8374, 728, -200]
Output: [3, 2, 4, 1, 2, 1, 1, 5 ]
Размер списка четный , поэтому мы считаем каждый номер только один раз.
4: Это позитивно, поэтому мы с нетерпением ждем. Есть три номера , содержащие цифру4(42,-942,8374). Итак, начнем с3.10: Это позитивно, поэтому мы с нетерпением ждем. Есть два числа, содержащие либо цифру,1и / или0(-10,-200). Итак, второй вывод есть2.42Снова позитив, так что вперед. Есть четыре номера , содержащие либо цифру4и / или2(-942,8374,728,-200). Итак, третий вывод4.-10На этот раз это отрицательно, поэтому мы смотрим назад. Существует только одно число, содержащее цифру1и / или0(мы игнорируем знак минус) (10). Итак, четвертый вывод1.- и т.п.
Пример с нечетным списком:
Input: [382, -82, -8, 381, 228, 28, 100, -28, -2]
Output: [13, 2, 2, 4, 8, 3, 0, 11, 6 ]
Размер списка нечетен , поэтому мы считаем каждую цифру.
382: Это позитивно, поэтому мы с нетерпением ждем. Есть одно3в других числах (381), шесть8в других числах (-82, -8, 381, 228, 28, -28) и шесть2в других числах (-82, 228, 28, -28, 2). Итак, начнем с13.-82Это отрицательно, так что задом наперед. Один3в другом номере (382) и один8в другом номере (382). Итак, второй вывод есть2.- ...
228Это позитивно, так что вперед. Есть три2'S в других числах (28,-28,-2), а еще три2-х, и два8«S в других числах (28,-28). Так что этот вывод есть8.- и т.п.
Правила вызова:
- Вы можете предположить, что вход никогда не будет содержать
0как элемент, так как он не является ни положительным, ни отрицательным. - Можно предположить, что входной список всегда будет содержать как минимум два элемента.
- Ввод / вывод является гибким. Ввод / вывод может быть массивом / списком целых чисел, строкой с разделителями, цифрой / символьной матрицей и т. Д.
- Если первое число в списке является отрицательным числом или последнее число в списке является положительным числом, оно будет 0 в результирующем списке.
- В нечетных списках числа, содержащие одну и ту же цифру несколько раз, подсчитываются несколько раз, как
228в приведенном выше нечетном примере, в результате8(3 + 3 + 2) вместо5(3 + 2).
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте найти как можно более короткий ответ для «любого» языка программирования. - К вашему ответу применяются стандартные правила , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Также, пожалуйста, добавьте объяснение, если это необходимо.
Тестовые случаи:
Input: [4, 10, 42, -10, -942, 8374, 728, -200]
Output: [3, 2, 4, 1, 2, 1, 1, 5 ]
Input: [382, -82, -8, 381, 228, 28, 100, -28, -2]
Output: [13, 2, 2, 4, 8, 3, 0, 11, 6 ]
Input: [10, -11, 12, -13, 14, -15, 16, -17, 18, -19]
Output: [9, 1, 7, 3, 5, 5, 3, 7, 1, 9 ]
Input: [10, -11, 12, -13, 14, -15, 16, -17, 18, -19, 20]
Output: [11, 2, 8, 4, 5, 6, 3, 8, 1, 10, 0 ]
Input: [88, 492, -938, 2747, 828, 84710, -29, -90, -37791]
Output: [8, 9, 3, 9, 3, 4, 5, 4, 12 ]
Input: [-1, 11, 11, 1]
Output: [0, 2, 1, 0]
Input: [1, 11, 11, -1]
Output: [3, 2, 1, 3 ]
Input: [-1, 11, 1]
Output: [0, 2, 0]
Input: [1, 11, -1]
Output: [3, 2, 3 ]
δ¢, никогда не видел, чтобы двойной вектор использовался хорошо, хороший.