Вхід:
Список цілих чисел (які ніколи не містять нуля)
Вихід:
Список однакового розміру з підрахунками на основі наступного:
- Якщо поточний елемент негативний: Перегляньте всі предмети перед цим елементом і підрахуйте, скільки разів цифр сталося в цих інших числах
- Якщо поточний елемент натомість позитивний: Перегляньте всі елементи після цього елемента та порахуйте, скільки разів цифра сталася в цих інших числах
Є один поворот: Якщо розмір списку є рівним, ми підраховуємо кожне число лише один раз (навіть якщо воно відповідає декільком цифрам), і якщо розмір непарний, ми підраховуємо кожну цифру чисел для кожної цифри поточного елемента (дублюється цифри підраховуються кілька разів).
Наведемо кілька прикладів, щоб це трохи уточнити:
Приклад з парним списком:
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, функції / метод із відповідними параметрами та повним програмами типу return. Твій дзвінок.
- Лазівки за замовчуванням заборонені.
- Якщо можливо, додайте посилання з тестом для вашого коду.
- Також, будь ласка, додайте пояснення, якщо це необхідно.
Тестові приклади:
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 ]
δ¢
, ніколи не бачив подвійного вектора, що використовується добре, приємний.